Medio de tele-comunicación

Slides:



Advertisements
Presentaciones similares
ESTRUCTURA DE DATOS Unidad 01 Conceptos Previos.
Advertisements

Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Programación Interactiva Fundamentos de Java. 2 Ejecución de un programa Para Java una clase ejecutable es aquella que es pública y tiene un método main()
PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
Polimorfismo Unidad 4.
La Programación Orientado a Objetos
Conceptos más avanzados de Programación Orientada a Objetos Programación 2005 Licenciatura de Lingüística y Nuevas Tecnologías.
Capitulo 4 Excepciones.
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
UNIVERSIDAD LATINA (UNILA)
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
Programación Orientada a Objetos en Java
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Modificadores.
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Variables polimórficas (plantillas): definición, uso y aplicación
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Herencia en POO Eliseo Melgarejo Desarrollo de sistemas Udec.
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Programanción I Ing. Cristhian Garita Fonseca
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Detalles Generales sobre Java
Programación orientada a objetos
CONCEPTOS.
HERENCIA.
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Modelado UML Diagrama de Clases
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
This y static. This Normalmente, dentro del cuerpo de un método de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo,
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

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

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

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.

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.

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.

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.

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

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 }

HERENCIA Clases y superclases

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

Herencia

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.

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.

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 { }

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.

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.

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] { }

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"); } }

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)

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(); } }

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; }

CONSTRUCTORES Y Herencia public class Herencia { public static void main (String args[ ]) Humano a = new Humano("Emilio","Rosso"); Ciudadano b = new Ciudadano("Emilio","Rosso","3052454545"); 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*/ }

Herencia Y CONSTRUCTORES

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.

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.

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 { .............. }

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.

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.

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.

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

Clases y métodos Abstractos