jueves, 4 de marzo de 2010

Ejercicios sobre Interfaces en Java (06.02.02)

Ejercicio 1
Crear la interfaz PuedeCantar (que es capaz de cantar), un interfaz muy simple que sólo posee un método cantar.

PuedeCantar.java

public interface PuedeCantar {
    public void cantar();
}
Crear la clase Persona que implemente el interfaz PuedeCantar y que cuando cante lo haga con las notas musicales.

Persona.java

public class Persona implements PuedeCantar {
    public void cantar() {
        System.out.println("do re mi fa sol la si");
    }
}
Crear la clase Canario y Gallo que implemente el interfaz PuedeCantar y que muestre como cantan
Canario.java
    ... System.out.println("pio pio pio") ...
Gallo.java
    ... System.out.println("ki ki ri ki") ...

Realice el programa que haga cantar a un canario y un tenor.

ProgramaInterfaz.java

public class ProgramaInterfaz {
     public static void main(String arg[]) {
        Persona pavaroti = new Persona();
        hacerCantar(pavaroti);
        Canario piolin = new Canario();
        hacerCantar(piolin);
        Gallo claudio = new Gallo();
        hacerCantar(claudio);
    }
    public static void hacerCantar(PuedeCantar cantor) {
        cantor.cantar();
    }
}

Ejercicio 2
Algunos seres pueden caminar y puede nadar estas dos capacidades son interfaces (PuedeCaminar.java y PuedeNadar.java).
Los mamiferos son animales que pueden moverse (Mamifero.java). El gato es un mamifero que puede nadar y moverse (Gato.java).
Un Loro puede caminar pero no puede nadar.

PuedeCaminar.java

public interface PuedeCaminar{
    public void caminar();
}
PuedeNadar.java
public interface PuedeNadar {
    public void nadar();
}
Mamifero.java
public class Mamifero {
    String especie, color;
    public void caminar() {
        System.out.println("El mamífero camina");
    }
}
Gato.java
public class Gato extends Mamifero implements PuedeCaminar, PuedeNadar {
    private int numeroPatas = 4;
    public void nadar() {
        System.out.println("El gato nada");
    }
}
Loro.java
public class Loro implements PuedeCaminar...
    ...System.out.println("El loro camina");
    ...

Interfaces.java
public class Interfaces {
    public static void main(String[] args) {
        Gato felix = new Gato();
        felix.caminar();
        felix.nadar();
        Loro pepe = new Loro();
        pepe.caminar();
    }
}
Por que no se requiere escribir todos los métodos de las interfaces en la clase Gato?

Ejercicios adicionales
Agregue al ejercicio anterior la interface PuedeVolar.java
Agregue la superclase Aves.java
Herede la clase Avestruz.java (ave que solo camina)
Herede la clase Loro.java (ave que camina y vuela)
Herede la clase Murciélago.java (es un mamífero que vuela y camina)
Cree la clase Felino.java (es un mamifero que camina y puede nadar).
Modifique la clase Gato.java (es un Felino)
Cree la clase Tigre.java
Compartir:

8 comentarios:

  1. disculpa si quisiera poner un combobox con las opciones persona,canario,gallo y un boton que cuando seleccione un valor del combo me diga como canta, como seria el codigo por favor he tratado pero no me sale
    correo:roogle_25@hotmail.com

    ResponderEliminar
  2. saludos, me gustaria que me explicaras detalladamente como funciona este metodo:
    public static void hacerCantar(PuedeCantar cantor) {
    cantor.cantar();
    }

    es el ultimo que aparece al final del ejemplo 1, entiendo que uno llama ese metodo para que retorne el sonido del tenor o del animal, pero no entiendo la parte de cantor.cantar(); y por que cuando pusiste la interface PuedeCantar como parametro colocaste la palabra cantor¿? que funcion hace cantor¿?

    ResponderEliminar
  3. Disculpame... interfaces va "C" y no con "S". saludo, muy buenos los ejemplos.

    ResponderEliminar
  4. Se implementa de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface PuedeCantar. A dicha función le podemos pasar cualquier objeto que implemente el interface PuedeCantar, este o no en la misma jerarquía de clases. (el objeto seria cantor donde llamamos el metodo cantar mediante el . por eso es cantor.cantar();

    ResponderEliminar
  5. Se implementa de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface PuedeCantar. A dicha función le podemos pasar cualquier objeto que implemente el interface PuedeCantar, este o no en la misma jerarquía de clases. (el objeto seria cantor donde llamamos el metodo cantar mediante el . por eso es cantor.cantar();

    ResponderEliminar
  6. es una función definida de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface PuedeCantar. A dicha función le podemos pasar cualquier objeto que implemente el interface PuedeCantar, este o no en la misma jerarquía de clases. y se manda llamar desde el objeto que creamos cantor Tipo cantar con el caracter . por eso es cantor.cantar();
    Asi estamos diciendo que el objeto cantor puede acceder al metodo cantar creado en la interface PuedeCantar

    ResponderEliminar
  7. buenísimo: no sabía nada sobre el tema, xq mi profesora es pésima explicando y solo pone a investigar..... gracias. ahora entiendo mejor el concepto y su praxis

    ResponderEliminar
  8. hola me gusto saludos desde guarambare

    ResponderEliminar