La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Medio de tele-comunicación

Presentaciones similares


Presentación del tema: "Medio de tele-comunicación"— Transcripción de la presentación:

1 Herencia, CONSTRUCTORES, clases y métodos abstractos, interfaces y Polimorfismo

2 Medio de tele-comunicación
Cosa Herencia en el mundo real Medio de tele-comunicación Medio de transporte Objeto de oficina Coche Vehiculo aéreo

3 Herencia Objetivos: a) Definir el concepto de herencia entre clases
b) Interpretar el código fuente de una aplicación Java donde aparecen clases relacionadas mediante la herencia. c) Construir una aplicación Java sencilla, convenientemente especificada, que haga uso de la herencia entre clases.

4 Definición Herencia La herencia es una propiedad que permite la declaración de nuevas clases a partir de otras ya existentes. Esto proporciona una de las ventajas principales de la Programación Orientada a Objetos: la reutilización de código previamente desarrollado ya que permite a una clase más específica incorporar la estructura y comportamiento de una clase más general.

5 Herencia En otras palabras:
La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando código (métodos y campos). Podemos agregar métodos y variables para adaptar la clase a la nueva situación.

6 Herencia La herencia la identificamos cuando encontramos la relación es-un entre la nueva clase y la ya existente. Un estudiante es una persona. La clase ya existente se le llama superclase, clase base , o clase padre. A la nueva clase se le llama subclase, clase derivada, o clase hija.

7 Herencia De hecho, en Java, todas las clases deben derivar de alguna clase. (Object) Cuando una clase B se construye a partir de otra A mediante la herencia, la clase B hereda todos los atributos, métodos y clases internas de la clase A. Además la clase B puede redefinir los componentes heredados y añadir atributos, métodos y clases internas específicas

8 Herencia Para indicar que la clase B (clase descendiente, derivada, hija o subclase) hereda de la clase A (clase ascendiente, heredada, padre, base o superclase) se emplea la palabra reservada extends en la cabecera de la declaración de la clase descendiente. La sintaxis es la siguiente: public class ClaseB extends ClaseA { // Declaracion de atributos y metodos especificos de ClaseB // y/o redeclaracion de componentes heredados }

9 HERENCIA Clases y superclases

10 Herencia en Java Java permite definir una clase como subclase de una clase padre. class clase_hija extends clase_padre { }

11 Herencia

12 Herencia En este diagrama:
La clase Empleado es la superclase de Director, Comercial e Informático. Las clases Director, Comercial e Informático son subclases de la clase Empleado. La clase Director es la superclase de Ejecutivo. La clase Ejecutivo es la subclase de Director. Las subclases heredan todos los métodos y atributos de sus superclases. Por tanto, al definir una subclase, esta tiene automáticamente el mismo comportamiento que la superclase que hereda. Y se debe tener en cuenta que esta herencia sube en la jerarquía hasta llegar a la cumbre.

13 Herencia Existe una raíz en esta jerarquía, que es la clase Object. Todas las clases creadas heredan las características y el comportamiento de Object.

14 Herencia ¿Cómo se define la herencia en Java?
Para indicar que una clase hereda de otra, se utiliza la palabra reservada extends. Siguiendo el ejemplo del gráfico anterior, deberíamos definir las clases de la siguiente manera: class Empleado { } class Director extends Empleado { } class Comercial extends Empleado { } class Informatico extends Empleado { } class Ejecutivo extends Director { }

15 Constructores El objetivo del constructor es el de inicializar un objeto cuando éste es creado. Asignaremos los valores iniciales así como los procesos que ésta clase deba realizar. Se utiliza para crear tablas de métodos virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos (POO). Al utilizar un constructor, el compilador determina cual de los objetos va a responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis. En java es un método especial dentro de una clase, que se llama automáticamente cada vez que se crea un objeto de esa clase.

16 Constructores Un constructor se llama igual que la clase.
No devuelve nada, ni siquiera void. Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones. De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase. Dentro del código de un constructor generalmente suele existir inicializaciones de variables y objetos, para conseguir que el objeto sea creado con dichos valores iniciales.

17 Constructores Constructor por defecto
Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a ceros, los alfanuméricos a nulos, y las referencias a objetos a null). Para definir los constructores se emplea la siguiente sintaxis: [modifVisibilidad] nombreConstructor (listaParámetros) [throws listaExcepciones] { }

18 Constructores - Ejemplo
public class Arboles { public Arboles() { System.out.println("Un árbol genérico"); } public Arboles(String tipo) { System.out.println("Un árbol tipo " + tipo); } public Arboles(int altura) { System.out.println("Un árbol de " + altura + " metros"); } public Arboles(int altura,String tipo) { System.out.println("Un " + tipo + " de " + altura + " metros"); } public static void main(String args[]) { Arboles arbol1 = new Arboles(4); Arboles arbol2 = new Arboles("Roble"); Arboles arbol3 = new Arboles(); Arboles arbol4 = new Arboles(5,"Pino"); } }

