0% encontró este documento útil (0 votos)
42 vistas57 páginas

Intro POO

El documento aborda los conceptos fundamentales de la Programación Orientada a Objetos (POO), incluyendo herencia, polimorfismo, encapsulamiento y abstracción. Se explican los roles de objetos, clases, métodos y atributos, así como la importancia de la modularidad y reutilización del código. Además, se presentan ejemplos prácticos que ilustran cómo aplicar estos principios en el desarrollo de software.

Cargado por

mjordan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas57 páginas

Intro POO

El documento aborda los conceptos fundamentales de la Programación Orientada a Objetos (POO), incluyendo herencia, polimorfismo, encapsulamiento y abstracción. Se explican los roles de objetos, clases, métodos y atributos, así como la importancia de la modularidad y reutilización del código. Además, se presentan ejemplos prácticos que ilustran cómo aplicar estos principios en el desarrollo de software.

Cargado por

mjordan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PROGRAMACIÓN

ORIENTADA A
OBJETOS
Objetivo: Comprender y aplicar los
conceptos fundamentales de la
Programación Orientada a Objetos,
centrándose en la herencia,
polimorfismo, encapsulamiento y
abstracción.
2
1
Conceptos Básicos de POO
Programación Orientada a Objetos
POO

Objeto Clase Métodos y Atributos

4
Objeto
Los objetos en el contexto de la programación orientada a
objetos (POO) son representaciones concretas de entidades del
mundo real, encapsulando tanto datos como comportamientos
relacionados. En esencia, un objeto puede compararse con un
"paquete" que contiene características específicas, conocidas
como atributos, y funciones, denominadas métodos. Estos
objetos se crean a partir de clases, que actúan como plantillas o
moldes para definir la estructura y comportamiento.
5
Objeto
Por ejemplo, si consideramos el concepto de un automóvil,
podríamos modelarlo como un objeto con atributos como color,
marca y modelo, y métodos como arrancar, detenerse y cambiar
de marcha. De esta manera, la programación orientada a objetos
permite organizar y modularizar el código de manera efectiva al
representar entidades del mundo real de una manera que refleje
su naturaleza y funcionalidades esenciales.
6
Clase
Las clases desempeñan un papel fundamental en la
programación orientada a objetos al proporcionar una estructura
organizativa y una plantilla para la creación de objetos. En
esencia, una clase puede entenderse como un plano o modelo
que define las propiedades y comportamientos comunes que
comparten un conjunto de objetos relacionados. Imagina una
clase como un conjunto de instrucciones detalladas sobre cómo
construir un objeto en particular.
7
Clase
Por ejemplo, si consideramos la clase "Vehículo", esta podría
contener características generales como el número de ruedas, el
tipo de motor y los métodos para acelerar o frenar. Al crear objetos
a partir de esta clase, como "Automóvil" o "Motocicleta", heredan
automáticamente las características de la clase base, pero también
pueden tener sus propios atributos y métodos exclusivos. Así, las
clases sirven como herramientas poderosas para organizar el
código de manera modular y fomentar la reutilización, facilitando la
creación eficiente y coherente de objetos dentro de un programa. 8
Métodos y Atributos
Los métodos y atributos son componentes fundamentales de los
objetos en la programación orientada a objetos, desempeñando
roles específicos en la definición y ejecución de su
comportamiento. Los atributos representan las propiedades o
características de un objeto, como su estado interno o las
características que lo distinguen.

9
Métodos y Atributos
Por ejemplo, en un objeto "Coche", los atributos podrían incluir la
marca, el modelo y el color. Los métodos, por otro lado, son
funciones asociadas al objeto que definen su comportamiento o
las acciones que puede realizar. Siguiendo con el ejemplo del
"Coche", los métodos podrían ser "arrancar", "detenerse" o
"cambiarVelocidad".

