Ajuda em Código Cofrinho

Pessoal,

Preciso fazer um trabalho que estou com muita dificuldade. Até sei mais ou menos como fazer o programa em si… mas estou perdida nos comandos do Java. Acredito que vocês irão perceber isto no meu código.

O enunciado:

  1. Programe a classe Cofrinho, supondo um cofrinho que só aceita moedas de 10, 25
    e 50 centavos. A classe deve ter quatro atributos para armazenar: o nome do dono do
    cofrinho, a quantidade de moedas de 50 centavos, a quantidade de moedas de 25
    centavos e a quantidade de moedas de 10 centavos que foram colocadas no cofrinho.
    Faça um construtor para criar um cofrinho vazio.
    Faça os seguintes métodos:
  • depositaUmaMoedaDezCentavos ? o método é acionado a cada moeda de 10
    centavos depositada no cofrinho. Atualiza o atributo;
  • depositaUmaMoedaVinteCincoCentavos ? o método é acionado a cada moeda de
    25 centavos depositada no cofrinho. Atualiza o atributo;
    -depositaUmaMoedaCinquentaCentavos ? o método é acionado a cada moeda de
    50 centavos depositada no cofrinho. Atualiza o atributo;
  • setNome ? altera o nome do dono do cofrinho;
  • getNome ? retorna o nome do dono do cofrinho;
  • calculaTotal - retorna o valor total em reais, armazenado no cofrinho;
  • calculaTotal - retorna o valor total em dólares, armazenado no cofrinho. O método
    recebe como parâmetro o valor do dólar. Obs. Este método é uma sobrecarga do
    anterior.
  1. Programe a classe TesteCofrinho, sem atributos, contendo apenas o método main.
    Esta classe deve usar a classe Teclado (copie-a para dentro do seu projeto). A classe
    de teste deve realizar as seguintes operações, chamando os métodos adequados:
    i. Ler do teclado o nome do dono do primeiro cofrinho e criar um cofrinho vazio
    para ele.
    ii. Depositar duas moedas de 10 centavos no primeiro cofrinho.
    iii. Depositar quatro moedas de 25 centavos no primeiro cofrinho.
    iv. Depositar três moedas de 50 centavos no primeiro cofrinho.
    v. Ler do teclado o nome do dono do segundo cofrinho e criar um cofrinho vazio
    para ele.
    vi. Depositar quatro moedas de 10 centavos no segundo cofrinho.
    vii. Depositar duas moedas de 25 centavos no segundo cofrinho.
    viii. Depositar quatro moedas de 50 centavos no segundo cofrinho.
    ix. Ler do teclado o valor do dólar e armazenar em uma variável.
    x. Alterar o nome do dono do primeiro cofrinho, lendo o novo nome do teclado
    xi. Criar um terceiro cofrinho para o mesmo dono do segundo
    xii. Depositar duas moedas de 50 centavos no terceiro cofrinho.
    xiii. Exibir, na tela o nome do dono do primeiro cofrinho e o valor total contido no
    cofrinho em reais e em dólares.
    xiv. Exibir, na tela o nome do dono do segundo cofrinho e o valor total contido no
    cofrinho em reais e em dólares.
    xv. Exibir, na tela a diferença em reais entre os dois cofrinhos. Obs. o valor deve ser
    positivo. Use o método abs da classe Math.
    xvi. Exibir, na tela, a soma de valores, em reais, depositado nos três cofrinhos.

O que fiz até agora… nem comecei o teste ainda:

[code]public class Cofrinho {

// atributos
private String dono;
private double moedas10;
private double moedas25;
private double moedas50;

// construtor
public Cofrinho (String d, double m10, double m25, double m50) {
    dono = d;
    moedas10 = m10;
    moedas25 = m25;
    moedas50 = m50;
}

// Métodos
public void setDono (String d){
    dono = d;
}

public String getDono() {
    return dono;
}

public void setMoedas10 (double m10){
    moedas10 = m10;
}

public double getMoeda10() {
    return moedas10;
}

public void setMoedas25 (double m25){
    moedas25 = m25;
}

public double getMoeda25() {
    return moedas25;
}

public void setMoedas50 (double m50){
    moedas50 = m50;
}

public double getMoeda50() {
    return moedas50;
}

public void depositaMoeda10 (int mais10){
    moedas10 = moedas10 + mais10;
}

public void depositaMoeda25 (int mais25){
    moedas25 = moedas25 + mais25;
}

public void depositaMoeda50 (int mais50){
    moedas50 = moedas50 + mais50;
}

public void totalReais (double total){
    total = moedas10 + moedas25 + moedas50;
}

}
[/code]

