Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
46 vistas10 páginas

Actividad 02 - U3 - Resumen

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 10

INSTITUTO TECNOLOGICO SUPERIOR DE TAMAZUNCHALE,

S.L.P

INGENIERIA EN SISTEMAS COMPUTACIONALES

MATERIA:

PROGRAMACION ORIENTADA A OBJETOS

FACILITADOR:

ING. LUIGI ALAN CRUZ PONCE

TEMA:

RESUMEN DE HERENCIA

ALUMNO:

GUSTAVO RUBIO RAFAEL………………………..21ISCO78

SEMESTRE:2 TURNO: MATUTINO 2

FECHA: 11/04/2022
3.1 DEFINICIÒN:

CLASE BASE

Se conoce como clase base a una clase que va a heredar sus propiedades (variables)
y funcionalidades (métodos) a otras clases.

EJEMPLO

Vamos a poner un ejemplo del segundo tipo, que simule la utilización de librerías de
clases para crear un interfaz gráfico de usuario como Windows 3.1 o Windows 95.

Supongamos que tenemos una clase que describe la conducta de una ventana muy
simple, aquella que no dispone de título en la parte superior, por tanto, no puede
desplazarse, pero si cambiar de tamaño actuando con el ratón en los bordes derecho e
inferior.

La clase Ventana tendrá los siguientes miembros dato: la posición x e y de la ventana,


de su esquina superior izquierda y las dimensiones de la ventana: ancho y alto.

package ventana;

public class Ventana {


protected int x;
protected int y;
protected int ancho;
protected int alto;

public Ventana(int x, int y, int ancho, int alto) {


this.x=x;
this.y=y;
this.ancho=ancho;
this.alto=alto;
}

public void mostrar(){


System.out.println("posición : x="+x+", y="+y);
System.out.println("dimensiones : w="+ancho+", h="+alto);
}
public void cambiarDimensiones(int dw, int dh){
ancho+=dw;
alto+=dh;
}
}

CLASE DERIVADA

Se conoce como clase derivada a una clase que se implementa mediante la


reutilización de las propiedades y funcionalidades que se heredan de una (o varias)
clase base.

EJEMPLO

Incrementamos la funcionalidad de la clase Ventana definiendo una clase derivada


denominada VentanaTitulo. Los objetos de dicha clase tendrán todas las características
de los objetos de la clase base, pero además tendrán un título, y se podrán desplazar
(se simula el desplazamiento de una ventana con el ratón).

