Material de apoyo para las clases de teoría de Programación en Entornos Distribuidos. Este repositorio incluye listados con los conceptos explicados en clase así como algunos ejemplos creados en las propias clases.
(c) 2020, Gorka Prieto Agujeta <[email protected]>
Primero definimos la interfaz común a cualquier instrumento de la orquesta:
public interface Instrumento {
String getTipo();
String suena();
}
A continuación hacemos que los diferentes instrumentos implementen esta interfaz:
public class Flauta implements Instrumento {
@Override
public String getTipo() {
return "viento";
}
@Override
public String suena() {
return "flauteando";
}
}
public class Tambor implements Instrumento {
@Override
public String getTipo() {
return "percusión";
}
@Override
public String suena() {
return "pom pom";
}
}
// Lo mismo para Guitarra, Piano, etc.
Y ahora gracias al polimorfismo tocamos todos los instrumentos de la orquesta sin necesidad de saber cómo funciona cada uno:
public class Instrumentos {
public static void main(String[] args) {
Instrumento[] orquesta = new Instrumento[5];
creaOrquesta(orquesta);
suena(orquesta, "cuerda");
}
private static void creaOrquesta(Instrumento[] o) {
o[0] = new Guitarra();
o[1] = new Piano();
o[2] = new Flauta();
o[3] = new Tambor();
o[4] = new Guitarra();
}
private static void suena(Instrumento[] orquesta, String tipo) {
for( Instrumento i : orquesta )
if( i.getTipo().equals(tipo) )
System.out.println(i.suena());
}
}
Y la salida por pantalla:
guitarreando
pianeando
guitarreando