servivo 2

  Sin categoría

Main

/*
 * 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;

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

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 )");
    }
    
}