viernes, 8 de octubre de 2010

Semana 3 - Herencia y Polimorfismo

Herencia

Una característica clave en la programación orientada a objetos es la reutilización de software, ya que esto es muy útil, porque si se pudiera reutilizar algo de software que ya existe, que fue probado, depurado y utilizado muchas veces, nos ahorraríamos tiempo y esfuerzo para desarrollar y probar de nuevo.

La herencia es cuando una clase (subclase) se deriva de otra (superclase), de manera que extiende su funcionalidad.

Una subclase hereda todos los miembros (campos, métodos y clases anidadas) de su superclase, como por ejemplo:



Si tenemos una clase Vehículo, esta es una superclase, ya que hereda 2 subclases y además contiene 3 campos. Las subclases Automóvil y Camión heredan a Vehículo, quiere decir que estas también tendrán los 3 campos de Vehículo y además sus campos propios.


Fuentes:

Me apoyé en tutoriales Java para la consulta de la definición herencia:

En este link, se explica otro ejemplo utilizando bibicletas, que también está entendible:

(Imagen) Con este ejemplo me quedó más clara la definición de herencia:



Polimorfismo

Es la capacidad de que una acción o método realice diferentes cosas en el objeto del que está actuando. Es decir, que varias subclases utilicen un mismo método pero de forma distinta.

Por ejemplo:




En la figura anterior se tiene la clase FiguraGeo en donde se tienen las funciones de Área y Perímetro. Las clases Triángulo, Círculo y Cuadrado, heredan de la clase FiguraGeo sus métodos. Y en la clase Main es donde se calcula el área y perímetro según la figura que corresponda, y es aquí en donde se aplica el polimorfismo, ya que se está utilizando el método CalculaAP de manera distinta según la subclase que la utilice.


Fuentes:

Al igual que en la herencia, en el polimorfismo me auxilié de tutoriales Java, en :

En este link, se continúa el ejemplo de las bicicletas pero con el polimorfismo:

(Imagen) Con este ejemplo me quedó más clara la definición de polimorfismo:



VIDEOS

Este video explica de manera muy básica las definiciones de herencia y polimorfismo utilizando ejemplos básicos como animales, figuras geométricas y autos.




En este otro video explican herencia y polimorfismo en Python 3:





________________________________________



Herencia y Polimorfismo aplicado al tema de reservaciones y vuelos en una aerolínea



*** HERENCIA ***

Superclase:
  • Tripulación

Subclases:
  • Capitan
  • Auxiliar_de_vuelo
  • Sobrecargo



* TRIPULACION

Atributos:
Métodos:

·          idCrew
·          Nombre
·          ApellidoPaterno
·          ApellidoMaterno
·          Dirección
·          Teléfono
·          RFC
·          Alta de tripulación
·          Baja de tripulación
·          Modificación de tripulación

* CAPITAN

Atributos:
Métodos:

  TRIPULACION
·          Licencia


* AUXILIAR_DE_VUELO

Atributos:
Métodos:

  TRIPULACION
·          Licencia
·          Categoria (copiloto o auxiliar)


* SOBRECARGO

Atributos:
Métodos:

  TRIPULACION
·          Categoria




*** POLIMORFISMO ***

Al dar de alta a un capitán, un auxiliar de vuelo o un sobrecargo, se utilizan los mismos métodos pero con parámetros diferentes:

AltaCapitan(idCrew, Licencia)
AltaAuxiliar(idCrew, Licencia, Categoria)
AltaSobrecargo(idCrew, Categoria)

...


4 comentarios:

  1. Aun no publico lo referente a Herencia y Polimorfismo por tener pendiente las clases, atributos y métodos del sistema de reservaciones y vuelos.

    Espero el comentario de la Dra. Elisa para avanzar y no continuar incorrectamente.

    ResponderEliminar
  2. Pues, ya :) Te pongo tres puntos ahora y los otros dos una vez que apliques en el tema ese. Avísame si subes algo y no comento en ello.

    ResponderEliminar
  3. Profe,

    Aquí lo que modifiqué fueron los videos, los inserté.

    También agregué lo de herencia y polimorfismo ya aplicado al sistema de reservaciones de vuelos. Agregué y modifiqué unas clases para aplicar estos conceptos.

    Las clases de ORIGEN y DESTINO son muy parecidas y también quería aplicar lo de herencia y polimorfismo a ellas. No se que opine.

    Saludos!

    ResponderEliminar
  4. Creo que la diferencia entre origen y destino es simplemente el papel que juega - deberían ser instancias de una sola clase según mi razonamiento. Te puse tus dos puntos faltantes y un punto extra.

    ResponderEliminar