10
Métodos y Atributos
En conjunto, los atributos y métodos permiten modelar de
manera efectiva el mundo real dentro del código, encapsulando
datos y comportamientos relacionados en entidades cohesivas y
reutilizables. Esta división entre datos (atributos) y funciones
(métodos) promueve la modularidad y facilita el mantenimiento
y la expansión del código a medida que los programas
evolucionan.

11
2
Herencia
Definición
La herencia en programación orientada a objetos es un concepto
clave que permite la creación de nuevas clases basadas en
clases existentes, aprovechando y extendiendo su funcionalidad.
En términos simples, una clase derivada o subclase puede
heredar atributos y métodos de una clase base o superclase.
Este mecanismo facilita la reutilización de código y la
organización lógica de las jerarquías de objetos.
13
Definición
Por ejemplo, consideremos un escenario donde tenemos una
clase "Vehículo" con atributos como número de ruedas y método
para moverse. Al introducir una subclase "Automóvil" que hereda
de "Vehículo", podemos añadir atributos específicos como
"modelo" y "marca", mientras mantenemos las características
generales de la clase base.

14
Definición
Esto no solo simplifica el diseño del programa sino que también
promueve la coherencia y la eficiencia en el desarrollo. La
herencia permite construir relaciones jerárquicas entre clases, lo
que resulta en un código más modular y fácil de entender, ya que
las clases derivadas pueden heredar comportamientos y, si es
necesario, modificar o extender dichos comportamientos según
las necesidades específicas del contexto.

15
Ejemplo Práctico
Consideremos el ejemplo de una aplicación que gestiona una
jerarquía de empleados en una empresa. En este escenario,
podríamos tener una clase base llamada "Empleado" que
contiene atributos comunes como "nombre", "id" y "salario".
Luego, podríamos derivar clases específicas como
"EmpleadoTiempoCompleto" y "EmpleadoMedioTiempo" que
heredan de la clase base "Empleado".

16
17
18
19
Ejemplo Práctico
En este código Java, hemos definido las clases Empleado,
EmpleadoTiempoCompleto, y EmpleadoMedioTiempo,
reflejando la jerarquía de herencia. La clase
EmpleadoTiempoCompleto hereda de Empleado y agrega el
atributo bono, mientras que EmpleadoMedioTiempo también
hereda de Empleado y tiene su propio atributo horasTrabajo.
Además, hemos sobrescrito el método calcularSalarioAnual en
ambas clases derivadas para adaptarlo a sus necesidades
específicas. 20
Ventajas
La herencia en programación orientada a objetos confiere
diversas ventajas que contribuyen significativamente a la
eficiencia y mantenibilidad del código. Una de las principales
ventajas es la facilitación de la reutilización del código, ya que las
clases derivadas pueden heredar atributos y métodos de sus
clases base. Esto significa que el código bien diseñado y probado
en una clase base puede ser extendido y utilizado en clases
derivadas, evitando la redundancia y promoviendo la coherencia
en la implementación. 21
Ventajas
Además, la herencia permite la creación de jerarquías de clases,
lo que resulta en una estructura organizativa más clara y
comprensible. Las clases se pueden agrupar lógicamente según
su relación de herencia, creando una representación más
intuitiva del sistema que se está modelando. Esto no solo
simplifica el diseño y la comprensión del código, sino que
también facilita futuras expansiones y modificaciones

22
Ventajas
La jerarquía de clases permite agregar nuevas funcionalidades
mediante la introducción de clases derivadas sin afectar el
funcionamiento de las clases existentes, lo que mejora la
flexibilidad y la escalabilidad del sistema.

