Está en la página 1de 24

PROGRAMACIÓN ORIENTADA A OBJETOS

UNIDAD Nº III
Herencia y Colecciones

www.iplacex.cl
SEMANA 6

INTRODUCCIÓN

La intencionalidad de este material, dice relación con proveer los conocimientos y estrategias

elementales para poder desafiar a un problema del mundo real, dispuesto a ser corregido

informáticamente. Establecer los objetos que podrían componer tal sistema. Referir con una

notación precisa el modelo a edificar y formalizar dicho modelo mediante un lenguaje de

programación.

2 www.iplacex.cl
IDEAS FUERZA
• Abstracción: En la orientación a objetos es factible partir los problemas en
subproblemas por medio de la abstracción.

• Modularización: En la orientación a objetos los elementos se pueden fraccionar


en cánones autónomos que agrupan elementos únicos extirpados del transcurso
de abstracción.

• Acoplamiento: representa el grado de problema que existe para ejecutar


reformas en la aplicación.

• Cohesión: Cuando nos referimos a un diseño de calidad, se atañe con al


número y la multiplicidad de labores de las que es garante una sola unidad de la
aplicación.

• Encapsulación: Cuando nos referimos a un diseño de calidad, uno de los


principales problemas es el uso de ámbitos públicos, por lo que los campos o
atributos nunca deben ser públicos.

3 www.iplacex.cl
Desarrollo
Organizando la Idea

Herencia y Polimorfismo

Para comprender los conceptos de herencia y polimorfismo, revisaremos primero lo


siguiente:

• Abstracción
• Modularización
• Acoplamiento
• Cohesión
• Encapsulamiento

Como vimos en la semana pasada un buen diseño orientado a objetos debe cumplir
con los diferentes conceptos de abstracción, cohesión, acoplamiento y encapsulación.

• Abstracción: En la orientación a objetos podemos dividir los problemas en


subproblemas mediante la abstracción.

• Modularización: En la orientación a objetos los elementos se pueden dividir en


módulos independientes que agrupan elementos únicos extraídos del proceso
de abstracción.

• Acoplamiento: Cuando nos referimos a un diseño de calidad, acoplamiento


representa el grado de dificultad que tenemos para realizar modificaciones en la
aplicación.

• Cohesión: Cuando nos referimos a un diseño de calidad, se relaciona con el


número y la diversidad de tareas de las que es responsable una sola unidad de
la aplicación.

4 www.iplacex.cl
• Encapsulación: Cuando nos referimos a un diseño de calidad, uno de los
principales problemas es el uso de ámbitos públicos, por lo que los campos o
atributos nunca deben ser públicos.

Uno de los temas a observar en el diseño orientado a objetos como disminuir la


dificultad de modificar, para esto hay que considerar diferentes aspectos en la
determinación de que clases, métodos y atributos realizar en la aplicación.

Encapsulamiento para reducir acoplamiento:

Responsabilidad única:

Localización de cambios:

5 www.iplacex.cl
Acoplamiento implícito:

Métodos:

Clases:

Legibilidad:

6 www.iplacex.cl
Reusabilidad:

Herencia:

En la programación se puede inferir a partir de objetos concretos una superclase


que tiene las características y comportamientos comunes de todos. La experiencia nos
indica que muchas veces cuando tenemos un conjunto de clases que nos permiten
solucionar un problema, de este conjunto de clases podemos extraer características y
comportamientos comunes que permiten conformar una superclase.

Si observamos figuras geométricas podemos encontrar ciertas similitudes, ¿Cuál crees


que serían cosas comunes entre cada figura?

7 www.iplacex.cl
Si observamos a cada figura el cuadrado tiene nombre, color, color de línea,
ancho de línea, lado, entre otras cosas, podríamos también determinar algunos
métodos como es mostrar nombre, dibujar, calcular perímetro y calcular área.

El triángulo por su parte tiene nombre, color, color de línea, ancho de línea, base
y altura, podríamos también determinar algunos métodos como es mostrar nombre,
dibujar, calcular perímetro y calcular área.

8 www.iplacex.cl
El Circulo por su parte tiene nombre, color, color de línea, ancho de línea, radio,
podríamos también determinar algunos métodos como es mostrar nombre, dibujar,
calcular perímetro y calcular área

9 www.iplacex.cl
Al observar las 3 figuras podemos notar que tienen características comunes
como lo es nombre, color, color Línea y ancho Línea.

10 www.iplacex.cl
Como también métodos comunes cuyas tareas hacen lo mismo, aunque nota
que dibujar, calcular perímetro y calcular área hacen tareas distintas en cada figura.
Acá si sabemos que el proceso que se genera de forma interna no es igual para todos,
entonces no debemos pasarlo a la superclase, pues su análisis es distinto y se abarca
de otra forma que no tiene que ver con la herencia.

Dado este análisis podemos determinar que existe un elemento más abstracto
que es la figura, que reúne las características y comportamientos comunes entre las
otras figuras Cuadrado, Triangulo y Circulo, en programación se dice que Cuadrado es

