Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Definiciones
Herencia: es el mecanismo que permite definir una clase de objetos tomando
como base la definición de otra clase. En donde la clase Base es la clase de partida
mientras la clase derivada es la clase que hereda las características y
comportamiento de la clase base
Tipos:
Simple: Cuando la clase Derivada hereda de una sola clase Base.
Múltiple: Cuando la clase Derivada hereda de varias clase Base.
Ventajas:
Recoge los aspectos comunes de dos o mas clases.
Reutilización de código.
Mientras mas se profundice en el mecanismo de herencia mas
especializada será la clase resultante, lo que da lugar a una jerarquía de
clases.
Para invocar un método de la clase base que tiene en la clase derivada un método con
el mismo nombre: super.IdMetodo (parametros);
Conversión de objetos de la clase derivada y la clase base
Al declarar una clase como derivada de otra clase, los objetos de la clase
derivada son a su vez objetos de la clase base. Un lenguaje que soporte
la programación orientada a objetos hace una conversión automática de
una referencia de clase derivada a referencia a clase base. Es decir que
con una referencia de la clase base podemos referenciar objetos de la
clase derivada, lo contrario no es posible.
Dado que una variable puede estar asociada a objetos de diferentes tipos,
distinguiremos entre:
El tipo estático de una variable, es el tipo que aparece en la declaración
El tipo dinámico de una variable es la clase a la que pertenece el objeto
referenciado
El tipo estático lo determina el compilador, el tipo dinámico se establece en
tiempo de ejecución.
Ligadura Dinámica de código
La ligadura dinámica es la vinculación entiempo de ejecución de un mensaje con
un método. Esto es, cuando un método definido en una clase, queda redefinido
en una clase derivada, el tipo dinámico de la variable determina qué método va
a ejecutarse en respuesta a un mensaje.
El tipo estático de la variable determina los mensajes que un objeto puede
recibir, pero el tipo dinámico determina la implementación específica del
comportamiento que se ejecuta en respuesta a los mensajes. Es decir, el
compilador chequea la validez de un mensaje considerando el tipo estático de la
variable. En ejecución, el mensaje se liga con el método, considerando el tipo
dinámico.
Si una clase hereda de una clase abstracta y no implementa todos los métodos
abstractos, también debe ser definida como abstracta. El constructor de una clase
abstracta sólo va a ser invocado desde los constructores de las clases derivadas. Una
clase concreta debe implementar todos los métodos abstractos de sus clases
abstractas.
Escenario: Figuras 3D
En un archivo llamado “Figuras.txt” se almaceno
la siguiente información:
Tipo de figura (1: Esfera, 2: Cilindro) y la(s)
dimensión(es) de la figura
En el proyecto creado procesar la información
anterior con los siguientes requerimientos
mínimos:
Crear en un paquete llamado Geometría las
siguientes clases:
Una clase llamada Círculo, la cual tendrá como atributo protegido el
radio del círculo, con los siguientes métodos: un constructor que
recibirá como argumento el radio del círculo, un método que muestre el
atributo de la clase, uno que calcule el área y otro que calcule el
volumen.
Derivar de Círculo la clase Esfera, con los métodos correspondientes.
Derivar de Circulo Cilindro, la cual tendrá como atributo privado la
altura del cilindro, con los métodos correspondientes.
Una clase llamada Apoyo en la cual definirá los métodos siguientes:
Que determine la cantidad de registros que hay en el archivo “Figuras.txt”.
Que lea el contenido del archivo “Figuras.txt” y lo almacene en un arreglo
del tipo Círculo el cual será pasado como parámetro al método.
Que muestre en contenido del arreglo de tipo círculo en el cual se almaceno
la información del archivo “Figuras.txt”.
Que muestre por consola el menú de opciones tal como se muestra en la
figura y retorne un valor entero con la opción seleccionada.
Crear la clase Principal con el método main( ) en el cual se declararan las
variables y arreglos, y se invocaran los métodos definidos en la clase Apoyo.