La clase derivada heredará los miembros dato de la clase base y las funciones
miembro, y tendrá un miembro dato más, el título de la ventana.
public class VentanaTitulo extends Ventana{

protected String titulo;

public VentanaTitulo(int x, int y, int w, int h, String nombre)

super (x, y, w, h);

titulo=nombre;

3.2 CLASIFICACIÒN:

HERENCIA SIMPLE

La herencia simple es una relación entre una clase padre (clase base) y una clase hija
(clase derivada) llamada "es un tipo de", que muchas veces se abrevia como isA. La
herencia es simple cuando la clase derivada que estamos considerando sólo tiene una
clase base.

HERENCIA MÙLTIPLE

La herencia múltiple se encuentra en aquellos casos en los que una clase derivada
tiene varias clases base (al menos, más de una).
3.3 REUTILIZACIÒN DE MIEMBROS HEREDADOS

La reutilización de código se refiere al comportamiento y a las técnicas que garantizan


que una parte o la totalidad de un programa informático existente se pueda emplear en
la construcción de otro programa. De esta forma se aprovecha el trabajo anterior, se
economiza tiempo, y se reduce la redundancia.

La manera más fácil de reutilizar código es copiarlo total o parcialmente desde el


programa antiguo al programa en desarrollo. Pero es trabajoso mantener múltiples
copias del mismo código, por lo que en general se elimina la redundancia dejando el
código reusable en un único lugar, y llamándolo desde los diferentes programas. Este
proceso se conoce como abstracción.

La clase descendiente puede añadir sus propios atributos y métodos, pero también
puede sustituir u ocultar los heredados. En concreto:

1. Se puede declarar un nuevo atributo con el mismo identificador que uno heredado,
quedando este atributo oculto. Esta técnica no es recomendable.

2. Se puede declarar un nuevo método de instancia con la misma cabecera que el de la


clase ascendiente, lo que supone su sobreescritura. Por lo tanto, la sobreescritura o
redefinición consiste en que métodos adicionales declarados en la clase descendiente
con el mismo nombre, tipo de dato devuelto y número y tipo de parámetros sustituyen a
los heredados.

3. Se puede declarar un nuevo método de clase con la misma cabecera que el de la


clase ascendiente, lo que hace que éste quede oculto. Por lo tanto, los métodos de
clase o estáticos (declarados como static) no pueden ser redefinidos.

4. Un método declarado con el modificador final tampoco puede ser redefinido por una
clase derivada.

5. Se puede declarar un constructor de la subclase que llame al de la superclase de


forma implícita o de mediante la palabra reservada super.
6. En general puede accederse a los métodos de la clase ascendiente que han sido
redefinidos empleando la palabra reservada super delante del identificador del método.
Este mecanismo sólo permite acceder al método perteneciente a la clase en el nivel
inmediatamente superior de la jerarquía de clases.

3.4 REFERENCIA AL OBJETO DE LA CLASE BASE

La jerarquía de clases que describen las figuras planas

Consideremos las figuras planas cerradas como el rectángulo, y el círculo. Tales


figuras comparten características comunes como es la posición de la figura, de su
centro, y el área de la figura, aunque el procedimiento para calcular dicha área sea
completamente distinto. Podemos por tanto, diseñar una jerarquía de clases, tal que la
clase base denominada Figura, tenga las características comunes y cada clase
derivada las específicas. La relación jerárquica se muestra en la figura.

La clase Figura es la que contiene las características comunes a dichas figuras


concretas por tanto, no tiene forma ni tiene área. Esto lo expresamos declarando Figura
como una clase abstracta, declarando la función miembro area abstract.

Las clases abstractas solamente se pueden usar como clases base para otras clases.
No se pueden crear objetos pertenecientes a una clase abstracta. Sin embargo, se
pueden declarar variables de dichas clases.

3.5 CONSTRUCTORES EN CLASES DERIVADAS

Al instanciar objetos de clases derivadas se inicia una cadena de invocaciones a


constructores en las cuales el constructor de la clase derivada, antes de realizar sus
propias tareas, invoca (ya sea implícita o explícitamente) al constructor de su clase
base. Similarmente, si la clase base fue derivada de otra clase, el constructor de la
clase base debe invocar al constructor de la clase ubicada en el siguiente nivel superior
de la jerarquía, y así sucesivamente. El último constructor invocado en la cadena es el
constructor de la clase Object, cuyo cuerpo se ejecuta primero. El cuerpo del
constructor de la clase derivada se ejecuta al final. El constructor de cada clase base
inicializa las variables de instancia que el objeto de la clase derivada hereda.

DESTRUCTORES EN CLASES DERIVADAS

Cuando remueve de la memoria un objeto de una clase derivada, el recolector de


basura invoca al destructor del objeto. Esto inicia una cadena de invocaciones a
destructores, en donde el destructor de la clase derivada y los destructores de las
clases bases directas e indirectas se ejecutan en orden inverso al que se ejecutaron los
constructores, esto es, primero se ejecuta el destructor de la clase derivada y al final se
ejecuta el destructor de la clase base ubicada en el nivel superior de la jerarquía. La
ejecución de los destructores debe liberar todos los recursos que el objeto adquirió,
antes de que el recolector de basura reclame la memoria de ese objeto. Cuando el
recolector de basura invoca al destructor de un objeto de una clase derivada, ese
destructor realiza su tarea y después invoca al destructor de la clase base. El proceso
se repite hasta que se invoca al destructor de la clase Object.

EJEMPLO:

// Destruct Derivadas?.cs : Destructores en clases derivadas. using

C = System.Console;

class Animal {

Animal( ) {

C.Write Line?(“Muere mi parte Animal …”);

}}

class Mamífero : Animal {


Mamífero( ){

C.Write Line(“Muere mi parte Mamífero …”);

}}

class Perro : Mamífero {

Perro( ) {

C.Write Line(“Muere mi parte Perro …”);

}}

public class Principal {

static void Main( ) {

Perro Fido = new Perro ( );

}}

3.6 REDEFINICIÒN DE MÈTODOS EN CLASES DERIVADAS

El lenguaje java permite redefinir miembros de la clase base en las clases

derivadas, pero el compilador emite una advertencia cuando detecta una

redefinición. Una advertencia (warning) es un mensaje del compilador

acerca de un posible problema. Sin embargo, en este caso sí se genera

código ejecutable (a diferencia del mensaje de error). Redefinición de

campos. El siguiente ejemplo muestra cómo reutilizar los identificadores de

los campos de la clase base en una clase derivada.

EJEMPLO DE REDEFINICIÓN DE LAS CLASES DERIVADAS


// Redef.cs : Ejemplifica la redefinición de campos en clases
derivadas.
class Punto{
public int x;
public int y;
}
class Punto3D : Punto{
public int x ;

public int y ;

public int z ;
}
class Principal{
public static void Main( ) {
Punto a = new Punto( ); Punto3D b = new Punto3D( );
a.x = 100 ;
a.y = 200 ;
b.x = 300 ;

b.y = 400 ;

b.z = 500 ;
}
}
BIBLIOGRAFÍA

programacionorientada. (s.f.). Recuperado el 11 de 04 de 2022, de

programacionorientada:

https://sites.google.com/site/wwwprogramacionorientadacom/33-reutilizacion-de-

miembros-heredados

Quevedo, I. H. (25 de 02 de 2012). p-o-o-itsav. Recuperado el 11 de 04 de 2022, de p-

o-o-itsav: http://p-o-o-itsav.blogspot.com/2012/02/32-clasificacion-herencia-

simple-y.html

También podría gustarte