PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. ·...

21
www.iplacex.cl PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones

Transcript of PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. ·...

Page 1: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl

PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III

Herencia y Colecciones

Page 2: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 2

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.

SEMANA 6

Page 3: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 3

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.

Page 4: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 4

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.

Page 5: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 5

• 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:

Page 6: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 6

Acoplamiento implícito:

Métodos:

Clases:

Legibilidad:

Page 7: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 7

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?

Page 8: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 8

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.

Page 9: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 9

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

Al observar las 3 figuras podemos notar que tienen características comunes como lo es

nombre, color, color Línea y ancho Línea.

Page 10: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 10

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 una

Figura o Cuadrado es una subclase de Figura, al igual que Triangulo y Circulo.

Page 11: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 11

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.

La estructura de la clase padre es la misma que

cualquier clase tiene los atributos, constructores y

métodos.

Page 12: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 12

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.

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.

Page 13: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 13

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.

Page 14: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 14

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.

Page 15: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 15

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

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.

Page 16: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 16

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.

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.

Page 17: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 17

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.

Page 18: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 18

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.

Page 19: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 19

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

Page 20: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 20

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.

Page 21: PROGRAMACIÓN ORIENTADA A OBJETOScursos.iplacex.cl/CED/POO2008/S6/ME_6.pdf · 2020. 5. 28. · PROGRAMACIÓN ORIENTADA A OBJETOS UNIDAD Nº III Herencia y Colecciones . 2 ... 1, creamos

www.iplacex.cl 21