Ejercicios De Patos De Manera Formal

Este es el ejemplo de los patos con interfaces pero a traves de un metodo mas formal y eficiente

Creamos una interfaz llamada Quackable con un metodo que sera común para todas las clases

public interface Quackable {
public void quack();

}

Creamos una interfaz llamada Flyable con un metodo que sera común para todas las clases

public interface Flyable {

public void fly();

}

Crearemos 2 clases para todos los posibles casos de vuelo(si vuela, no vuela), que implementaran el mismo metodo fly

clase NoFly

public class NoFly implements Flyable{
public NoFly(){}

public void fly(){
System.out.println("Este pato no vuela :(");
}

}

Clase FlyWithWings

public class FlyWithWings implements Flyable{
public FlyWithWings(){}

public void fly(){
System.out.println("Soy un pato que vuela uju!!!");
}

}

Haremos lo mismo con todos los posibles casos de quack

Clase NoQuack

public class NoQuack implements Quackable{
public NoQuack(){}

public void quack() {
System.out.println("Este pato no hace quack ni squezze");
}

}

Clase Quack

public class Quack implements Quackable{

public Quack(){}

public void quack() {
System.out.println("Este pato hace quack!!!!");
}

}

Clase Squeeze

public class Squeeze implements Quackable{
public Squeeze(){}

public void quack() {
System.out.println("Este pato hace squeeze");
}
}

Creamos la clase super

public class Duck {
public Duck(){}

Flyable fly; //Creamos variables de lsa interfaces
Quackable quack;

public void display(){
System.out.println("Este pato se muestra");
}

public void swim(){
System.out.println("Este pato puede nadar");
}

}

Clase de Nuestro pato de hule

public class PatoHule extends Duck{
public PatoHule(){
super();
fly=new NoFly();
quack=new Squeeze();
}

public void mostrar(){
System.out.println("Soy un pato de hule");
super.display();
super.swim();
fly.fly();
quack.quack();
}

}

Clase de Nuestro pato de madera

public class PatoMadera extends Duck{
public PatoMadera(){
super();
fly=new NoFly();
quack=new NoQuack();
}

public void mostrar(){
System.out.println("Pato de Madera");
super.display();
super.swim();
fly.fly();
quack.quack();
}

}

Clase de Nuestro pato de cabeza roja

public class RedHeadDuck extends Duck{
public RedHeadDuck(){
super();
fly=new FlyWithWings();
quack=new Quack();
}

public void mostrar(){
System.out.println("Soy un pato de cabeza roja");
super.display();
super.swim();
fly.fly();
quack.quack();
}

}

Clase de Nuestro pato mallord

public class MallordDuck extends Duck{
public MallordDuck(){
super();
fly=new FlyWithWings();
quack=new Quack();
}

public void mostrar(){
System.out.println("Soy un MallordDuck");
super.display();
super.swim();
fly.fly();
quack.quack();
}

}

Una vez creadas nuestras clases necesitaremos de nuestro main para poder crear objetos de cada clase y visualizar el resultado

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

RedHeadDuck lstPatoCabezaRoja = new RedHeadDuck();
MallordDuck lstPatoMallord = new MallordDuck();
PatoMadera lstPatoMadera = new PatoMadera();
PatoHule lstPatoHule = new PatoHule();

lstPatoCabezaRoja.mostrar();
System.out.println("");

lstPatoMallord.mostrar();
System.out.println("");

lstPatoMadera.mostrar();
System.out.println("");

lstPatoHule.mostrar();

}

}

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License