23
3
Polimorfismo
Definición
El polimorfismo, en el contexto de la programación orientada a
objetos, es un concepto fundamental que permite que un mismo
nombre de método o función se comporte de manera diferente
según el contexto en el que se llama. Esta capacidad brinda
flexibilidad y extensibilidad al código, ya que un objeto puede
presentar múltiples formas en tiempo de ejecución. El
polimorfismo se puede dividir en dos tipos principales: estático y
dinámico. 25
Definición
El polimorfismo estático, también conocido como sobrecarga de
método o "overloading", se refiere a la capacidad de una clase
para proporcionar múltiples métodos con el mismo nombre pero
con diferentes parámetros. La decisión sobre qué método llamar
se toma en tiempo de compilación en función de la cantidad y el
tipo de argumentos proporcionados. Esto permite que el mismo
método sea utilizado de manera más versátil, adaptándose a
diversas situaciones sin necesidad de cambiar su nombre.
26
Definición
El polimorfismo dinámico, o "override" en términos de métodos,
implica la capacidad de una subclase para proporcionar una
implementación específica de un método que ya está definido en
su clase base. En este caso, la decisión sobre qué versión del
método llamar se toma en tiempo de ejecución, según el tipo real
del objeto al que se hace referencia. Esto significa que un objeto
de la clase base puede ser tratado como un objeto de la clase
derivada, permitiendo una mayor flexibilidad y adaptabilidad en
tiempo de ejecución. 27
Ejemplo Práctico

Polimorfismo Estático (Sobrecarga de Métodos):


Supongamos que estamos desarrollando una clase llamada
Calculadora que tiene un método para sumar números.
Utilizando el polimorfismo estático, podríamos implementar
varios métodos sumar que aceptan diferentes tipos de datos
como parámetros:

28
29
Ejemplo Práctico

Polimorfismo Estático (Sobrecarga de Métodos):


En este caso, la calculadora puede adaptarse automáticamente a
diferentes tipos de datos, mejorando la flexibilidad del código sin
tener que cambiar el nombre del método.

30
Ejemplo Práctico

Polimorfismo Dinámico (Sobrecarga de Métodos):


Supongamos que tenemos una jerarquía de clases que
representan figuras geométricas, con una clase base llamada
Figura y clases derivadas como Circulo y Rectangulo. Cada clase
tiene un método calcularArea que es específico para la forma
geométrica.

31
32
33
34
3
Encapsulamiento
Definición
El encapsulamiento es un principio clave en la programación
orientada a objetos (POO) que se centra en ocultar los detalles
internos de una clase y exponer solo lo que es necesario para
interactuar con ella. Este concepto se basa en la idea de que una
clase debe ser tratada como una "caja negra" que contiene datos
(atributos) y operaciones (métodos), y los detalles internos de su
implementación deben permanecer privados para garantizar un
diseño robusto y modular.
36
Definición
En la POO, el encapsulamiento se implementa a través de la
declaración de los atributos de una clase como privados y
proporcionando métodos públicos, también conocidos como
métodos de acceso, para manipular esos atributos.

Por ejemplo, consideremos una clase CuentaBancaria:

37
38
Ejemplo Práctico
En este ejemplo, el atributo saldo está declarado como privado,
lo que significa que no puede ser accedido directamente desde
fuera de la clase. En su lugar, se proporcionan métodos públicos
getSaldo, depositar y retirar para interactuar con el saldo de la
cuenta. Esto asegura que las operaciones que afectan al saldo
sean controladas y validadas internamente, evitando
manipulaciones no deseadas.
39
Beneficios del Encapsulamiento:

El encapsulamiento no solo mejora la seguridad y la integridad


de los datos, sino que también facilita futuras modificaciones en
la implementación interna de la clase sin afectar el código que la
utiliza, promoviendo así la flexibilidad y la mantenibilidad del
código en la programación orientada a objetos.

40
4
Abstracción
Definición

La abstracción en programación orientada a objetos es un


principio que implica simplificar la representación de objetos y
procesos complejos mediante la identificación y enfatización de
los aspectos esenciales mientras se omiten los detalles no
esenciales.

42
Definición

En esencia, la abstracción permite modelar conceptos del mundo


