Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD

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: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
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
Introducción Abdelahad, Corina Natalia Abdelahad, Yanina Zoraida
La Programación Orientado a Objetos
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
Programación Orientada a Objetos en Java
Algoritmos y Estructuras de Datos Introducción al C++ Herencia.
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.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Medio de tele-comunicación
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é
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
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.
Creación de Aplicaciones
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
6. Herencia. Clases abstractas. Genericidad
SCJP Sun Certified Programmer for Java 6
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
El lenguaje de programación Java
Material de apoyo Unidad 2 Fundamentos de programación
Diplomado Desarrollo de Aplicaciones en Internet
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Tema 9: Paquetes Antonio J. Sierra. Índice 1. Introducción. 2. Protección de acceso. 3. Importación de paquetes. 4. Modelado UML de un paquete.
Herramientas de polimorfismo y herencia en C++
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
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Detalles Generales sobre Java
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
HERENCIA.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Clases “ Es una Abstracción de un elemento del mundo real ”
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.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
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.
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.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
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:

Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD SALESIANA DE BOLIVIA PROGRAMACION III

Concepto y justificación de la herencia La clase que hereda se denomina subclase o clase derivada. La clase de la cual se hereda se denomina superclase o clase base.

Concepto y justificación de la herencia Todo objeto de una subclase es un objeto de la superclase de la cual deriva.

Concepto y justificación de la herencia Las subclases pueden redefinir los métodos y atributos de la clase padre y añadir otros nuevos.

JERARQUIA DE CALSES Las subclases de una clase pueden ser a su vez superclases de otras clases. Esto da lugar a jerarquías de clases.  → Jerarquías de Generalización/Especialización que son relaciones conceptuales ‘ EJEMPLOS: Libros y Revistas tienen propiedades comunes. Una Pila puede definirse a partir de una Cola o viceversa. Un Rectángulo es una especialización de Polígono Puede haber distintos tipos de Cuentas.

JERARQUIA DE CALSES GENERALIZACION ESPECIALIZACION No hay receta mágica para crear buenas jerarquías Se detecta que una clase es un caso especial de otra Ejemplo: Triangulo es un tipo de Polígono. Se detectan clases con un comportamiento común. Ejemplo: Triangulo y polígono son figuras.

Tipos de herencia Herencia simple Una clase puede heredar de una única clase. Ejemplo: Java, C# Herencia múltiple Una clase puede heredar de varias clases. Clases forman un grafo dirigido acíclico. Ejemplos: Eiffel, C++

La sintaxis que indica la herencia en JAVA Para indicar que una clase hereda sus atributos y métodos de otra, en Java se utiliza la palabra clave extends. Herencia Simple class subclase extends superclase: public class Vocal extends Letra

