RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Clases en C++.
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()
Herencia en C#.
Fundamentos de la programación orientada a objetos
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
CURSO Programación Orientada a Objetos Parte 3 POLIMORFISMO
Curso Programación en Java
Herencia y Polimorfismo
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA A OBJETOS
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
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.
Medio de tele-comunicación
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.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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
Diplomado Desarrollo de Aplicaciones en Internet
Programación Orientada a Objetos
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
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.
Tema 8: Herencia Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
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.
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.
Herencia y Clases Abstractas
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
HERENCIA.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
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.
Unidad 6 Polimorfismo.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
 En Java, como en otros lenguajes de programación orientados a objetos, las clases pueden derivar desde otras clases. La clase derivada (la clase que.
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.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Herencia y Clases Abstractas Reutilización de código y código genérico ELO329: Diseño y Programación Orientados a Objetos.
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.
Transcripción de la presentación:

RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ

SOBRECARGA Sobrecarga hace referencia a un conjunto de Métodos con el mismo Nombre pero diferente Número de Parámetros y/o Tipos de estos, además estos métodos se encuentran definidos en una misma Clase. public class A { public void Metodo() { Metodo(0); } public void Medodo(int Valor) { //Aqui se escribe todo el código. }

POLIMORFISMO Polimorfismo hace referencia a un conjunto de Métodos con diferentes funcionalidades con el mismo Nombre e igual Número de Parámetros y Tipos, pero que se encuentran definidos en diferentes Clases. public class Figura { public void Dibujar(); } public class Triangulo extendes Figura { public void Dibujar() { //Aqui dibujar un Triangulo } } public class Cuadrado extends Figura { public void Dibujar() { //Aqui dibujar un cuadrado } }

POLIMORFISMO Es una relajación del sistema de tipos, de tal manera que una referencia a una clase (atributo, parámetro o declaración local o elemento de un vector) acepta direcciones de objetos de dicha clase y de sus clases derivadas (hijas, nietas, …).

EJEMPLO // clase padre con metodo( ) class Padre { public void metodo( ) { System.out.println("Soy Padre"); } // Clase hija que sobreescribe metodo() class Hija extends Padre { public void metodo( ) { System.out.println("Soy Hija"); } public class poli { public static void main (String[] args) { // metodo( ) esta sobreescrito, pero no estamos usando polimorfismo en absoluto Hija hija = new Hija(); hija.metodo( ); // Aquí sí usamos polimorfismo, puesto que la variable es de tipo Padre y guarda una instancia de Hija Padre padre[ ] = {new Hija(),new Hijo()}; padre[0].metodo( ); padre[1].metodo( ); } }

CLASE ABSTRACTA

Jerarquía de clases en que algún comportamiento está presente en todas ellas pero se materializa de forma distinta para cada una. Un método abstracto es un método declarado en una clase para el cual esa clase no proporciona la implementación (el código). Una clase abstracta es una clase que tiene al menos un método abstracto. No se pueden definir constructores abstractos No se pueden definir métodos estáticos abstractos. Las subclases de una clase abstracta deben: Sobreescribir todos los métodos abstractos de la superclase o bien ser declaradas como clases abstractas

CLASE ABSTRACTA El método área de circulo, rectángulo y triangulo se implementa de manera diferente No importa qué forma tiene un objeto, aplicándole el método área devolverá el resultado correcto

SINTAXIS abstract class nombre_clase { …….. } Ejemplo abstract class animal{ public abstract void comer(); }

EJEMPLO public abstract class Forma { private int xpos, ypos; private Color color; //... public abstract void dibuja(); public void setColor(Color c){ /*...*/ }; } public class Circulo extends Forma{ private int radio; //... public void dibuja(){ /*...*/ }; public void setRadio(int){/*...*/}; } public class triangulo extends Forma{ private int altura, anchura; //... public void dibuja(){ /*...*/ }; public void setAltura(int){/*...*/}; }

EJEMPLO public abstract class Figura { protected int x, y; public void mostrarOrigen() { System.out.println("x= "+x+" y= "+y);} public abstract double area(); // No tiene implementación public abstract double mostrarNombre(); } public class Triangulo extends Figura { protected int base, altura; public Triangulo (int ba, int al) { base=ba; altura=al; } public double area() { return base*altura/2; } public void mostrarNombre() { System.out.println(“triangulo”); } } public class Cuadrado extends Figura { protected int lado; public Cuadrado (int lado) { this.lado=lado; } public double area() { return lado*lado; } public void mostrarNombre() { System.out.println(“cuadrado”);} }

EJEMPLO import java.util.*; abstract class Instrumento { public abstract void tocar(); public String tipo( ) { return "Instrumento"; } public abstract void afinar(); } class Guitarra extends Instrumento { public void tocar( ) { System.out.println("Guitarra.tocar()"); } public String tipo( ) { return "Guitarra"; } public void afinar( ){} } class Piano extends Instrumento { public void tocar( ) { System.out.println("Piano.tocar()"); } public String tipo( ) { return "Piano"; } public void afinar( ) {} } class Saxofon extends Instrumento { public void tocar( ) { System.out.println("Saxofon.tocar()"); } public String tipo( ) { return "Saxofon"; } public void afinar( ) {} } // Un tipo de Guitarra class Guzla extends Guitarra { public void tocar() { System.out.println("Guzla.tocar()"); } public void afinar( ) { System.out.println("Guzla.afinar()"); }

// Un tipo de Guitarra class Ukelele extends Guitarra { public void tocar() { System.out.println("Ukelele.tocar()"); } public String tipo() { return "Ukelele"; } } public class Musica2 { // No importa el tipo de Instrumento, // seguirá funcionando debido a Polimorfismo: static void afinar(Instrumento i) { //... i.tocar(); } static void afinarTodo(Instrumento[] e) { for(int i = 0; i < e.length; i++) afinar(e[i]); } public static void main(String[] args) { // Declarar un Arreglo SIN INSTANCIAS es valido en Clases Abstractas Instrumento[] orquesta = new Instrumento[5]; // Generar una INSTANCIA de una la Clase Abstracta no es valido // Instrumento nuevo = new Instrumento(); int i = 0; // Up-casting al asignarse el Arreglo orquesta[i++] = new Guitarra(); orquesta[i++] = new Piano(); orquesta[i++] = new Saxofon(); orquesta[i++] = new Guzla(); orquesta[i++] = new Ukelele(); afinarTodo(orquesta); } }// fin de Musica2

SALIDA Guitarra.tocar() Piano.tocar() Saxofon.tocar() Guzla.tocar() Ukelele.tocar()

DESCRIPCIÓN Clase Musica En el código fuente de Musica.java son diseñadas diversas Clases que demuestran el uso de Polimorfismo: Instrumento : Es utilizada como la Clase Base para el resto de Clases y en ella son definidos tres métodos: tocar,tipo y afinar. Guitarra : Hereda ("Inherit") de la Clase Instrumento y redefine ("Override") los métodos de ésta. Piano : Hereda ("Inherit") de la Clase Instrumento y redefine ("Override") los métodos de ésta. Saxofon : Hereda ("Inherit") de la Clase Instrumento y redefine ("Override") los métodos de ésta. Guzla : Hereda ("Inherit") de la Clase Guitarra y redefine ("Override") los métodos de ésta. Ukelele : Hereda ("Inherit") de la Clase Guitarra y redefine ("Override") los métodos de ésta. Las definiciones de la Clase principal Musica son descritas en los siguientes incisos: El primer método definido en esta Clase llamado afinar toma como valor de entrada una referencia del tipo Instrumento, sobre la cual es invocado el método tocar. Un segundo método nombrado afinarTodo toma como valor de inicia un arreglo de Instrumento, el cual es procesado por un ciclo que a su vez manda llamar el método afinar con los respectivos valores del arreglo.

Dentro del método principal se define lo siguiente: Primeramente se genera un arreglo de Instrumento para 5 Objetos. Se inicializa un primitivo i con un valor de cero. A través de la referencia orquesta son asignados distintos Objetos al arreglo, nótese que aunque el arreglo es de tipo Instrumento es posible asignar los Objetos: Guitarra,Piano,Saxofon,Guzla,Ukelele. Finalmente se invoca el método afinarTodo con la referencia que representa el arreglo de Instrumento. Lo interesante de este resultado reside en la manera que fue realizada la invocación de métodos, el método que realiza las llamadas hacia las diversas clases es afinar dentro de la Clase Musica, observe que este método toma como valor inicial una referencia del tipo Instrumento y se invoca el método tocar. Sin embargo, al ser invocado el método tocar a pesar de ser a través de una referencia Instrumento es invocado el método de Clase acordemente, esto es, se llama el método de la Clase especifica; lo anterior es una labor de Polimorfismo ya que ocurre el comportamiento adecuado a pesar de realizarse las llamadas a través de una clase general ( Instrumento ).