.:N:.
Estou aq treinando o padrão Strategy (ou tentando fazer algo hehe) nem sei se esta correto da forma que fiz mas deixa quieto. Deem uma olhada se esta mais ou menos como deveria ser o padrão Strategy. Mas minha duvida não é esta… o padrão é o de menos. Mas para quem entende de padrões gostaria de saber se o padrão esta nos conformes ou se esta muito errado? hehe.
.
vamos a duvida principal :arrow: POLIMORFISMO
.
observem que na interface CargoAdministrativo criei um metodo exatamente nele, que era para eu testar um troço aq… criei o metodo testaAdm que deverá ser implementado pelas duas classes abaixo dele.
.
O ponto é que eu não consigo usar este metodo quando crio um objeto na classe TestaFuncionario… sei que os metodos que eu implementar na interface Cargo deverei usar nas classes abaixo e poderei sobrepor para melhor adequar ao que quero… só que não estou conseguindo usar um metodo que crio em classes abaixo da interface Cargo.
.
Inicialmente eu tinha criado a classe CargoAdministrativo como abstrata mas mesmo assim não consigo… Vejam como fica com a classe CargoAdministrativo sendo abstrata e implementando a interface Cargo.
.
.
.
Aqui esta o código que uso no testa funcionario para criar um objeto do tipo especialista e mudando de forma dinamica para um funcionario do tipo bibliotecario utilizando o primeiro exemplo apontado acima, logo em seguida tento rodar o metodo testaAdm().
[code]import java.util.ArrayList;
import javax.swing.JOptionPane;
public class TestaFuncionario {
public static void main(String[] args)
{
Funcionario2 a=new Funcionario2();
a.setCargo(new Especialista());
System.out.println(a.getCargo().calculaSalario()); //mostra o conteúdo da classe Especialista
a.setCargo(new Bibliotecario());
System.out.println(a.getCargo().calculaSalario());//mostra o conteudo de Bibliotecario.
a.getCargo().testaAdm(); // aqui esta o problema… não funciona… bah!
}
}
[/code]
.
Quando digo que não consigo usar é quando crio um objeto na classe TestaFuncionario… Como faço para rodar um metodo usando polimorfismo quando não foi declarado na primeira interface ou classe?
.
A codificação da classe Funcionario2() é esta.
.
.
public class Funcionario2 {
private String nome;
private String endereco;
private double salario;
private Cargo cargo; [b] //aqui esta o ponto onde é gerado a ligação com a interface Cargo...[/b]
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public Cargo getCargo() {
return cargo; [b]// aqui eu obtenho acesso a interface Cargo e ao cargo escolhido, se especialista ou bibliotecario.[/b]
}
public void setCargo(Cargo cargo) {
this.cargo = cargo; [b]// usado para mudar de cargo....[/b]
}
public void setSalario(double s)
{
[b]//Parei com isso quando naõ consegui implementar o ponto de minha duvida.
}[/b]
}
Bem é isso. E novamente pergunto… esta mais ou menos parecido com o padrão Strategy hehe… só vou treinar outro padrão quando eu zerar este ai!
See ya!
.:N:.