19 Constructores y Herencia
Cuando se declara un objeto de una clase derivada, se ejecutan los constructores siguiendo el orden de derivación, es decir, primero el de la clase base, y después los constructores de las clases derivadas de arriba a abajo. Para pasar parámetros al constructor de la clase padre: super (para1, para2, ..., paraN)

20 Ejemplo de código class Humano { protected String nombre;
protected String apellido; public Humano(String nombre, String apellido) { this.nombre = nombre; this.apellido = apellido; } /* el this es un apuntador al objeto mismo. Y se emplea para evitar ambigüedades, porque en el método constructor que usas sirve para diferenciar el atributo de la clase, del atributo que entra como parámetro. */ public String nombreCompleto() { return this.apellido + ", " + this.nombre; } public String identificacion() { return this.nombreCompleto(); } }

21 CONSTRUCTORES Y Herencia
class Ciudadano extends Humano { protected String documento; public Ciudadano(String nombre,String apellido, String documento) { super(nombre,apellido); this.documento = documento; } //super( ) llama al constructor de la clase de la que se hereda (extends). public String identificacion() { return super.identificacion() + ", documento: " + this.documento; } public String getDocumento(){ return documento; }

22 CONSTRUCTORES Y Herencia
public class Herencia { public static void main (String args[ ]) Humano a = new Humano("Emilio","Rosso"); Ciudadano b = new Ciudadano("Emilio","Rosso"," "); System.out.println(a.nombreCompleto()); System.out.println(b.identificacion()); System.out.println(b.getDocumento()); // System.out.println(a.getDocumento()); /* no es posible acceder a un miembro de la clase hija usando una referencia u objeto de la clase padre*/ }

23 Herencia Y CONSTRUCTORES

24

25 Clases y Métodos Abstractos
Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general. En otras palabras una clase abstracta define una interfaz común para los diversos miembros de una jerarquía de clases. La clase abstracta contiene métodos que se definirán en las subclases. Todas las clases de la jerarquía pueden usar la misma interfaz gracias al polimorfismo.

26 Clases y Métodos Abstractos
Una clase abstracta puede tener métodos declarados como abstractos, en cuyo caso no se da definición del método. Si una clase tiene algún método abstracto es obligatorio que la clase sea abstracta. En cualquier sub-clase este método deberá ser redefinido, o bien volver a declararse como abstracto (el método y la sub-clase). Una clase abstracta puede tener métodos que no son abstractos. Aunque no se puedan crear objetos de esta clase, sus sub-clases heredarán el método completamente a punto para ser utilizado. Como los métodos static no pueden ser redefinidos, un método abstract no puede ser static.

27 Clases Abstractas Si una clase contiene al menos un método abstracto, entonces es una clase abstracta. Una clase abstracta es una clase de la que no se pueden crear objetos, pero puede ser utilizada como clase padre para otras clases. Declaración: abstract class NombreClase { }

28 Clases y métodos Abstractos
Algunas veces, una clase que se ha definido representa un concepto abstracto y como tal, no debe ser ejemplarizado. Por ejemplo, la comida en la vida real. ¿Has visto algún ejemplar de comida? No. Lo que has visto son ejemplares de manzanas, pan, y chocolate. Comida representa un concepto abstracto de cosas que son comestibles. No tiene sentido que exista un ejemplar de comida.

29 Clases y métodos Abstractos
Similarmente en la programación orientada a objetos, se podría modelar conceptos abstractos pero no querer que se creen ejemplares de ellos. Por ejemplo, la clase Number del paquete java.lang representa el concepto abstracto de número. Tiene sentido modelar números en un programa, pero no tiene sentido crear un objeto genérico de números.

30 Clases y métodos Abstractos
La clase Number sólo tiene sentido como superclase de otras clases como Integer y Float que implementan números de tipos específicos. Las clases como Number, que implementan conceptos abstractos y no deben ser ejemplarizadas, son llamadas clases abstractas. Una clase abstracta es una clase que sólo puede tener subclases no puede ser ejemplarizada.

31 Clases y métodos Abstractos
Para declarar que una clase es un clase abstracta, se utiliza la palabra clave abstract en la declaración de la clase. abstract class Number { . . . } Si se intenta ejemplarizar una clase abstracta, el compilador mostrará un error similar a este y no compilará el programa: AbstractTest.java:6: class AbstractTest is an abstract class. It can't be instantiated. new AbstractTest(); ^ 1 error

32 Clases y métodos Abstractos


Descargar ppt "Medio de tele-comunicación"

Presentaciones similares


Anuncios Google