Logo Studenta

Práctica 8 V1

¡Este material tiene más páginas!

Vista previa del material en texto

Carátula para entrega de prácticas 
 
 
Facultad de Ingeniería 
 
 
Laboratorio de docencia 
 
 
Laboratorios de computación 
salas A y B 
 
 
Profesor: Saavedra Hernández Honorato Ing. 
 
Asignatura: Programación Orientada a Objetos 
 
Grupo: 1 
 
No de Práctica(s): 8 
 
Integrante(s): 
Ayala Trejo Albanya Yendalli Téllez González Jorge Luis 
Méndez Costales Luis Enrique Villamar Cortes Juan Antonio 
Santana Sánchez María Yvette Zecua Salinas Juan Carlos 
Téllez González Jorge Luis 
Villamar Cortes Juan Antonio 
Zecua Salinas Juan Carlos 
No. de Equipo de 
cómputo empleado: --- 
 
No. de Lista o Brigada: 
 
Semestre: 2020-2 
 
Fecha de entrega: 31/03/2020 
 
Observaciones: 
 
 
 
 
 CALIFICACIÓN: __________ 
Facultad de Ingenierı́a Programación Orientada a Objetos
Índice
1. Introducción 2
2. Objetivos 3
3. Polimorfismo 3
4. Clase abstracta 7
5. Interfaces 10
5.1. Implementación múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2. Herencia múltiple entre interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.3. Atributos entre las interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1
Facultad de Ingenierı́a Programación Orientada a Objetos
1. Introducción
El concepto de Polimorfismo escribe múltiples y posibles estados de una única propiedad. En computación
(informática), es una de las propiedades fundamentales de la programación orientada a objetos y es también
una técnica utilizada por virus informáticos y gusanos para modificar partes de su código dificultando su
detección.
En programación orientada a objetos el Polimorfismo se refiere a la posibilidad de definir clases di-
ferentes que tienen métodos o atributos denominados de forma idéntica, pero que se comportan de manera
distinta. El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Ası́, nacen
los conceptos de funciones polimórficas y tipos polimórficos: las primeras son aquellas funciones que pue-
den evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su
parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.
Figura 1: Es posible definir clases que modelen a una persona, pero que modeles aspectos distintos.
El Polimorfismo se puede clasificar en dos grandes grupos:
Polimorfismo dinámico (o paramétrico): es aquel en el que no se especifica el tipo de datos sobre
el que se trabaja y, por ende, se puede recibir utilizar todo tipo de datos compatible. Este tipo de
polimorfismo también se conoce como programación genérica.
Polimorfismo estático (o ad hoc): es aquel en el que los tipos de datos que se pueden utilizar deben
ser especificados de manera explı́cita antes de ser utilizados.
2
Facultad de Ingenierı́a Programación Orientada a Objetos
2. Objetivos
Implementar el concepto de polimorfismo en un lenguaje de programación orientado a objetos.
A partir de una jerarquı́a de clases, implementar referencias que se comporten como diferentes obje-
tos.
3. Polimorfismo
Como se abordado, el Polimorfismo indica la habilidad de tener diferentes formas conceptualmente. Se
tiene que mencionar el termino IS-A, que hace alusión a la pertenencia de un objeto, es decir, si se crea un
objeto de tipo A, el objeto creado por tanto es un A.
En Java, si un objeto puede comportarse como un IS-A puede ser considerado polimórfico; por lo
anterior todos los objetos en el entorno de Java pueden ser considerados polimórficos debido a que todos
se pueden comportar como objetos de su propio tipo y como objetos de la clase Objetct.
La única manera de acceder a un objeto es a través de su referencia, por lo tanto, se deben tener en
cuenta los siguientes puntos:
Una referencia puede ser de un solo tipo y este no puede cambiarse.
Una referencia es una variable y puede ser reasignada a otros objetos.
El tipo de una referencia determina los métodos que pueden ser invocados del objeto, por lo que solo
puede ejecutar los métodos definidos en el tipo de referencia.
Una referencia se le puede asignar cualquier objeto que sea del mismo tipo con el que se declaró la
referencia (polimorfismo).
Para esta práctica se utilizará el ejemplo presentado en la guı́a del laboratorio, con el fin de visualizar
mejor el tema desarrollado en el presente reporte. Además, se colocarán las capturas pertinentes del proyecto
creado en NetBeans con el código propuesto.
3
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 2: Diagrama UML de las clases a modelar en el ejemplo.
A continuación, se tiene el contenido del método principal; lo que finalmente servirá de menú de
control para ejecutar e imprimir los objetos deseados.
Figura 3: Método principal. Introduce una impresión de las figuras creadas.
4
Facultad de Ingenierı́a Programación Orientada a Objetos
A continuación, se muestran capturas de pantalla de las clases módeladas a partir de la herencia de
la clase Poligono:
Figura 4: Clase principal Poligono.
Figura 5: Clase hija Triangulo.
5
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 6: Clase hija Cuadrilatero.
Cuando el parámetro definido es una referencia a una clase, el método es capaz de recibir un objeto
de ese tipo: esto se le conoce también como polimorfismo en métodos. Un código que expresa mejor un
método polimórfico es el siguiente:
Figura 7: Polimorfismo sobre métodos.
6
Facultad de Ingenierı́a Programación Orientada a Objetos
La ejecución de este método es la siguiente:
Figura 8: Ejecución del código anterior.
4. Clase abstracta
Una clase abstracta es aquella que implementa una idea o noción sobre un determinado objeto a modelar y
declara sus métodos, sin llegar a implementarlos. Una restricción de Java sobre los métodos no implemen-
tados consiste en que, si se realiza una declaración de un método abstracto sobre una clase, esta clase debe
ser necesariamente abstracta. Su sintáxis es de la forma:
Figura 9: Sintáxis de declaración de clases abstractas.
Si una clase hereda de una clase abstracta, debe de implementar los métodos definidos en la clase
padre. Por otra parte, las clases abstractas no pueden ser instanciadas, es decir, no permiten construir objetos
de tal clase.
Figura 10: Sintáxis de declaración de clases abstractas.
Por otra parte, las referencias abstractas pueden contener objetos concretos que hayan hererado de
la clase abstracta.
7
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 11: Creación de un objeto de tipo Triangulo, que hereda de la clase abstracta Poligono.
A continuación, se transcribe el código proporcionado que implementa a la clase abstracta Poligono
y las clases Cuadrilatero y Triangulo, que heredan de la clase abstracta.
Figura 12: Clase abstracta Poligono.
Figura 13: Clase Cuadrilatero.
8
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 14: Clase Triángulo.
Figura 15: Método principal del programa.
Al realizar la ejecución del programa, se obtiene la siguiente salida:
Figura 16: Salida obtenida..
9
Facultad de Ingenierı́a Programación Orientada a Objetos
5. Interfaces
Una interfaz es muy similar a una clase abstracta, en la cual se pueden especificar uno o más métodos que
no tienen cuerpo, es decir, una clase donde todos los métodos son abstractos (no se implementan). Una
interfaz especifica lo que se debe hacer, pero no cómo hacerlo, por tanto, no es posible crear instancias de
una interfaz.
Para las interfaces, se utiliza la palabra reservada interface en lugar de class. Se puede definir
pública o sin modificar de acceso, ya que los modificadores tienen la misma utilidad que en las clases. Su
sintaxis es la siguiente:
Figura 17: El voltaje es el mismopara cada uno de los capacitores en paralelo..
La forma general de una interfaz tiene la siguientes particularidad: los métodos se declaran utili-
zando solo su tipo de devolución y firma, por lo cual, son métodos abstractos y públicos. Las variables
declaradas en la interfaz no son variables de instancias. En cambio, son implı́citamente public, static, o
final, y deben de inicializarse.
Una vez creada, una o más clases pueden implementar dicha interfaz. Para implementar una interfaz
se utiliza la palabra reservada implements. La clase que implementa la interfaz tiene la obligación de de-
finir los métodos que la interfaz declaró. Los métodos que implementan una interfaz deben ser declarados
públicos. Su sintaxis es la siguiente:
Figura 18: Sintáxis de implementación de una interfaz sobre una clase.
A continuación. se muestra un ejemplo de una interfaz de instrumentos musicales. Posteriormente,
se crea una clase que implementa dicha interfaz para, finalmente, instanciar la clase y escribir en pantalla
una mensaje de estado del objeto creado.
10
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 19: Ejemplo de una interfaz de instrumentos. La clase InstrumentoViento implementa la interfaz.
Figura 20: Salida obtenida con el ejemplo anterior.
11
Facultad de Ingenierı́a Programación Orientada a Objetos
5.1. Implementación múltiple
Una clase puede llegar a implementar una o más interfaces, el único inconveniente es que dentro de la clase
se debe Implementar todos y cada uno de los métodos de las interfaces. Cabe señalar que el orden de la
implementación no es relevante para tal propósito. Su sintaxis es la siguiente:
Figura 21: Ejemplo.
5.2. Herencia múltiple entre interfaces
Las interfaces pueden llegar a heredar de otras interfaces, y a diferencias de las clases, una interfaz puede
heredar de una o muchas más interfaces, por lo cual si existe la herencia múltiple entre las interfaces y Se
Aplican las mismas reglas que en la herencia. Su sintaxis es la siguiente:
Figura 22: Sintáxis de herencia múltiple entre interfaces.
5.3. Atributos entre las interfaces
En una interfaz, todos los atributos que se encuentren dentro de ella deben de ser públicos, estáticos y
finales. Esta caracterı́stica puede llegar a ser muy útil en muchos casos. El siguiente ejemplo implementa
una interfaz de Meses del año que permite recuperar datos asociados al número del mes y su nombre:
12
Facultad de Ingenierı́a Programación Orientada a Objetos
Figura 23: Atributos de una interfaz manipulados en un método principal de ejecución.
Figura 24: Salida obtenida con el ejemplo anterior.
5.4. Conclusiones
Durante el desarrollo de la práctica, nos dimos cuenta de la importancia que tiene el uso del polimorfismo
en la programación orientada a objeto, además del correcto uso de las interfaces y las clases abstractas.
Aunque al principio costó un poco entender cómo funcionaban, ya que su implementación es distinta
a la que estamos acostumbrados con las clases normales, finalmente empleando conocimientos de prácticas
pasadas entendimos el porque estas son distintas y el cómo poder implementarlas para agilizar el proceso
de programación.
13
Facultad de Ingenierı́a Programación Orientada a Objetos
Referencias
[1] Polimorfismo. Recuperado de: http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/
poo_p8.pdf. Fecha de consulta: 28/03/2020.
Los créditos de las fotografı́as pertenecen a sus respectivos autores. c©
LATEX
14
http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/poo_p8.pdf
http://lcp02.fi-b.unam.mx/static/docs/PRACTICAS_POO/poo_p8.pdf

Continuar navegando