Duvida - Alterar comportamento em tempo de execução(strategy)

0 respostas
Diego_Frk

Boa tarde pessoal, estou fazendo alguns exercicios da faculdade e não estou compreendendo o que foi proposto nesse:

Modificar a superclasse de modo que a mesma possa alterar comportamento em tempo
de execução, inserindo métodos que possam receber objetos dotipo “Ciclo_Basico” e
“Ciclo_Profissionalizante”.

package strategy;
public class Simula_Strategy {
    public static void main(String args[]){
        Ciencias_Exatas curso1 = new Ciencia_Computacao();
        Ciencias_Exatas curso2 = new Fisica();
        
        curso1.condicao();
        curso1.especifica_disciplina_basico();
        curso1.especifica_disciplina_profissionalizante();
        curso1.grade_curricular();
        
        curso2.condicao();
        curso2.especifica_disciplina_basico();
        curso2.especifica_disciplina_profissionalizante();
        curso2.grade_curricular();
    }
}

package strategy;
public abstract class Ciencias_Exatas {
    Ciclo_Basico ciclo_basico;
    Ciclo_Profissionalizante ciclo_profissionalizante;
    public void especifica_disciplina_basico(){
    ciclo_basico.cursa_disciplina_basico();
    }
    public void especifica_disciplina_profissionalizante(){
    ciclo_profissionalizante.cursa_disciplina_profissional();
    }
    public abstract void grade_curricular();
    public void condicao(){
        System.out.println("Matricula nas Disciplinas");
    }
}

package strategy;
public class Disciplinas_Profissionalizante implements Ciclo_Profissionalizante{
    public void cursa_disciplina_profissional(){
        System.out.println("Linguagem Programaçao I");
    }
}

package strategy;
public class Disciplinas_Basico implements Ciclo_Basico{
    public void cursa_disciplina_basico(){
        System.out.println("Cursando Fisica I");
    }
}

package strategy;
public class Ciencia_Computacao extends Ciencias_Exatas {
    
    public Ciencia_Computacao(){
    ciclo_basico = new Disciplinas_Basico();
    ciclo_profissionalizante = new Disciplinas_Profissionalizante();
    }
    public void grade_curricular(){
        System.out.println("Disciplinas do Curso de Ciencia da Computaçao");
    }
}

package strategy;
public class Fisica extends Ciencias_Exatas{
    public Fisica(){
    ciclo_basico = new Disciplinas_Basico();
    ciclo_profissionalizante = new Disciplinas_Profissionalizante();
    }
public void grade_curricular(){
    System.out.println("Disciplinas do curso de Fisica");
    }
}

package strategy;
public interface Ciclo_Basico {
    public void cursa_disciplina_basico();
}

package strategy;
public interface Ciclo_Profissionalizante {
    public void cursa_disciplina_profissional();
}
Criado 13 de junho de 2016
Respostas 0
Participantes 1