.: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:.