La sintaxis que indica la herencia en JAVA Clase persona public class Persona { String nombre = ""; int edad;   public Persona(String nom, int ed) { nombre = nom; edad = ed; } public void mostrar() { System.out.println("Nombre: "+ nombre); System.out.println("Edad: "+ edad); public static void main(String args[]) { Persona yo= new Persona("Balta", 99); yo.mostrar(); } }

La sintaxis que indica la herencia en JAVA Clase trabajador public class Trabajador extends Persona { float sueldoHora; int numHoras; public Trabajador(String nom, int ed, float suel, int num) { super(nom, ed); // llamada al constructor de Persona sueldoHora = suel; numHoras = num;} public double sueldo() { return sueldoHora * numHoras; } Trabajador yo= new Trabajador("Balta", 99, 200.5f, 45); yo.mostrar(); // se invoca al método heredado mostrar double pelas = yo.sueldo(); System.out.println("Cobra: " + pelas); } }

Herencia y Reglas de Acceso Existen cuatro posibles visibilidades de atributos ymétodos: De más restrictivo a menos: private visible sólo en la clase donde se define. Sin modificador (por defecto) visible a las clases del paquete. protected visible a las subclases y al resto de clases del paquete. public visible a todas las clases.

Herencia y Reglas de Acceso class Vuelo {   char nombre[30];    // private (por defecto)   int capacidad;      // private (por defecto) private:   float peso;         // private protected:   void carga(&operacion};    // protected public:   void despegue(&operacion}; // public   void crucero(&operacion);  // public   char* getName();           // obtener el nombre del vuelo };

public final class Clase Evitando la herencia Se puede evitar que una clase sea heredada: public final class Clase

package nombrePaquete; Paquetes Los paquetes son contenedores de clases que permite delimitar el espacio en el cual una clase existe. Los paquetes permiten que exista más de una clase con el mismo nombre. Para indicar que una clase pertenece a un cierto paquete, se utiliza la palabra clave package La forma de esta sentencia es: package nombrePaquete;

Constructores y destructores Constructor es un: Método que inicializa el objeto en su creación. Se llama automáticamente cuando se crea un objeto. Su nombre es igual que el de la clase y no tiene tipo de retorno. Java proporciona un constructor sin parámetros por defecto que deja de estar disponible cuando se añade algún constructor.

Constructores y destructores Destructor es un: Es un método perteneciente a una clase que es ejecutado de forma automática cuando un objeto es destruido. Java no soporta los destructores.

Constructores y destructores en herencia En principio se hereda todo menos: Constructor y destructor Aunque no se heredan ni el constructor ni el destructor de la clase base, cuando se crea o se destruye un objeto de la clase derivada se invocan automáticamente los de la clase base. Se usa el constructor por defecto (es decir sin parámetros).

Constructores y destructores en herencia Antes ejecutarse el cuerpo de un constructor se debe llamar a su constructor base.En Java se utiliza la palabra reservada super. public Rectangulo(int x,int y,int ancho,int alto) { super(x,y); this.ancho=ancho; this.alto=alto; }

Constructores y destructores en herencia Al contrario que con los constructores, una funcion destructor de una clase derivada se ejecuta antes que el destructor de la clase base. (los destructores no se heredan). Ejemplo :

Constructores y destructores en herencia Cuando creamos un objeto con: Tripleta t = new Tripleta (1, 2, 3); Se llama al constructor con parámetros, con parámetros de Tripleta. Una mejora a este método sería: public Tripleta(int vx, int vy, int vz) { super (vx,vy); z = vz; } class Punto{ private int x; private int y; public Punto () { x=0; y=0; } public Punto (int x, int y){ this.x=x; this.y=y; public int darX(){return x;} public int darY(){return y;} public void cambiarX (int val) {x=val;} public void cambiarY (int val) {y=val;} class Tripleta extends Punto { int z; public Tripleta() { cambiarX(0); cambiarY(0); z = 0; } int darZ() { return z; } void cambiarZ(int val) { z = val; } public Tripleta(int vx, int vy, int vz) { cambiarX(vx); cambiarY(vy); z = vz; }

HERENCIA MULTIPLE Algunos lenguajes orientados a objetos, como C++ permiten herencias múltiples, lo que significa que una clase puede heredar los atributos de otras dos superclases. Este método puede utilizarse para agrupar atributos y métodos desde varias clases dentro de una sola. En el language Java no existe la herencia multiple, si no que se puede simular con las interfaces que se vera en proximos capitulos.

Ejemplo de herencia multiple en C++ #include <cstdio> #include <cstdlib> #include <iostream>    using namespace std;    class Cama { public:        Cama() // constructor     {    cout << "Creando una Cama" << endl;     } ~Cama() // destructor en C++     {    cout << "Destruyendo la Cama" << endl;     } }; class Sofa { public:        Sofa()     {         cout << "Creando un Sofa" << endl;     }     ~Sofa()         cout << "Destruyendo el Sofa" << endl; };

Ejemplo de herencia multiple en C++ class Sofacama : public Cama, public Sofa { public:        Sofacama()     {         cout << "Ahora tenemos un Sofacama" << endl;     }     ~Sofacama()         cout << "Destruyendo el Sofacama" << endl; };   int main()     Sofacama ss;     return 0; }