olá,
pelo que entendi dando uma lida rapida no seu enunciado…
vc nunca vai precisar retirar as moedas do cofrinho, vai apenas adicionar e exibir o valor total…

logo, vc nao precisa de metodos get e set para as variaveis moedas10/25/50

siga oq foi dito no enunciado…

crie apenas os metodos fundamentais:
-construtor
-getNome/setNome
-depositaUmaMoedaDezCentavos

  • " VinteCinco "
  • " Cinquenta "
  • calculaTotal / calculaTotal(double dolar)

e por exemplo…

o metodo depositaUmaMoedaDezCentavos deveria ser o seguinte:

public void depositaUmaMoedaDezCentavos(){ this.moedas10++; }

siga essa mesma lógica para as outras moedas

Uma observação:

o enunciado pede para vc criar um cofrinho VAZIO!

logo o construtor nao precisa receber parametros, pois vc teria que passar valores ‘0’ para prencher…

assim:

 // construtor  
     public Cofrinho (String n) {  
         dono = n;  
         moedas10 = 0;  
         moedas25 = 0;  
         moedas50 = 0;  
   }  

Lendo melhor seu problema, achu que vc pode ter ficado com duvida na ultima parte, que pede para calcular o total de moedas em dolar…

Sobrecarregar um metodo é simplesmente existir dois metodos com um mesmo nome, porem com parametros diferente…

ficaria algo assim:


public double total(){
     //LEMBRANDO QUE AQUI VC TEM Q FAZER A CONVERSÃO
     return ((moesdas10 + moedas25 + moedas50)/100);
}

public double total(double valorDolar){
    return (((moedas10 + moedas25 + moedas50)/100) * valorDolar);
}

Espero que tenha ajudado…

acho melhor criar metodos com nomes distintos :x

Pessoal,

Muito, muito obrigada por me responderem… estou com muitos problemas, pois a professora está passando matéria nova toda semana, sem que tenhamos tempo de praticar ou fazer uma correção de exercícios / dúvidas.

Esta parte de sobrecarga não entendi bulufas… o resto ta tranquilo até agora.

Estou fazendo as correções conforme vocês enviaram e depois posto o resultado… Mas agora entendi também o método get e set… Como é fácil de entender com as palavras certas… hehhe

A tarde posto meu progresso bno código ok?

Claro claro, até eu vou tentar fazer este exercício agora… Podemos comparar no final de tudo! :slight_smile:

Abraço.

Concerteza amigo!

O problema é que no enunciado pediu sobrecarga… =/

Funciona como se fosse o “sobrenome” de uma pessoa…
Eu e vc podemos nos chamar ‘joao’, mas meu sobrenome e diferente do seu, logo somos coisas diferentes… [exemplo idiota mas foi tudo que consegui pensar]

uma funçao é identificada nao so por seu nome, mas por seus parametros tbmm…

logo:

public int Numero()

é diferente de :

public int Numero(int numero)

pq possuem escopos diferentes…

xD

[quote]Na verdade não se usa muito isso…
Mas tem que saber que existe neh… [/quote]
Como assim isto não se usa muito? Baseado em que você tirou esta informação?

Exemplo println

public void println(boolean x) public void println(char x) public void println(int x)
Exemplo valueOf

public static String valueOf(boolean b) public static String valueOf(int i) public static String valueOf(long l)
Exemplo split

public String[] split(String regex, int limit) public String[] split(String regex) Sobrecarga é muito utilizada, veja estes exemplos todos tirados da API java, e se procurar tem infinitos desets !!!
É importante conhecer, pois você vai ver muito código e vai desenvolver muito código utilizando sobrecarga.

Att

rsrsrsrsrsr

Tudo bem Astork…

vou editar meu post…

estava me referindo a programação voltada a faculdade, que é o caso deo amigo que criou o topico… eu particulamente prefiro criar metodos com nomes diferentes por exemplo…

Mas eu intendi o que vc quis dizer…

^^

abraço

Pessoal, fui até aqui… mas pelo enunciado preciso saber no final quantas moedas de 10 eu coloquei, assim como as demais (25 e 50 centavos)

Isso terei que fazer no método main?

