03dZoologico

Anuncio
Herencia y polimorfismo
Se pide implementar un zoológico, con la ayuda de la herencia y el
polimorfismo.
Para ello deberéis crear una jerarquía de clases, y a partir de ellas
instanciar diferentes tipos de animales e invocar a sus métodos para
comprobar el resultado obtenido, y de esta forma aprender la manera de
usar tanto la herencia como el polimorfismo.
La jerarquía de clases será la siguiente:
Una clase padre Animal, de la que heredarán otras tres, que serán
Terrestre, Aereo y Acuatico.
TTerrestre
TAnimal
TAereo
TAcuatico
La Clase Animal
La clase padre, Animal, tendrá los siguientes atributos, que deberán ser
privados:



nMiembros : entero // número de patas, aletas, etc...
pico : boolean // indica con true si el animal tiene o no pico
pelaje : String // Indica mediante los valores: pelos, escamas o
plumas, el tipo de pelaje que tiene.
En cuanto a los métodos de la clase Animal, habrá que definir los siguientes:




Constructor sin argumentos y con argumentos.
Todos los get y los set para cada uno de los atributos de la clase
Método comer, que será un método abstracto.
Método saludar, que será un método virtual, y lo que hará será
simplemente visualizar por pantalla el siguiente mensaje:
“Hola, soy un animalito”
La Clase Terrestre
Esta clase heredará de la clase Animal y además de todos sus métodos
y atributos, tendrá los siguientes:
Atributos propios:


Continente : String // Indica el continente donde vive
Dieta : String // Indica el tipo de dieta del animal terrestre.
Estos datos tendrán los siguientes posibles valores:


Continente  Europa, Asia, Africa, Oceania, America
Dieta  Herbivora, Carnivora, Omnivora.
Métodos propios:




Constructores con argumentos y sin argumentos.
Métodos get y set para todos los atributos anteriormente
mencionados
Método saludar que deberá ser una redefinición del de la clase
padre. Como este animal es de la clase terrestre, deberá mostrar
la siguiente información por pantalla:
“Hola, soy un animalito terrestre”
Método comer, que en este caso deberá ser implementado por
primera vez (tened en cuenta que el método en la clase padre es
abstracto). Deberá aparecer por pantalla el siguiente mensaje:
“Como soy un animal terrestre mi dieta es herbívora”. Donde la
palabra herbívoro podría ser cualquiera de los valores que puede
adoptar el atributo Dieta.
La clase Acuatico
Una vez más esta clase hereda de la clase Animal. Los nuevos atributos
y métodos de esta clase serán los siguientes:
Atributos propios:


TieneDientes : boolean; // Esta variable indica si tiene o no dientes
TieneAgallas : boolean; // Esta otra variable indicará si tiene agallas
Métodos propios:




Constructor con argumentos y sin argumentos.
Métodos get y set para todos los atributos nuevos.
Método saludar, que ahora deberá decir “Hola, soy un animal
acuático”. Por supuesto este método debe estar redefinido aquí
también.
Método comer. Deberá mostrar el siguiente mensaje por pantalla:
“Como soy un animal acuático, me alimento de pescaditos”.
La Clase Aereo
Al igual que la clase Terrestre, esta clase hereda de la clase Animal. Los
nuevos atributos y métodos que tendrá esta clase son los siguientes:
Atributos propios:


volador : boolean; // Indica si el ave es capaz de volar o no.
colorPlumaje : string; // Indica el color del plumaje del ave.
Métodos




Constructor con argumentos y sin argumentos.
Métodos get y set para todos los atributos anteriormente
mencionados
Método saludar que deberá ser una redefinición del de la clase
padre. Debido a que este animal es aéreo, el método saludar
deberá mostrar por pantalla el siguiente mensaje:
“Hola, soy un animal aéreo”
Método comer. Una vez más el método comer hay que definirlo,
ya que en la clase padre es abstracto. En este caso, el mensaje a
mostrar por pantalla será el siguiente: “Como soy un animal
aéreo, me alimento de insectos”
La clase Acuatico
Una vez más esta clase hereda de la clase Animal. Los nuevos atributos
y métodos de esta clase serán los siguientes:
Atributos propios:


TieneDientes : boolean; // Esta variable indica si tiene o no dientes
TieneAgallas : boolean; // Esta otra variable indicará si tiene agallas
Métodos propios:




Constructor con argumentos y sin argumentos.
Métodos get y set para todos los atributos nuevos.
Método saludar, que ahora deberá decir “Hola, soy un animal
acuático”. Por supuesto este método debe estar redefinido aquí
también.
Método comer. Deberá mostrar el siguiente mensaje por pantalla:
“Como soy un animal acuático, me alimento de pescaditos”.
public abstract class Animal
{
private int nMienbros;
private boolean pico;
private String pelaje;
public Animal()
{
}
public Animal(int nM, boolean pi, String pe)
{
nMiembros = nM;
pico = pi;
pelaje = pe;
}
public int getNMiembros()
{
return nMiembros;
}
public void setNMiembros(int nM)
{
nMiembros = nM;
}
public boolean getPico()
{
return pico;
}
public void setPico(boolean pi)
{
pico = pi;
}public String getPelaje()
{
return pelaje;
}
public void setPelaje(String pe)
{
pelaje = pe;
}
public void saludar()
{
System.out.print(" Hola, soy un animalito ");
}
public abstract void comer();
}
public class Terrestre extends Animal
{
private String continente;
private String dieta;
public Terrestre()
{
super(); // lo asumiría por defecto
continente = "";
dieta = "";
}
public Terrestre(int nM, boolean pi, String pe, String co, String di)
{
super(nM, pi,pe);
continente = co;
dieta = di;
}
public String getContinente()
{
return continente;
}
public void setContinente(String co)
{
continente = co;
}
public String getDieta()
{
return dieta;
}
public void setDieta(String di)
{
dieta = di;
}
public void saludar() //método sobrescrito redefinido
{
super.saludar();
System.out.println("terrestre");
}
public void comer()
{
System.out.println("Como soy un animal terrestre mi dieta es "+ dieta);
}
}
public class Acuatico extends Animal
{
private boolean tieneDientes;
private boolean tieneAgallas;
public Acuatico()
{
}
public Acuatico(int nM, boolean pi, String pe, boolean tD, boolean tA)
{
super(nM, pi,pe);
tieneDientes = tA;
tieneAgallas = tA;
}
public boolean gettieneDientes()
{
return tieneDientes;
}
public void settieneDientes(boolean tD)
{
tieneDientes = tD;
}
public boolean gettieneAgallas()
{
return tieneAgallas;
}
public void settieneAgallas(boolean tA)
{
tieneAgallas = tA;
}
public void saludar() //método sobrescrito redefinido
{
super.saludar();
System.out.println("acuatico");
}
public void comer()
{
System.out.println("Como soy un animal acuatico me alimento de pescaditos ");
}
}
public class Aereo extends Animal
{
private boolean puedeVolar;
private String colorPlumaje;
public Aereo()
{
}
public Aereo(int nM, boolean pi, String pe, boolean pV, String cP)
{
super(nM, pi,pe);
puedeVolar = pV;
colorPlumaje = cP;
}
public boolean getpuedeVolar ()
{
return puedeVolar;
}
public void setpuedeVolar (boolean pV)
{
puedeVolar = pV;
}
public String getcolorPlumaje ()
{
return colorPlumaje;
}
public void setcolorPlumaje (String cP)
{
colorPlumaje = cP;
}
public void saludar() //método sobrescrito redefinido
{
super.saludar();
System.out.println("aereo");
}
public void comer()
{
System.out.println("Como soy un animal aereo me alimento de insectos ");
}
}
Descargar