real de una manera que capture lo fundamental sin sobrecargar
el sistema con información superflua. En la práctica, se logra
mediante la creación de clases y objetos que encapsulan datos y
comportamientos relevantes, proporcionando una interfaz clara
y distinta para su uso.

43
Ejemplo Práctico
Por ejemplo, consideremos una clase Automovil en un sistema
de gestión de flotas. En lugar de incluir todos los detalles
internos de un automóvil, como los componentes del motor o el
sistema de transmisión, la abstracción se centraría en aspectos
cruciales como la marca, el modelo y el estado del vehículo. Los
usuarios que interactúan con la clase Automovil no necesitan
conocer todos los detalles internos para utilizarla de manera
efectiva, lo que simplifica la complejidad y facilita la comprensión
y el mantenimiento del código. 44
Ejemplo Práctico

La abstracción no solo mejora la legibilidad del código, sino que


también permite a los programadores trabajar a un nivel más alto de
abstracción, enfocándose en la funcionalidad general en lugar de
preocuparse por los detalles de implementación. Esto resulta en un
código más limpio y modular, donde los objetos representan
conceptos abstractos que reflejan la estructura esencial del sistema.

45
Ejemplo Práctico

Ejemplo práctico de abstracción en el contexto de un sistema de


gestión de una biblioteca. Supongamos que estamos diseñando
clases para representar libros y usuarios de la biblioteca.

46
47
48
49
Ejemplo Práctico

En este ejemplo, la clase ArticuloBiblioteca actúa como una


abstracción que encapsula los detalles comunes de cualquier artículo
bibliotecario, como el título y el autor. La clase Libro hereda de
ArticuloBiblioteca y agrega detalles específicos para libros, como el
número de páginas.

50
Ejemplo Práctico
Cuando se trata de la gestión de la biblioteca, el sistema puede
interactuar con instancias de ArticuloBiblioteca sin preocuparse por
los detalles específicos de cada tipo de artículo. Esto facilita la
incorporación de nuevos tipos de artículos en el futuro sin modificar
el código existente y permite a los programadores trabajar a un nivel
más alto de abstracción, centrándose en la funcionalidad general del
sistema bibliotecario. La abstracción aquí permite manejar la
complejidad del sistema al proporcionar una representación
simplificada y esencial de los elementos en juego
51
5
Actividad Práctica
Ejercicio de Codificación

Imagina que estás desarrollando un sistema de gestión para un


zoológico. Debes diseñar clases que representen diferentes tipos de
animales y su interacción con el entorno del zoológico

53
Ejercicio de Codificación

❑ Imagina Abstracción y Encapsulamiento:


a. Define una clase abstracta llamada Animal que encapsule
atributos comunes a todos los animales, como nombre y edad.
b. Agrega métodos abstractos para manejar comportamientos
comunes, como comer y emitirSonido.

54
Ejercicio de Codificación

❑ Herencia:
a. Crea clases derivadas que representen tipos específicos de
animales, como Leon, Avestruz y Delfin.
b. Cada clase debe heredar de la clase Animal y proporcionar
implementaciones específicas para los métodos abstractos.

55
Ejercicio de Codificación

❑ Polimorfismo:
a. Utiliza el polimorfismo para crear un método en el zoológico
que reciba cualquier animal y muestre información general
sobre él, como su nombre, edad y el sonido que emite.
b. Realiza una demostración del polimorfismo llamando a este
método con instancias de diferentes clases de animales.

56
Ejercicio de Codificación
Sugerencias:
Puedes añadir atributos específicos para cada clase derivada, como
longitudMelena para el león o velocidadNado para el delfín.
Asegúrate de utilizar adecuadamente los conceptos de
encapsulamiento para proteger los atributos y proporcionar métodos
de acceso donde sea necesario.
Fomenta la aplicación de abstracción al identificar comportamientos
comunes en la clase base Animal y dejar que las clases derivadas
proporcionen implementaciones específicas. 57

También podría gustarte