Me ajudem por favor! Polimorfismo

Olá a todos. Estou no 5° periodo de Sistemas de Informaçao, e me foi passado o seguinte exercicio que deve ser feito usando Polimorfismo e Herança:

Neste trabalho deve-se implementar um pequeno sistema no qual iremos gerenciar diversos tipos de contas bancárias. São elas: Conta Corrente, Conta Poupança e Conta investimento. Cada conta, apesar de ser diferente apresenta características em comum como: saldo, proprietário e tipo. Além disso, devem possuir os métodos sacar, que debita o valor sacado do saldo; depositar, que acrescenta o valor depositado ao saldo; e o método atualizar que atualiza o saldo a partir de uma taxa de juros fixa, sendo 0% para a conta corrente, 0,5% para a poupança e 1% para a conta investimento. O atributo proprietário deve conter os atributos nome e cpf, sendo aconselhável que seja criado uma nova classe para representá-lo. Deve-se criar uma classe Main com os métodos responsáveis por demonstrar o funcionamento do sistema. Abaixo segue uma sugestão para a classe Main:

[code]public class Main {
/**

  • @param args the command line arguments
    */
    public static void main(String[] args) {
    Cliente filipe = new Cliente(“Filipe”, “05070194666”);
    System.out.println(“Vou testar a conta corrente”);
    Conta corrente = new ContaCorrente(filipe);
    testaConta(corrente);
    System.out.println(“Vou testar a conta poupanca”);
    Conta poupanca = new Poupanca(filipe);
    testaConta(poupanca);
    System.out.println(“Vou testar a conta investimento”);
    Conta investimento = new ContaInvestimento(filipe);
    testaConta(investimento);
    }
    public static void testaConta(Conta conta){
    //Deve ser implementado
    }
    }[/code]

Como saída espera-se o seguinte:

Vou testar a conta corrente Proprietario: Filipe CPF: 05070194666 Tipo: Conta Corrente Saldo: 0.0 Vou depositar 100,00... Proprietario: Filipe CPF: 05070194666 Tipo: Conta Corrente Saldo: 100.0 Vou atualizar... Proprietario: Filipe CPF: 05070194666 Tipo: Conta Corrente Saldo: 100.0 Vou testar a conta poupanca Proprietario: Filipe CPF: 05070194666 Tipo: Poupanca Saldo: 0.0 Vou depositar 100,00... Proprietario: Filipe CPF: 05070194666 Tipo: Poupanca Saldo: 100.0 Vou atualizar... Proprietario: Filipe CPF: 05070194666 Tipo: Poupanca Saldo: 100.5 Vou testar a conta investimento Proprietario: Filipe CPF: 05070194666 Tipo: Investimento Saldo: 0.0 Vou depositar 100,00... Proprietario: Filipe CPF: 05070194666 Tipo: Investimento Saldo: 100.0 Vou atualizar... Proprietario: Filipe CPF: 05070194666 Tipo: Investimento Saldo: 101.0

O professor tinha nos passado varios exemplos, e eu os copiei para o pendrive, mas quando cheguei em casa, o fdp estava queimado, e eu perdi todos os codigo de exemplos sobre polimorfismo que ele passou, e tenho que entregar o trabalho na segunda. Gostaria que alguem resolvesse pra mim só a conta corrente para eu saber como é base para a solução. Obrigado a todos.

Uma coisa eu digo… se você não sabe resolver para a conta corrente, não saberá resolver os demais …

Então, nem adianta … :cry:

Mas eu posso fazer… por 50 Reais! E olha que está barato … :wink:

Nossa primeiro tira essas letras emo-core e organiza seu código

Não podia colocar a cor da fonte com menos contraste e mais legível?

\o/

Acho que difícil encontrar alguém que faça pra você…(pelo menos de graça)…mas pagando bem, que mal tem…haha…com um incentivo financeiro com certeza aparece um disposto.

