Aprendendo :Classe ContaCorrente e ContaPoupança!

33 respostas
vanilton.coelho

Pessoal, alguem poderia ver se esse codigo esta certo, na classe conta poupança eu coloco pro construtor receber 4 paramentros porem chamo o construtor da classe pai e já dou a esse contrutor 3 parametros e completo o 4º por fora, pode acontecer isto ?? no mais alguem pode dizer se há algum erro de POO ??

public class contaCorrente{
	   Private String nomeCorrentista;
	   private int numeroConta;
	   private float saldoConta;
	
	   public contaCorrente(String titular, int nconta, float saldo){
	      this.nomeCorrentista = titular;
	      this.numeroConta = nconta;
	      this.saldoConta = saldo;	   
	   }

	   public void depositar(float valorDeposito){
	      saldoConta = saldoConta + valorDeposito;
	   }

	   public void sacar(float valorSaque){
              if (valorSaque <= saldoConta)
		saldoConta = saldoConta - valorDeposito;
	      else
		System.out.println("Saldo insuficiente!");

	   }
	
	   public void mostrarStatus(){
	      System.out.println(nomeCorrentista);
	      System.out.println(numeroConta);
	      System.out.println("R$ " + saldoConta);
	   }
	}
public class contaPoupanca extends contaCorrente{
	   private float percentAdd;
	
	   public contaPoupanca(String titular, int nconta, float saldo, float adicional){
	      super(titular, nconta, saldo);
	      this.percentAdd = adicional;
	   }

	   public void addRendimentos(float addRendimento){
	      this.saldoConta = this.saldoConta * addRendimento;
	   }
	}

33 Respostas

p5f8

Cara, é issu ai… tá corretíssimo…
só falta corrigir o Private na classe conta corrente senão dá erro de compilação…
e uns getters para nomeCorrentista e numeroConta… no mais, tá blz. :wink:

cv1

Pra que os getters e setters? Ta bom demais assim! :wink:

Ah, os nomes de classes em Java geralmente comecam com letras maiusculas. So um toque de estilo, no mais, o codigo ta otimo.

F

Olá,