11 www.iplacex.cl
una Figura o Cuadrado es una subclase de Figura, al igual que Triangulo y Circulo.
También es común hacer un análisis léxico del diagrama y tratamos de determinar la
relación “es un tipo de”, es decir en este caso, si podemos afirmar que un círculo “es un
tipo de” figura, entonces tendremos una pista más, respecto a la calidad de nuestro
modelo.

12 www.iplacex.cl
La estructura de la clase padre es la
misma que cualquier clase tiene los
atributos, constructores y métodos.

13 www.iplacex.cl
Cuando necesitamos implementar la herencia por código lo hacemos utilizando la
palabra extends, de esta forma todo lo que habíamos definido en la superclase
(atributos, métodos y constructores) se hereda hacia la clase de nivel inferior. Recuerda
que cuando se hereda sólo se hace desde una clase, es decir no se puede
implementar herencia múltiple.

14 www.iplacex.cl
En el ejemplo anterior, la clase Cuadrado hereda toda la estructura de la superclase
Figura.

Fíjate en la imagen que sigue, a veces la clase subclase debe de invocar al constructor
de la superclase, esta invocación se hace obligatoria si la superclase contiene un
constructor que tiene parámetros. Para hacer la invocación, del constructor de la
superclase, se hace usando la palabra super(). En los dos casos que están
destacados, se invoca primero a un constructor sin parámetros y luego a un constructor
con parámetros, ambos de la superclase.

15 www.iplacex.cl
Si te fijas los atributos nombre, color,
color de línea y ancho de línea, no
tienen que repetirse en la clase
cuadrado como también el método del
padre mostrar nombre.

16 www.iplacex.cl
Polimorfismo

Para ejemplificar como es el polimorfismo, vamos a realizar unos ejercicios con


un diagrama de clases que posee polimorfismo.

Un diagrama de clases es una forma gráfica de representar la estructura de un


sistema, con orientación a objetos. De esta manera, podrás observar las clases que
tendrá el sistema, su contenido y sus relaciones con otras clases, antes de comenzar a
programarlo.

Un piano es un tipo de instrumento musical, una guitarra también es un tipo de


instrumento musical, entonces podemos decir que piano y guitarra heredan de
instrumento.

Cuando realizamos la definición de “instrumento” nos podemos encontrar con las


características básicas de él, como el largo y ancho, pero respecto a su
comportamiento como personajes que no somos expertos en música, nos encontramos
que cada instrumento tiene diferentes formas de tocar, por lo que salen diferentes
melodías de él, es por esto que el método tocar es ABSTRACTO, si lo decimos de una

17 www.iplacex.cl
manera más coloquial, ABSTRACTO sería algo que es difícil de entender porque se
encuentra en un estado de esquema, falta el código de él, pero hay otra cosa particular
que tiene, si el método es abstracto o incompleto, podemos decir que la clase también
es incompleta por lo que en JAVA se debe declarar la clase también como abstracta si
posee al menos un método abstracto.

Si esto lo observamos en el diagrama de clases de BlueJ nos encontramos que


la clase instrumento ahora dice <<abstract>>.

Recuerda ir compilando tu proyecto para que quede sin las líneas diagonales en
tu clase y puedas comprobar si tu código está bien.

18 www.iplacex.cl
Pasemos a la clase Piano, al indicarle que la clase piano hereda de instrumento,
nos aparece un error que es común cuando utilizamos alguna clase abstracta, si lo
describimos de manera simple, la clase concreta Piano tiene que completar lo que tiene
incompleto la clase instrumento, que en este caso es el método tocar.

19 www.iplacex.cl
Al agregar el código que le falta, la clase piano deja de tener errores y podemos
codificar una salida con System.out.println, para que muestre Piano tocando.

Al compilar ahora tenemos que la clase piano tiene una flecha hacia arriba cuya
punta es blanca sin completar, este símbolo representa la herencia.

20 www.iplacex.cl
De manera similar completamos el código de Guitarra.

Ahora a probar nuestros instrumentos, para hacerlo, construiremos un programa


que llamaremos AppInstrumento, aquí creamos un piano y lo asignamos al instrumento
1, creamos una guitarra y los asignamos al instrumento 2.

21 www.iplacex.cl
Podrás ver que tu diagrama queda en esta forma, luego de compilar el código.

22 www.iplacex.cl
CONCLUSIÓN
La experiencia de la Programación orientada a objetos, resulta ser muy positiva en un

paradigma de programación, pues no resulta más difícil para el estudiante, que la

programación estructurada. Esto, es posible gracias a una serie de factores

motivadores tales como que el estudiante pueda aprender un lenguaje que se emplea

en la industria, utilice una versión de herramienta profesional y logre sentirse

especialmente motivado por el propio paradigma.

23 www.iplacex.cl
24 www.iplacex.cl

También podría gustarte