[code]public class Cofrinho {

// atributos
private String dono;
private double moedas10;
private double moedas25;
private double moedas50;

// construtor
public Cofrinho (String d) {
    dono = d;
    moedas10 = 0;
    moedas25 = 0;
    moedas50 = 0;
}

// Métodos
public void setDono (String d){
    dono = d;
}

public String getDono() {
    return dono;
}

public void depositaUmaMoeda10Centavos(){
    this.moedas10++;
}

public void depositaUmaMoeda25Centavos(){
this.moedas25++;
}

public void depositaUmaMoeda50Centavos(){
    this.moedas50++;
}

public double total (){
    return ((moedas10 + moedas25 + moedas50) / 100);
}

public double total (double valorDolar){
    return ((moedas10 + moedas25 + moedas50) / 100) * valorDolar;
}

}
[/code]

lucasgcp, hehe apenas perguntei, nao precisava editar o post… !!!

Mas vai que tinha lido em algum lugar sobre sobrecarga, iria pedir para postar o artigo/livro para ler e ver os argumentos do mesmo.

Att

cristhianetais, você quer saber a quantidade de moedas certo, bom foi isto que entendi.

Mas você já sabe a quantidade, o que acho que está errado é o valor total.

Repare que aqui, você tem a quantidade de moedas de 10, 25, 50

[code] public void depositaUmaMoeda10Centavos(){
this.moedas10++;
}

public void depositaUmaMoeda25Centavos(){  
     this.moedas25++;  
 }  
   
 public void depositaUmaMoeda50Centavos(){  
     this.moedas50++;  
 }  [/code]

O que precisa ser alterado é a parte do total. Pois o seu método está somando a quantidade e não os valores que cada moeda representa… imagino que seria algo assim

[code] public double total (){
return (moedas10 * 0.10) + (moedas25 * 0.25) + (moedas50 * 0.50);
}

 public double total (double valorDolar){  
     return  (moedas10 * 0.10) + (moedas25 * 0.25) + (moedas50 * 0.50) * valorDolar;  
 }  [/code]

E para obter a quantidade de moedas seria apenas pegar o valor dos atributos moedas10, moedas25, moedas50
Algo assim

public int getMoedas10(){ return moedas10; }

Acredito que isto possa te ajudar.

Att

[quote=cristhianetais]Pessoal, fui até aqui… mas pelo enunciado preciso saber no final quantas moedas de 10 eu coloquei, assim como as demais (25 e 50 centavos)

Isso terei que fazer no método main?
[/quote]

Sim, a quantidade é digitada no main.
Cade o seu método main?

A quantidade começa em 0, depois quando você utilizar dos métodos depositarUmaMoedaDezCentavos() ele irá incrementar o numero de moedas do cofrinho, ou seja, incrementará moedas10.

Ja que vc precisa saber a quantidade de moedas depositadas, da uma olhada neste código se ajuda

public class Cofrinho {   
	  
    // atributos   
    private String dono;   
    private double moedas10;// Qtde moedas de 10
    private double moedas25;// Qtde moedas de 25
    private double moedas50;// Qtde moedas de 50
       
    // construtor   
    public Cofrinho (String d) {   
        dono = d;   
        moedas10 = 0;   
        moedas25 = 0;   
        moedas50 = 0;   
    }   
       
    // Métodos   
    public void setDono (String d){   
        dono = d;   
    }   
       
    public String getDono() {   
        return dono;   
    }   
       
    public void depositaUmaMoeda10Centavos(){   
        this.moedas10++;  // isto é a mesma coisa que moedas10 = moedas10 + 1;
    }   
       
   public void depositaUmaMoeda25Centavos(){   
        this.moedas25++;   
    }   
       
    public void depositaUmaMoeda50Centavos(){   
        this.moedas50++;   
    }   
    
    // Retorna o valor em reais
    public double total (){   
        return (moedas10*0.10 + moedas25*0.25 + moedas50*0.50);   
    }   
       
    // Retorna o valor em Dolar
    public double total (double valorDolar){   
        return (moedas10*0.10 + moedas25*0.25 + moedas50*0.50) / valorDolar;   
    }

	// Retorna a quantidade de moedas de 10
    public double getMoedas10() {
		return moedas10;
	}

    // Retorna a quantidade de moedas de 25
	public double getMoedas25() {
		return moedas25;
	}

	// Retorna a quantidade de moedas de 50
	public double getMoedas50() {
		return moedas50;
	}   
}  

O meu ficou assim cristhian:
Cofrinho:

[code]package br.guj.cofrinho;

