Polimorfismo + interface

5 respostas
T

Galera, essa semana estava estudando polimorfismo, herança e ontem comecei com interface, e pra ser sincero achei espetacular…tudo isso…rsrs

Ai…me veio algo em mente…

vamos supor que eu tenha uma sistema de contas a pagar, e eu pague nesse sistema; funcionarios, fornecedores, bancos, etc…

eu poderia usar uma interface pagamento?

nessa interface eu teria um método que retorna o valor a ser pago para todas essas classes…ou seja, todas essas classes vai ter que pagar algum…valor, ai ela seria um classe abstrata…certo?

assim, eu teria uma classe funcionario, forncedores, etc…e assim eu posso expandir a classe funcionario para, funcionarioAssalariado, funcionarioComissionado…etc…e chamar tudo isso de forma polimorficamente…

e depois…eu poderia ter uma outra interface cadastros?

nessa interface eu terei outras classes que vão cadastrar tudo que vai ser pago acima?

como eu fiz tudo isso em swing, passam-se os anos quero migar tudo pra outra base de dados, além de jogar pra web…usando servlet…etc…

Estou viajando muito?

é que estou vendos as possibilidades disso tudo…heheh

sabe quando vc ganha o primeiro carrinho de controle remoto?;;;;;;sou eu…depois de ver heranca…polimorfismo…e interface…rsrsrs

Peço a ajuda de vocês sobre meu raciocínio acima…e dicas…

t++

5 Respostas

J

Tipo isso?

public interface Pagavel{
   public void pagar(double valor);
   public double getValor();
}

public class Funcionario implements Pagavel{
   private int horas;
   private double valorHora;

   public Funcionario(int horas, double valorHora){
      this.horas = horas;
      this.valorHora = valorHora;
   }

   public void pagar(double valor){
      System.out.println(valor+" pago ao funcionario");
   }

   public double getValor(){
       return horas*valorHora;
   }
}

public class Fornecedor implements Pagavel{
   private int quantidadeFornecida;
   private double valorUnitario;

   public Fornecedor(int qtd, double val){
      this.quantidadeFornecida = qtd;
      this.valorUnitario = val;
   }

   public void pagar(double valor){
      System.out.println(valor+" pago ao fornecedor");
   }

   public double getValor(){
      return quantidadeFornecida*valorUnitario;
   }
}


Pagavel pag = new Funcionario(150, 25);
pag.pagar(pag.getValor());

pag = new Funcionario(150, 10);
pag.pagar(pag.getValor());

pag = new Fornecedor(300, 1500);
pag.pagar(pag.getValor());
T
"jairelton":
Tipo isso?
public interface Pagavel{
   public void pagar(double valor);
   public double getValor();
}

public class Funcionario implements Pagavel{
   private int horas;
   private double valorHora;

   public Funcionario(int horas, double valorHora){
      this.horas = horas;
      this.valorHora = valorHora;
   }

   public void pagar(double valor){
      System.out.println(valor+" pago ao funcionario");
   }

   public double getValor(){
       return horas*valorHora;
   }
}

public class Fornecedor implements Pagavel{
   private int quantidadeFornecida;
   private double valorUnitario;

   public Fornecedor(int qtd, double val){
      this.quantidadeFornecida = qtd;
      this.valorUnitario = val;
   }

   public void pagar(double valor){
      System.out.println(valor+" pago ao fornecedor");
   }

   public double getValor(){
      return quantidadeFornecida*valorUnitario;
   }
}


Pagavel pag = new Funcionario(150, 25);
pag.pagar(pag.getValor());

pag = new Funcionario(150, 10);
pag.pagar(pag.getValor());

pag = new Fornecedor(300, 1500);
pag.pagar(pag.getValor());

e não é que é isso mesmo!?..rsrs..perfeito...muito bom..

Mais uma dúvida;

Quando eu entro no mundo do swing, esse código ficaria fora do código do swing? Qual eu programo primeiro? classes do programa ou as classes do swing?

Não estou querendo saber como se faz o swing minha dúvida é como dividir isso, a idéia é mais ou menos como se programa em php?...onde se mistura o html com o php.;..?

Desculpe a enchurrada de perguntas, é que estou fazendo meu primeiro programa, e já quero usar o swing.

Abraços...e grato

J

O codigo da interface grafica usa essas classes, nada deve ser misturado…

Se você quer fazer um formulario para cadastrar um funcionario por exemplo, você faria um JFrame com os campos e dentro da classe você teria um objeto da classe Funcionario de onde você tiraria os dados para preencher os campos do JFrame…

obs.: PHP é o maior pesadelo de manutenção que existe…

T

“jairelton”:
O codigo da interface grafica usa essas classes, nada deve ser misturado…

Se você quer fazer um formulario para cadastrar um funcionario por exemplo, você faria um JFrame com os campos e dentro da classe você teria um objeto da classe Funcionario de onde você tiraria os dados para preencher os campos do JFrame…

obs.: PHP é o maior pesadelo de manutenção que existe…

HUm…acho que entendi…eu fiz assim:

Criei uma nova classe com o nome JFrameFuncionario e chamei o resultado assim:

private void calcular(java.awt.event.ActionEvent evento) {                          
    Pagavel pag = new Funcionario(150, 25);
    JOptionPane.showMessageDialog(null, pag.getValor());
}

A idéia é essa neh, faço os setters e getters de cada classe e só chamo…

foi assim que os caras fizeram o java…neh

E é assim que eles criam API?..

acho que to sacando…

Abraços…

J

É mais ou menos por aí mesmo…

Criado 17 de setembro de 2006
Ultima resposta 19 de set. de 2006
Respostas 5
Participantes 2