Sei sulla pagina 1di 4

Daniel Martnez Romero Ing. Sistemas Computacionales Concepto Herencia.

12590072

En orientacin a objetos la herencia es, despus de la agregacin o composicin, el mecanismo ms utilizado para alcanzar algunos de los objetivos ms preciados en el desarrollo de software como lo son la reutilizacin y la extensibilidad. A travs de ella los diseadores pueden crear nuevas clases partiendo de una clase o de una jerarqua de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseo, la modificacin y verificacin de la parte ya implementada. La herencia facilita la creacin de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (mtodos) y eventualmente los atributos (variables) de su superclase. Es la relacin entre una clase general y otra clase ms especifica. Por ejemplo: Si declaramos una clase prrafo derivada de una clase texto, todos los mtodos y variables asociadas con la clase texto, son automticamente heredados por la subclase prrafo. La herencia es uno de los mecanismos de los lenguajes de programacin orientada a objetos basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programacin). En los lenguajes que cuentan con un sistema de tipos fuerte y estrictamente restrictivo con el tipo de datos de las variables, la herencia suele ser un requisito fundamental para poder emplear el Polimorfismo, al igual que un mecanismo que permita decidir en tiempo de ejecucin qu mtodo debe invocarse en respuesta a la recepcin de un mensaje, conocido como enlace tardo (late binding) o enlace dinmico (dynamic binding)

Concepto de Polimorfismo. En programacin orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterognea. El nico requisito que deben cumplir los objetos que se utilizan de manera polimrfica es saber responder al mensaje que se les enva. La apariencia del cdigo puede ser muy diferente dependiendo del lenguaje que se utilice, ms all de las obvias diferencias sintcticas. Por ejemplo, en un lenguaje de programacin que cuenta con un sistema de tipos dinmico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimrfico sean parte de una jerarqua de clases. En lenguajes basados en clases y con un sistema de tipos de datos fuerte (independientemente de si la verificacin se realiza en tiempo de compilacin o de ejecucin), es posible que el nico modo de poder utilizar objetos de manera polimrfica sea que compartan una raz comn, es decir, una jerarqua de clases, ya que esto proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar una misma variable de referencia (que podr apuntar a objetos de diversas subclases de dicha

Daniel Martnez Romero 12590072 Ing. Sistemas Computacionales jerarqua) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimrfica. La clase base Vamos a poner un ejemplo del segundo tipo, que simule la utilizacin de liberas de clases para crear un interfaz grfico 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 ttulo en la parte superior, por tanto no puede desplazarse, pero si cambiar de tamao actuando con el ratn en los bordes derecho e inferior. La clase Ventana tendr los siguientes miembros dato: la posicin x e y de la ventana, de su esquina superior izquierda y las dimensiones de la ventana: ancho y alto. 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; } //... } Las funciones miembros, adems del constructor sern las siguientes: la funcin mostrar que simula una ventana en un entorno grfico, aqu solamente nos muestra la posicin y las dimensiones de la ventana. public void mostrar(){ System.out.println("posicin : x="+x+", y="+y); System.out.println("dimensiones : w="+ancho+", h="+alto); }

La clase derivada

Daniel Martnez Romero Ing. Sistemas Computacionales

12590072

Incrementamos la funcionalidad de la clase Ventana definiendo una clase derivada denominada VentanaTitulo. Los objetos de dicha clase tendrn todas las caractersticas de los objetos de la clase base, pero adems tendrn un ttulo, y se podran desplazar (se simula el desplazamiento de una ventana con el ratn).

La clase derivada heredar los miembros dato de la clase base y las funciones miembro, y tendr un miembro dato ms, el ttulo 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; } extends es la palabra reservada que indica que la clase VentanaTitulo deriva, o es una subclase, de la clase Ventana. La primera sentencia del constructor de la clase derivada es una llamada al constructor de la clase base mediante la palabra reservada super. La llamada super(x, y, w, h); inicializa los cuatro miembros dato de la clase base Ventana: x, y, ancho, alto. A continuacin, se inicializa los miembros dato de la clase derivada, y se realizan las tareas de inicializacin que sean necesarias. Si no se llama explcitamente al constructor de la clase base Java lo realiza por nosotros, llamando al constructor por defecto si existe. La funcin miembro denominada desplazar cambia la posicin de la ventana, aadindoles el desplazamiento. public void desplazar(int dx, int dy){ x+=dx; y+=dy; } Redefine la funcin miembro mostrar para mostrar una ventana con un ttulo. public void mostrar(){ super.mostrar(); System.out.println("titulo

: "+titulo);

Daniel Martnez Romero Ing. Sistemas Computacionales }

12590072

La clase abstracta no permite crear objetos,se utiliza para que otras clases hereden de ella,"provocando" la reutilizacion de codigo,osea que no se puede instanciar,y se usa unicamente para definir subclases. Una clase es abstracta cuando uno de sus metodos no tiene implementacion y se usa cuando queremos definir una abstraccion que englobe objetos de varios tipos y queremos hacer uso del polimorfismo.

CLASES GENRICAS Introduccin Utilizacin de la herencia Todas las clases en Java heredan de la clase base Object. Se puede emplear Object para implementar algoritmos genricos Ejemplo: diseo de una clase Caja que pueda guardar objetos de cualquier tipo: public class Caja { private Object dato; public Caja() { super(); } public Object dame() { return dato; } public void pon(Object x) { dato = x; } } public class TestCaja { public static void main(String args[]) { Caja c = new Caja(); c.pon(new Integer(46)); Integer n; n = (Integer) c.dame(); } }

Potrebbero piacerti anche