public class Cofrinho {
//Atributos
private String nome; // -> Dono!
private int m10; // Quantidade
private int m25; // de
private int m50; // moedas.

//Construtor
public Cofrinho(String n){
	n = nome;
	m10 = 0;
	m25 = 0;
	m50 = 0;
}
//Métodos
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public int depositaUmaMoeda10(){
	return this.m10++;
}
public int depositaUmaMoeda25(){
	return this.m25++;
}
public int depositaUmaMoeda50(){
	return this.m50++;
}
public double calculaTotal(){
	return (double)((m10*0.1)+(m25*0.25)+(m50*0.5));
}
public double calculaTotal(double dollar){
	return (double)(((m10*0.1)+(m25*0.25)+(m50*0.5))*dollar);
}

}
[/code]
TesteCofrinhos:

package br.guj.cofrinho;

import java.util.Scanner;

public class TesteCofrinho {

	public static void main(String[]args){
		Scanner scan = new Scanner(System.in);
		
		System.out.println("Primeiro Dono: ");
		Cofrinho c1 = new Cofrinho(null); //1º Dono.
		c1.setNome(scan.next());
		c1.depositaUmaMoeda10();
		c1.depositaUmaMoeda10();
		c1.depositaUmaMoeda25();
		c1.depositaUmaMoeda25();
		c1.depositaUmaMoeda25();
		c1.depositaUmaMoeda50();
		c1.depositaUmaMoeda50();
		c1.depositaUmaMoeda50();
		c1.depositaUmaMoeda50();
		
		System.out.println("Segundo Dono: ");
		Cofrinho c2 = new Cofrinho(null); //2º Dono.
		c2.setNome(scan.next());
		c2.depositaUmaMoeda10();
		c2.depositaUmaMoeda10();
		c2.depositaUmaMoeda10();
		c2.depositaUmaMoeda10();
		c2.depositaUmaMoeda25();
		c2.depositaUmaMoeda25();
		c2.depositaUmaMoeda50();
		c2.depositaUmaMoeda50();
		c2.depositaUmaMoeda50();
		c2.depositaUmaMoeda50();
		
		System.out.println("Valor do Dollar: ");
		double d = scan.nextDouble();
		
		System.out.println("Novo dono do Cofrinho 1: ");
		c1.setNome(scan.next());
		
		Cofrinho c3 = new Cofrinho(null);
		c3.setNome(c2.getNome()); //Mesmo donos...
		c3.depositaUmaMoeda50();
		c3.depositaUmaMoeda50();
		
		System.out.println(c1.getNome()+" R$"+c1.calculaTotal()+" - $"+c1.calculaTotal(d));
		System.out.println(c2.getNome()+" R$"+c2.calculaTotal()+" - $"+c2.calculaTotal(d));
		System.out.println("Diferença: "); //Não fiz porque não sei usar esse método abs (math).
		System.out.println("Soma de valores: "+(c1.calculaTotal()+c2.calculaTotal()+c3.calculaTotal()));
	}
}

Espero ter entendi bem o enunciado…
OBS: Claro que tem como aprimorar para diminuir os numeros de linhas do código, eu apenas fiz passo-a-passo do enunciado.
Abraço

parabens, agora ela pode copiar o de vcs e mostrar pro professor… aff
:evil:

[quote=alucardeck]parabens, agora ela pode copiar o de vcs e mostrar pro professor… aff
:evil: [/quote]
Torço por isto, sabe porque? É de profissionais/estudantes assim que eu quero no mercado, assim ganharei deles facilmente… Cada um sabe o que faz! :lol:
Eu apenas tentei ajuda-lo, cabe a ele entender ou não. =)
P.S.: O código nem está 100% feito e está totalmente em rabisco…

Abraço,

[quote=felipebonezi][quote=alucardeck]parabens, agora ela pode copiar o de vcs e mostrar pro professor… aff
:evil: [/quote]
Torço por isto, sabe porque? É de profissionais/estudantes assim que eu quero no mercado, assim ganharei deles facilmente… Cada um sabe o que faz! :lol:
Eu apenas tentei ajuda-lo, cabe a ele entender ou não. =)
P.S.: O código nem está 100% feito e está totalmente em rabisco…

Abraço,[/quote]

Parece um antigo professor meu que disse:

“Tomara que vcs tenham dificuldade na minha matéria, pq qto menos pessoas no mercado, mais eu ganho dinheiro”

Que forma correta de ver o mundo não?
aff…