[code]public class Conta {
//atributos privados
getter e setter
metodos

class ContaCorrente extends Conta {
/*
métodos sacar
depositar
e atualizar

*/

class ContaPoupanca extends Conta {

//metodos depositar e atualizar

obs: Nessas classe conta corrente e c poupança vc tem que usar polimorfismo que é usar o mesmo metodo de Conta só que de forma diferente (Ah…num sei eplicar direito, to tentando)
class Cliente{

[/code]

e a classe principal

Bom…espero que eu tenha te ajudado mais do que te confundido…

[b]Consegui fazer todos os métodos.

Porém, estou com um problema, quero que imprima:

Vou depositar (valor)

Vou sacar (valor)

Vou atualizar (valor)

como faço para sair o valor sempre atualizado quando mudá-lo?[/b]

Seria mais fácil te ajudar se você postasse o código aki entre as tags
colchetes code, fecha colchetes
colchetes / code fecha colchetes

ah sim xD valeu!

package contabancaria;

public class Conta extends Cliente{

public String tipo;
protected double saldo;
protected double juros;
private Cliente cliente;


public Conta(){
    cliente = new Cliente();
}

    public void setJuros(double juros) {
        this.juros = juros;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public double getJuros() {
        return juros;
    }

    public double getSaldo() {
        return saldo;
    }

    public String getTipo() {
        return tipo;
    }

    public void deposita(double valor) {
         this.setSaldo(this.getSaldo() + valor);
        System.out.println("Vou depositar: "+ valor + "\n"+ imprime()+"\n");
}

      public boolean saque(double valor) {
         if (this.getSaldo() >= valor) {
             System.out.println("Vou sacar" + valor+"\n");
             this.setSaldo(this.getSaldo() - valor);
             System.out.println("Seu saldo restante é: "+ this.saldo);
             return true;
         } else {
             return false;
         }
    }

      public void atualiza (){
          this. saldo = (this.saldo * juros)+(this.saldo);
          System.out.println("Vou atualizar" +"\n" +imprime()+"\n");
      }

      public void testaConta(Conta conta){
          System.out.println(imprime());
 }

      public String imprime(){
          return "Proprietário: " +nome +" - " + cpf + " "+"\n" + "Tipo: " + tipo + "\n"+ "Saldo: " + saldo + "\n";
      }
    }
       //*public static void testaConta(Conta conta){
       // System.out.println("Proprietário:" );
    // }

acho q fiz algo errado ae. pq qdo chamo a classe principal:

Cliente cliente = new Cliente("CArlos", "55.62.5.66"); System.out.println("Vou testar a conta corrente..."); Conta corrente = new ContaCorrente(cliente);

a conta corrente exibe é o meu nome e meu cpf ao invés da variavel cliente q atribuí os valores. o que será q fiz de errado?

Vc crou tudo dentro de uma mesma classe?Oo

Não, criei 6 classes contando com a main: CONTA, CONTA POUPANÇA, CONTA CORRENTE, CONTA INVESTIMENTO, CLIENTE. e coloquei as CC, CP, e CI pra herdar de CONTA.

Posta pra mim a classe main…?

[code]
package contabancaria;

public class Main {

public static void main(String[] args) {
  Cliente lucas = new Cliente("Lucas", "06597230698");
  Cliente cliente = new Cliente("CArlos", "55.62.5.66");
  System.out.println("Vou testar a conta corrente...");
  Conta corrente = new ContaCorrente(cliente);
  corrente.testaConta(corrente);
  corrente.deposita(150);
  corrente.atualiza();
  System.out.println("Vou testar a Conta Poupança...");
  Conta poupanca = new Poupanca(lucas);
  poupanca.testaConta(poupanca);
  poupanca.deposita(150);
  poupanca.atualiza();
  System.out.println("Vou testar a Conta Investimento...");
  Conta investimento = new ContaInvestimento(lucas);
  investimento.testaConta(investimento);
  investimento.deposita(160);
  investimento.deposita(300);
  investimento.atualiza();
  
 

}

public static void testaConta( Conta conta){ //este é um metedo q faalta implantar, o certo pra chamar as contas, mas nao tenho nem ideia de como implantálo.

}

}[/code]

VC o implementa mais ou menos dessa forma:

[code]public class TestaConta {
public static void main(String args []){
ContaCorrente cc = new ContaCorrente();
ContaPoupança cp = new ContaPoupança();
ContaInvestimento ci = new ContaInvestimento();

cc.setTitular(“Carlos”);
cc.saldo = 1000;
cc.saca(300);
cc.atualiza();//faz a mesma coisa para poupança e investimento

System.out.println(cc.getTitular()+ cc.atualiza());

}

}
[/code]

obrigado, vou tentar aki, vou deixar também os códigos da classe poupança, fiz igual pra todas as outras, ae vc avalia se está tudo certo ok.

[code]package contabancaria;

public class Poupanca extends Conta {

public Poupanca (String nome, String cpf){
    this.nome = nome;
    this.cpf = cpf;
}
public Poupanca (Cliente lucas){

        this.juros = 0.005d;
        this.tipo = "Poupança";
        this.saldo = 0;

}

}[/code]

[b]Sabe o que não to entendendo? é que ele quer que em um único método, esse “testaConta(corrente);” imprima isso tudo abaixo, isso para cada conta utilizando o mesmo método:

Proprietario: Filipe CPF:
05070194666
Tipo: Conta Corrente
Saldo: 0.0
Vou depositar 100,00…
Proprietario: Filipe CPF:
05070194666
Tipo: Conta Corrente
Saldo: 100.0
Vou atualizar…
Proprietario: Filipe CPF:
05070194666
Tipo: Conta Corrente
Saldo: 100.0[/b]

Como faço um único método imprimir isso tudo?

E se vc fizesse uma classe com o método main que testasse todas essas contas?
Acho que seria o ideal

vou tentar implementar ela aqui, pra ver o q vai dar. rs. Só estranhei porque ele usou o static pra declarar e já dentro da main. olha:

[code]public class Main {
/**

  • @param args the command line arguments
    */
    public static void main(String[] args) {
    Cliente filipe = new Cliente(“Filipe”, “05070194666”);
    System.out.println(“Vou testar a conta corrente”);
    Conta corrente = new ContaCorrente(filipe);
    testaConta(corrente);
    System.out.println(“Vou testar a conta poupanca”);
    Conta poupanca = new Poupanca(filipe);
    testaConta(poupanca);
    System.out.println(“Vou testar a conta investimento”);
    Conta investimento = new ContaInvestimento(filipe);
    testaConta(investimento);
    }
    public static void testaConta(Conta conta){
    //Deve ser implementado
    }
    }[/code]

Vc viu o código que te mandei?
Tenta fazer daquela forma sem esse método “Testa Conta” e vê se funciona, pq eu tbm não tô entendendo pra que esse método aiii…

o que ta pegando é na hora de chamar o saldo dentro dele, nao da pq é tipo void, nao tem como atulizar o saldo. Como faço?

Dá algum erro??
O que acontece exatamente?