Main servivo
public class SerVivoTest {
public static void main(String[] args) {
// Creamos un obxecto SerVivo (instanciació
SerVivo can=new SerVivo("Canis Lupus Familiaris",SerVivo.Reino.ANIMAL,SerVivo.TCelula.EUCARIOTA,true);
// Usamos a súa funcionalidade chamando aos seus métodos
can.informacion();
can.nace();
can.crece();
SerVivo canfillo=can.reproduce();
System.out.println("O fillo é: ");
canfillo.informacion();
System.out.println("O pai é: ");
can.informacion();
can.morre();
SerVivo eucalito=new Arbore("Eucalyptus");
SerVivo eucalitofillo=eucalito.reproduce();
eucalito.informacion();
eucalitofillo.informacion();
}
}
Clase servivo
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package servivo;
/**
* Os enum son similares a clases, pero xa instancian os obxectos entre chaves
* Se utilizan principalmente para restrinxir un dato a un conxunto de valores
* concreto, que son os obxectos definidos entre as chaves
*/
public class SerVivo {
public enum Reino { MONERA, PROTISTA, FUNGO, PLANTA, ANIMAL };
public enum TCelula { PROCARIOTA, EUCARIOTA };
public String nome;
public Reino reino;
public TCelula tipoCelula;
public boolean multicelular;
/** Este constructor debemos poñelo, xa que ao facer o novo deixa de existir
* Si non temos constructor, Java nos facilita un igual, pero si temos un
* Constructor, non.
*
* Alternativamente poderíamos cambiar todos os new SerVivo() a new SerVivo(parametros)
*/
public SerVivo() {
}
/**
* Construtor, permite instanciar un obxecto facilitando as súas características
* @param nome
* @param reino
* @param tcel
* @param mcel
*/
public SerVivo(String nome,Reino reino,TCelula tcel,boolean mcel) {
this.nome=nome; // NECESITO usar this para distinguir entre o parámetro e o atributo
this.reino=reino;
tipoCelula=tcel; // Non necesito this, pero podería facer this.tipoCelula=tcel;
multicelular=mcel;
}
// Visualiza información sobre o ser vivo
public void informacion() {
System.out.println();
System.out.println("---------------------------------------------------");
System.out.println("Nome: "+nome);
System.out.println("Reino "+reino+" Tipo de Célula "+tipoCelula.name());
if (multicelular) System.out.println("Multicelular");
else System.out.println("Unha soa célula");
System.out.println("---------------------------------------------------");
System.out.println();
}
// Método que implementa o sistema de "nacemento" do ser vivo
public void nace() {
System.out.println("Estou Nacendo....");
}
// Método que implementa o sistema de "crecemento" do ser vivo
public void crece() {
System.out.println("Crecendo.....");
}
// Método que implementa o sistema de "reproducción" do ser vivo
public SerVivo reproduce() {
SerVivo novo;
System.out.println("Reproducindome...");
// Creo un novo ser vivo
novo=new SerVivo();
// Poño os atributos...
novo.nome=nome+" (fillo)";
novo.reino=reino;
novo.tipoCelula=tipoCelula;
novo.multicelular=multicelular;
return novo;
}
// Método que implementa o sistema de "morte" do ser vivo
public void morre() {
System.out.println("Morro......");
System.out.println("Adeus mundo cruel !!");
}
}
Clase extends arbore
public class Arbore extends SerVivo {
public Arbore(String name) {
super(name,SerVivo.Reino.PLANTA,SerVivo.TCelula.PROCARIOTA,true);
System.out.println("Creando Árbore....");
}
// Sobrepoño o método reproduce, para obter unha Árbore
// e para visualizar a mensaxe Polinizando...
@Override
public SerVivo reproduce() {
System.out.println("Polinizando....");
return new Arbore(nome+"( fillo )");
}
}
Comentarios recientes