POLIMORFISMO. import java.util.*; class Instrumento { public void tocar() { System.out.println("Instrumento.tocar()"); public String tipo() {

POLIMORFISMO import java.util.*; class Instrumento { public void tocar() { System.out.println("Instrumento.tocar()"); } public String tipo() { return "Instrumento"; } public 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 Musica { // 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) { Instrumento[] orquesta = new Instrumento[5]; 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); } } CLASE ABSTRACTA 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); } } SALIDA Guitarra.tocar() Piano.tocar() Saxofon.tocar() Guzla.tocar() Ukelele.tocar() INTERFACE interface IAnimal { static final int valor=5; // Método Comunicarse, sera implementado por las clases concretas que hereden de la clase //animal public void comunicarse(); } abstract class Animal implements IAnimal { private String nombre; // Constructor de la clase Animal public Animal (String nombre){ this.nombre=nombre; System.out.println("Constructor Animal, " + "nombre del animal : "+this.nombre); } // Retorna el valor de nombre public String getNombre(){ return nombre; } // Metodo Abstracto tipoAnimal, la implementación depende de las clases concretas que //extiendan la clase Animal public abstract void tipoAnimal(); } class Gato extends Animal{ // Constructor explicito clase Gato public Gato(String nombre) { super(nombre);//envia el parametro a el constructor de la clase padre System.out.println("Constructor Gato, nombre : "+nombre); } public void tipoAnimal() { System.out.println("Tipo Animal : Es un Gato"); } public void comunicarse(){ System.out.println("Metodo comunicarse : El gato maulla... Miau Miau"); } } class Perro extends Animal{ public Perro(String nombre) { super(nombre); System.out.println("Constructor perro, nombre : "+nombre); } public void tipoAnimal() { System.out.println("Tipo Animal : Es un Perro"); } public void comunicarse(){ System.out.println("Metodo comunicarse : El perro Ladra... Guau Guau"); } } public class Test { public static void main (String[] arg){ //Creamos anim, un objeto Perro de tipo Animal Animal anim= new Perro("goliath") ; anim.tipoAnimal(); anim.comunicarse(); System.out.println(); //Creamos perro, un objeto Perro de tipo Perro Perro perro=new Perro("hercules"); perro.tipoAnimal(); System.out.println(); //Creamos animalPolimorfico, un objeto perro de tipo Animal asignamos una referencia ya //existente Animal animalPolimorfico=perro; animalPolimorfico.tipoAnimal(); System.out.println(); //reasignamos la referencia del objeto anim a el objeto perro esto es válido ya que ambos son de //tipo Perro perro=(Perro) anim; perro.tipoAnimal(); System.out.println(); //Creamos gat, un objeto Gato de tipo Animal Animal gat=new Gato("pichi"); gat.tipoAnimal(); gat.comunicarse(); System.out.println(); //Creamos cat, un objeto Gato de tipo IAnimal para esto aplicamos polimorfismo usando la //Interface IAnimal cat = new Gato("pitufa"); cat.comunicarse(); System.out.println("\nCon

18 downloads 80 Views 325KB Size

Recommend Stories


lac Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Banco Mundial
Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Mundial Banco lAC oportunid

Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized
Public Disclosure Authorized Public Disclosure Authorized 65879 Public Disclosure Authorized Public Disclosure Authorized El Gasto Tributario en

Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized
Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized SERlE DE ESTUDIOS DEL BANCO M

Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized
Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized 54939 Fotos: Federico Gutier

Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized
Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized Public Disclosure Authorized 71330 BANCO MUNDIAL Politic

Story Transcript

POLIMORFISMO import java.util.*; class Instrumento { public void tocar() { System.out.println("Instrumento.tocar()"); } public String tipo() { return "Instrumento"; } public 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 Musica {

// 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) { Instrumento[] orquesta = new Instrumento[5]; 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); } }

CLASE ABSTRACTA 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); } } SALIDA Guitarra.tocar() Piano.tocar() Saxofon.tocar() Guzla.tocar() Ukelele.tocar()

INTERFACE interface IAnimal { static final int valor=5; // Método Comunicarse, sera implementado por las clases concretas que hereden de la clase //animal public void comunicarse(); } abstract class Animal implements IAnimal { private String nombre; // Constructor de la clase Animal public Animal (String nombre){ this.nombre=nombre; System.out.println("Constructor Animal, " + "nombre del animal : "+this.nombre); } // Retorna el valor de nombre public String getNombre(){ return nombre; } // Metodo Abstracto tipoAnimal, la implementación depende de las clases concretas que //extiendan la clase Animal public abstract void tipoAnimal(); } class Gato extends Animal{ // Constructor explicito clase Gato public Gato(String nombre) { super(nombre);//envia el parametro a el constructor de la clase padre System.out.println("Constructor Gato, nombre : "+nombre);

} public void tipoAnimal() { System.out.println("Tipo Animal : Es un Gato"); } public void comunicarse(){ System.out.println("Metodo comunicarse : El gato maulla... Miau Miau"); } } class Perro extends Animal{ public Perro(String nombre) { super(nombre); System.out.println("Constructor perro, nombre : "+nombre); } public void tipoAnimal() { System.out.println("Tipo Animal : Es un Perro"); } public void comunicarse(){ System.out.println("Metodo comunicarse : El perro Ladra... Guau Guau"); } }

public class Test { public static void main (String[] arg){ //Creamos anim, un objeto Perro de tipo Animal Animal anim= new Perro("goliath") ; anim.tipoAnimal(); anim.comunicarse(); System.out.println();

//Creamos perro, un objeto Perro de tipo Perro Perro perro=new Perro("hercules"); perro.tipoAnimal(); System.out.println(); //Creamos animalPolimorfico, un objeto perro de tipo Animal asignamos una referencia ya //existente Animal animalPolimorfico=perro; animalPolimorfico.tipoAnimal(); System.out.println(); //reasignamos la referencia del objeto anim a el objeto perro esto es válido ya que ambos son de //tipo Perro perro=(Perro) anim; perro.tipoAnimal(); System.out.println(); //Creamos gat, un objeto Gato de tipo Animal Animal gat=new Gato("pichi"); gat.tipoAnimal(); gat.comunicarse(); System.out.println(); //Creamos cat, un objeto Gato de tipo IAnimal para esto aplicamos polimorfismo usando la //Interface IAnimal cat = new Gato("pitufa"); cat.comunicarse(); System.out.println("\nConstante en la interfaz Animal : "+IAnimal.valor); } }

SALIDA Constructor Animal, nombre del animal : goliath Constructor perro, nombre : goliath Tipo Animal : Es un Perro Metodo comunicarse : El perro Ladra... Guau Guau

Constructor Animal, nombre del animal : hercules Constructor perro, nombre : hercules Tipo Animal : Es un Perro

Tipo Animal : Es un Perro

Tipo Animal : Es un Perro

Constructor Animal, nombre del animal : pichi Constructor Gato, nombre : pichi Tipo Animal : Es un Gato Metodo comunicarse : El gato maulla... Miau Miau

Constructor Animal, nombre del animal : pitufa Constructor Gato, nombre : pitufa Metodo comunicarse : El gato maulla... Miau Miau

Constante en la interfaz Animal : 5

Animal animales[]= { new Perro("simon"),new Perro("paco"),new Gato("mimi")}; for(Animal a : animales){ a.tipoAnimal(); } System.out.println();

Prtáctica Se plantea desarrollar un programa Java que permita representar la siguiente situación. Una instalación deportiva es un recinto delimitado donde se practican deportes, en Java interesa disponer de un método int getTipoDeInstalacion(). Un edificio es una construcción cubierta y en Java interesa disponer de un método double getSuperficieEdificio(). Un polideportivo es al mismo tiempo una instalación deportiva y un edificio; en Java interesa conocer la superficie que tiene y el nombre que tiene. Un edificio de oficinas es un edificio; en Java interesa conocer el número de oficinas que tiene. Definir dos interfaces y una clase que implemente ambas interfaces para representar la situación anterior. En una clase test con el método main, crear un ArrayList que contenga tres polideportivos y dos edificios de oficinas y utilizando un iterator, recorrer la colección y mostrar los atributos de cada elemento. ¿Entre qué clases existe una relación que se asemeja a la herencia múltiple?

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.