Como diria o próprio CV, quanto menos getters melhor. :wink:

]['s

vanilton.coelho

Em que parte o private está incorreto ???porque daria erro de compilação ?

cv1

o P maiusculo - Java eh estritamente sensivel a maiusculas, o que eh otimo, ou teriamos a galera do mainframe escrevendo codigo com o capslock ligado :smiley:

vanilton.coelho

nem tinha percebido, só iria ver na hora da compilação, brigado mesmo !
:stuck_out_tongue:

vanilton.coelho

Pessoal, compilei a classe conta corrente e deu o seguinte erro

C:\Java\contaCorrente.java:18: cannot resolve symbol
symbol  : variable valorDeposito 
location: class contaCorrente
		saldoConta = saldoConta - valorDeposito;
                                          ^
1 error

Alguém sabe dizer oque é ???

vanilton.coelho

Não apareceu , mas a seta do erro aponta para a variavel local que é recebida como parametro “valorDeposito” e só para constar, o primeiro “private” que coloquei como maiúsculo já consertei.

alguma luz ?

smota
<blockquote><div class="quote-author">codigo mal educado:</div> public void sacar(float valorSaque){

if (valorSaque <= saldoConta)

saldoConta = saldoConta - valorDeposito;

else

System.out.println(“Saldo insuficiente!”);
}</blockquote>

E fez-se a luz :mrgreen:

pcalcado

Zahl bless Ctrl+c Ctrl+V :mrgreen:

Quanto ao construtor, um construtor deve receber o mínimo necessário para o objeto funcionar. Você pode ter (sem abuso, por favor!) cosntrutores de conveniência que acrescentam mais coisas, mas na base o construtor deve suprir no mínimo o que sua classe vai precisar.

Uma classe cuja instância não precisa de mais nada pode ter um construtor vazio apenas.

[]s

vanilton.coelho

Não entendi oque tem a ver o contrutor, já está ok, sem problemas, só fiquei em fuvida porque ele não compila quando chega no metodo “Sacar”

pcalcado

:wink:

vanilton.coelho

Valeu a todos pela ajuda, descobri o erro, valeu mesmo Shoes pela ajuda. Meu mal e copiar e colar, se eu tivesse visto antes a linha 18 tinha visto o erro !

vanilton.coelho

Surgiu agora um erro quando tentei compilar conta poupança, nas linhas onde tento usar a variavel “saldoConta”, ele informa que essa variavel é privada, entaum a melhor forma seria qeu criar um get pra recuperar esse dado ???

vanilton.coelho

Surgiu agora um erro quando tentei compilar conta poupança, nas linhas onde tento usar a variavel “saldoConta”, ele informa que essa variavel é privada, entaum a melhor forma seria qeu criar um get pra recuperar esse dado ??? eu achei que a classe poupança herdava essa variavel quando usei o extends ?? ou me enganei ?

1112

De http://www.linux.ime.usp.br/~bani/java/scjp-modificadores.htm:

Ou seja, você deve mudar o acesso à variável, seja usando um get, seja usando outro modificador.

cv1

Ou fazer de um jeito que vc nao precise alterar o modificador ou colocar um getter, assim vc nao quebra o encapsulamento :wink:

_fs

Que jeito cv??

F

Resumindo o que ele quiz dizer. Faca de qualquer jeito mas nao mude o modificador do atributo. :wink:

Mas neste caso os atributos poderiam ser protected assim nao teria problema de acesso nas sub-classes.

]['s

_fs

Não fez muito sentido @.@

O cv falou de não alterar o modificador (que está private) e sem criar um getter @.@

F

LIPE:

Não fez muito sentido @.@

Nao fez sentido o que eu falei, o que o CV falou ou os dois? o.O

Pois é, interpretacao de portugues, em uma mesma frase duas pessoas entenderam diferente. Ta na hora do CV dizeer o que realmente ele falou. :stuck_out_tongue:

]['s

cv1

Povo complicado :stuck_out_tongue:

Eu falei as duas coisas - sem getter e mantendo private. Fica de licao de casa descobrir como fazer :smiley:

_fs

Só retornar todos os dados no método toString da classe, separados por vírgula :mrgreen:

fiquei curioso
abrindo google

odeio você

:mrgreen:

cv1

Lips, uma pesquisada por Law Of Demeter deve dar uma esclarecida. Todo caso, continue lendo :D

So agora que eu notei um problemao com o codigo original do post - que causou boa parte da confusao toda. Voce nao precisa ter acesso aquela variavel nao soh por ser feio e causar caries quebrar o encapsulamento assim, mas sim pq uma ContaPoupanca nao eh uma especializacao de ContaCorrente!

Sao dois tipos de conta, cada uma com suas peculiaridades. Dando uma reformada no sistema, chegamos a isso:

public interface Conta {
  public void debitar(BigDecimal valor);
  public void creditar(BigDecimal valor);
  public void transferir(BigDecimal valor, Conta outraConta);

  public void receberVisita(ContaVisitor visitor);
}
public class ContaCorrente implements Conta {
 ...
}
public class ContaPoupanca implements Conta {

}
public interface ContaVisitor {
  public void visitar(Conta conta);
}
vanilton.coelho

também achei meio estranho contapoupança herdar de contacorrente, porém é uma questão de uns exercicios que estou fazendo de uma apostila da faculdade, e tentei fazer mesmo assim, ainda não estou muito familiarizado com interface, ainda estou estudando o básico !, mas valeu a todos pelas discussões.

Valeu a todos pela ajuda.

F

cv:
So agora que eu notei um problemao com o codigo original do post - que causou boa parte da confusao toda. Voce nao precisa ter acesso aquela variavel nao soh por ser feio e causar caries quebrar o encapsulamento assim, mas sim pq uma ContaPoupanca nao eh uma especializacao de ContaCorrente!

Sao dois tipos de conta, cada uma com suas peculiaridades. Dando uma reformada no sistema, chegamos a isso:

CV sendo charo agora, mas tentando entender. :mrgreen:

Essas conta poupanca que sao embutidas na conta corrente nao seria o caso de uma ContaPoupanca filha de ContaCorrente, já que trabalham com o mesmo saldo, etc?

]['s

F

Galera tenho uma atividade semelhante a essa de conta corrente, só que na minha os clientes devem ser armazenados em vetores e só preciso ter: nome, numero da conta e saldo.
usei o programa do amigo para fazer umas classes pedidas no meu trabalho tambem, como saque e depoisto.
sou iniciante em java, se tiver como me mostrar como ficaria a classe cadastro usando vetor.
desde ja agradeço a ajuda

DavidUser

Vc utiliza de ferramentas apropiadas para escrita em java? Eclipse, NetBeans, etc…

Se não, a utilização dessas ferramentas, elas ajudam e muito a diminuir erros de escrita no código, e fazem uma boa monitoria quando esta aprendendo a programar em Java

F

por enquanto, coloco o algoritmo em notepad e depois compilo pelo cmd, ainda não comecei a usar nenhuma dessas ferramentas.

DavidUser

Comece Usando um “textPad” ou um “Notepad++”

F

sim sim, só queria uma ajuda para montar uma classe de cadastro de clientes usando vetor
nem que me mandem um algoritmo pronto e errado, só pra ter uma noção :frowning:

DavidUser

A idéia é:

class Cliente{
    String nome;
    int numero;
    double saldo;
}
class Banco{
    static Vector<Cliente> v = new Vector();
    
    public Cliente getCliente(int i){
        return v.get(i);
    }
    public void addCliente(Cliente c){
        v.add(c);
    }
}

Dependendo do que seu prof pediu vc podia fazer a adição e busca dos clientes no própio método main, é oq a Classe Banco iria fazer.

sergiotaborda

fabio.patricio:
Olá,

Como diria o próprio CV, quanto menos getters melhor. :wink:

]['s

É cada uma que a gente lê… se não ha getter para nome e numero para que é que eles estão lá ?
Se não poe getter, retira os campos e pronto.

O problema não está em ter muitos getters e sim ter setters. Os maus da fita são os setters.

Criado 20 de fevereiro de 2005
Ultima resposta 25 de set. de 2009
Respostas 33
Participantes 11