Luis Mdendez 03
Luis Mdendez 03
Luis Mdendez 03
PIAD-311
PROGRAMACIÓN
ORIENTADA A OBJETOS
Ingeniería de Software
con Inteligencia Artificial
Semestre III
TAREA N°3
Trabajar con herencias y composición
Con ayuda de la información del manual y la información presentada en las direcciones
web, realizar las siguientes actividades:
Si ya se tiene una clase que haga casi todo lo que se quiere, se podrá
crear una subclase en la que se anule parcialmente parte de su
comportamiento, o quizás se agregue alguna funcionalidad nueva.
Jerarquía
Tal como lo hace un árbol genealógico, la herencia sirve para
conformar una jerarquía de clases. Resulta importante destacar que
los atributos determinados para una clase base estarán presentes de
forma automática en la clase derivada. Además, los métodos para la
clase base funcionarán para las derivadas.
Se dice que una clase será subclase de la clase de la que hereda. Por
otro lado, esta clase será su superclase. Se puede referir a la clase
más genérica como clase base, por encontrarse en la base de la
jerarquía.
Polimorfismo
La herencia es muy popular en algunos lenguajes con tipos estáticos,
porque permite que el programador evite algunas de las restricciones
del tipo estático.
Un objeto que hereda de otro objeto se considera un subtipo de ese
objeto. Un ejemplo podría ser los objetos “instructor” y “estudiante”,
cada uno de los cuales hereda de “persona”.
Tipos de herencia
Herencia única
Cuando una clase derivada hereda las propiedades y el
comportamiento de una sola clase base. Es decir, una clase se
extiende a otra única clase.
Herencia multinivel
Se refiere al artilugio donde se puede heredar de una clase derivada,
haciendo que esta clase derivada sea la clase base para una nueva
clase. Es decir, resulta cuando se crea una clase derivada a partir de
otra clase derivada.
Herencia jerárquica
En esta herencia, muchas subclases heredan de una sola clase. Es
decir, sucede cuando una sola clase base es heredada por más de una
clase derivada.
Herencia híbrida
Es la herencia resultante cuando se combinan cualesquiera de las tres
herencias anteriores (única, jerárquica y multinivel).
Herencia múltiple
Corresponde a la figura de herencia cuando una clase hereda de más
de una superclase. El inconveniente existente con este tipo de
herencia es que la clase derivada tendrá que tramitar la dependencia
que tiene con dos clases base.
Por otro lado, este tipo de herencia permite que los programadores
puedan erigir clases que combinen los aspectos de múltiples clases y
de sus correspondientes jerarquías.
Herencia pública
Cuando se deriva una clase desde una clase base pública, los
miembros públicos de la clase base se convierten en miembros
públicos de la clase derivada y los miembros protegidos de la clase
base se convierten en miembros protegidos de la clase derivada.
Herencia protegida
Cuando se crea una clase que hereda desde una superclase protegida,
tanto los miembros públicos como los protegidos de esta superclase se
convertirán en miembros protegidos de la clase derivada.
Herencia privada
Al crearse una subclase a partir de una superclase privada, los
miembros que son públicos y protegidos de esta superclase se
convertirán en miembros privados de la subclase.
Ejemplos
Ejemplo en Python
Para mostrar cómo funciona el principio de herencia se tomarán unos
robots o una mejor clase de robots en el lenguaje de programación
Python. Para ello se especificará una clase llamada RobotMédico
(PhysicianRobot), que se deriva de la superclase Robot.
Si se observa el código de la clase RobotMédico, se podrá apreciar que
en esta clase no se ha definido ningún atributo o método.
Ejemplo en C++
Una clase puede heredar de más de una clase, lo que quiere decir que
puede heredar datos y funciones de varias superclases. Para definir
una clase derivada, se utiliza una lista de derivación de clase para
especificar las clases base.