Luis Mdendez 03

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Programación Orientada a Objetos

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:

1. Visualice el siguiente Link, sobre programación orientada a objetos.


https://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-10-11.pdf

Elabore un informe técnico acerca del tema de la herencia, sus tipos y


consideraciones de uso. Detalle con gráficos y ejemplos.

Ingeniería de Software con Inteligencia Artificial


CARACTERÍSTICAS, TIPOS,
EJEMPLOS HERENCIA EN
PROGRAMACIÓN:
La herencia en la programación orientada a objetos es una forma
de organizar los objetos en una jerarquía desde lo más general hasta
lo más específico. Es el artilugio utilizado para extender una clase en
otra clase, conservando una ejecución análoga.

En la mayoría de los lenguajes orientados a objetos basados en clases,


un objeto creado a través de la herencia, llamado objeto hijo, obtiene
todas las propiedades y comportamientos del objeto padre.

Demostración simple de herencia en la orientación a objetos. Fuente: Pluke /


CC0 Creative Commons CC0 1.0 Universal Public Domain
Por tanto, es una cualidad que representa la relación existente entre
diferentes clases. La herencia permite que una clase tenga el mismo
comportamiento que otra clase y amplíe o adapte ese comportamiento
para brindar una acción especial para necesidades específicas.

La herencia puede ayudar a representar objetos que tengan algunas


diferencias y algunas similitudes en la forma en que funcionan. Se
puede poner en una clase base toda la funcionalidad que los objetos
tengan en común, y luego definir una o más subclases con su propia
funcionalidad personalizada.
Características de la herencia
La herencia es una de las características claves de la programación
orientada a objetos, que sirve para definir una nueva clase a partir de
las clases existentes.

Es decir, se pueden derivar nuevas clases de las clases base


existentes, agregando nuevas características. No se tiene que escribir
desde cero. Por tanto, la herencia proporciona una forma de reutilizar
fácilmente el código existente.

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.

Una clase derivada hereda todos los métodos de la clase base,


exceptuando los siguientes:

– Constructores, destructores y constructores de copia de la clase


base.

– Operadores sobrecargados de la clase base.

– Funciones amigas de la clase base.

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”.

Si instructor y estudiante son del mismo tipo persona, se podrá


escribir una función que acepte como parámetro el tipo persona y que
funcione en los objetos instructor y estudiante, porque ambos son
herederos 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.

Tipos de herencia desde una clase base

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.

Los miembros privados de una superclase nunca serán asequibles


directamente desde una clase derivada, pero se podrá tener acceso a
ellos mediante llamadas que se hagan a los miembros públicos y
protegidos de la clase base.

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.

Como la clase RobotMédico es una subclase de Robot, hereda en este


caso tanto el método __init__ como say_hi. Heredar estos métodos
significa que se los podrá usar como si hubieran sido definidos en la
clase RobotMédico.

Cuando se crea una instancia de RobotMédico, la función __init__


también creará un atributo de nombre. Se podrá aplicar el método
say_hi al objeto “y” de RobotMédico, tal como se puede ver en el
resultado del código anterior.

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.

Una lista de derivación de clase en C++ nombra una o más clases


base y tiene la forma siguiente: class derived-class: access-
specifier base-class, en la que access-
specifier es public, protected o private, y base-class es el nombre de
una clase previamente definida. Si no se usa access-specifier, se
toma private por defecto.

También podría gustarte