Criando e usando um objeto! [RESOLVIDO]

29 respostas
stephany_13

Olá pessoa fiz esses dois procedimentos...

package Dados;

/**
 *
 * @author Stephany
 */
public class Conta {
    
   public int numero;
   public String dono;
   public double saldo;
    public double limite;
      
}
package Procedimentos;

import Dados.Conta;

/**
 *
 * @author Stephany
 */
public class Programa {
    public static void main(String[] args) {
        Conta minhaConta;
        minhaConta = new Conta();
        
        minhaConta.dono ="Duke";
        minhaConta.saldo = 1000.0;
        
        System.out.println("Saldo atual: "+minhaConta.saldo);
        
    }
    
}

PORÉM QUANDO EU VOU EXECUTAR APARECE A SEGUINTE MENSAGEM

run:
Erro: O método principal não foi encontrado na classe Procedimentos.Programa; defina o método principal como:
   public static void main(String[] args)
Java Result: 1

MAS NO PACOTE PROCEDIMENTO E CLASSE PROGRAMA EU COLOQUEI O MÉTODO MAIN....
O QUE SERÁ QUE ESTÁ ERRADO?

29 Respostas

Rodrigo_Sasaki

como você está executando a classe?

stephany_13

Como assim, Rodrigo?
Por favor peço que tenha paciência pois sou iniciante!
tipo eu executo a classe Programa, onde eu mesmo declarei o método main!

Rodrigo_Sasaki

Sim sim, o que eu quero saber é como você está executando a sua classe.

Você está executando ela a partir de uma IDE? (Eclipse, NetBeans, IntelliJ IDEA) ?
Você está compilando via javac e executando via java em linhas de comando?
Você criou um arquivo jar e está tentando executá-lo ?

stephany_13

Eu uso Netbeans

stephany_13

Ai quando eu vou sacar e depositar o Saldo não muda… Continua 1000.0 REAIS.
sendo que eu dei o valor de 200 para sacar e 500 para depositar.

package Dados;

/**
 *
 * @author Stephany
 */
public class Conta {
    
   public int numero;
   public String dono;
   public double saldo;
    public double limite;
    public int Saca;
   public int Deposita;      
}
obs: adicionei as variáveis Saca e Deposita

package Procedimentos;

import Dados.Conta;

/**
 *
 * @author Stephany
 */
public class Programa {
    public static void main(String[] args) {
        Conta minhaConta;
        minhaConta = new Conta();
        
        minhaConta.dono ="Duke";
        minhaConta.saldo = 1000.0;
        
        // saca 200 reais
        minhaConta.Saca = 200;
        
        minhaConta.Deposita =500;
      
        
        System.out.println("Saldo atual: "+minhaConta.saldo);
        
    }
    
}

Acho que estou fazendo uma confusão rsrs
me ajudem??? :cry:

Rodrigo_Sasaki

Ué, peraí… Sua classe está sendo executada? Eu achei que estava com problemas.

stephany_13

NA PRIMEIRA QUE EU TE MANDEI, NÃO EXECUTA…
MAS QUANDO EU ADICIONO OS VALORES DE SACA E DEPOSITA ELE COMPILA NORMAL…

TA MUITO CONFUSO ISSO…

TEM ALGUMA COISA ERRADA E NÃO SEI O QUE É!

stephany_13

AGORA EXECUTO…
MAS EU CONTINUO COM O PROBLEMA DE ELE NÃO TIRAR 200 E DEPOSITAR 500

O QUE PODE SER?

Rodrigo_Sasaki

Acontece que você está mexendo com atributos quando deveria utilizar métodos.

métodos dão comportamento à sua classe, no caso, manipulam o saldo. A sua classe conta não deve ter atributos saca e deposita, e sim métodos sacar() e depositar(). Veja:
class Conta{
	
	private double saldo;
	
	public void sacar(double valor){
		this.saldo = saldo - valor;
	}
	
	public void depositar(double valor){
		this.saldo = saldo + valor;
	}
	
	public double consultarSaldo(){
		return saldo;
	}
	
}
Se você quiser sacar um valor da conta, invoca o método sacar e ele manipulará o saldo. O mesmo para depositar.

Fez sentido?

stephany_13

Então ficaria asssim???

package Dados;

/**
 *
 * @author Stephany
 */
public class Conta {
    
   public int numero;
   public String dono;
   public double saldo;
    public double limite;
    public int Saca;
    public int Deposita;
    
    public void saca (double valor) {
        this.saldo = 1000 - 200;  
    }
    public void depositar (double valor){
    this.saldo = 1000 + 500;
     }
    public double consultarSaldo() {
    return saldo;
    }
}

Fiz assim como te mandei e não mudou o valor também…
Esse THIS serve para que?

Entendi algumas partes apenas!

Rodrigo_Sasaki
Não, a ideia é você simplesmente usar os métodos da conta. assim:
public static void main(String[] args){
		Conta conta = new Conta();
		
		conta.depositar(1000);
		conta.sacar(500);
		System.out.println("O saldo da conta é: "+conta.consultarSaldo());
		
	}
stephany_13

Estou estudando pela apostila da Caelum e apenas está assim:

class TestaAlgunsMetodos {
public static void main(String[] args) {
 // criando a conta
 Conta minhaConta;
 minhaConta = new Conta();
 // alterando os valores de minhaConta
˜ minhaConta.dono = "Duke";
 minhaConta.saldo = 1000;
 // saca 200 reais
 minhaConta.saca(200);
// deposita 500 reais
minhaConta.deposita(500);
 System.out.println(minhaConta.saldo);
 }
˜ }
Rodrigo_Sasaki
stephany_13:
Estou estudando pela apostila da Caelum e apenas está assim:
class TestaAlgunsMetodos {
public static void main(String[] args) {
 // criando a conta
 Conta minhaConta;
 minhaConta = new Conta();
 // alterando os valores de minhaConta
˜ minhaConta.dono = "Duke";
 minhaConta.saldo = 1000;
 // saca 200 reais
 minhaConta.saca(200);
// deposita 500 reais
minhaConta.deposita(500);
 System.out.println(minhaConta.saldo);
 }
˜ }
Não entendi o que você quis dizer com isso.
stephany_13

Mas perai, preciso fazer as variáveis sacar e depositar? Ou só métodos mesmo?
Pois aqui eu coloquei as variáveis com os mesmo nomes dos métodos, agora ficou mais confuso rs
:shock:

Rodrigo_Sasaki

stephany_13:
Mas perai, preciso fazer as variáveis sacar e depositar? Ou só métodos mesmo?
Pois aqui eu coloquei as variáveis com os mesmo nomes dos métodos, agora ficou mais confuso rs
:shock:

Não, as variáveis sacar e depositar não devem existir.

stephany_13

Você tem o TeamViewer ai?
quer entrar no meu pc pra ver ± o que eu estou fazendo?
só assim mesmo pra mim entender rs
se vc não estiver ocupado é claro!

Rodrigo_Sasaki

stephany_13:
Você tem o TeamViewer ai?
quer entrar no meu pc pra ver ± o que eu estou fazendo?
só assim mesmo pra mim entender rs
se vc não estiver ocupado é claro!

Agora não tenho como não, mas você está no caminho certo. Exclua as 2 variáveis, porque elas não devem existir. E se tiver mais alguma dúvida pode perguntar aqui que não tem problema.

stephany_13

OK.

Ta dando esse erro.

run:

Exception in thread main java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: Dados.Conta.saca

at Procedimentos.Programa.main(Programa.java:21)

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Rodrigo_Sasaki

veja se não é o tipo de dado que está diferente, coloque todos como int ou todos como double

Não seria mais fácil simplesmente copiar o exemplo da apostila pra estudar?

stephany_13

Mas não mostra erro nenhum tipo a exclamação.
porém não executa e no run aparece isso que te mostrei:

essa IDE é fdp rs

stephany_13

Bom ficou assim:

Ve se vc consegue ver melhor???

stephany_13

CONSEGUIIIIIIIIIIIIIIIIIIIIIIIIII \O/

:lol:

OBRIGADA QUERIDO!!!

Rodrigo_Sasaki

Acho que seu projeto está com problemas, ele está procurando o atributo saca que não existe mais. Veja se tem alguma opção para limpar o projeto.

Não tenho muita experiência com o Netbeans

stephany_13

Antes de eu por resolvido, teria como só você me explicar o THIS?

:?:

Rodrigo_Sasaki

o this é uma palavra reservada que diz que você está se referindo a instância em questão, ela é usada no método set para diferenciar as 2 variáveis, veja o exemplo:public void setSaldo(double saldo){ this.saldo = saldo; }repare que a variável da classe se chama saldo, e o argumento do método também, isso é algo que chamamos de sombreamento, temos 2 variáveis com o mesmo nome, no mesmo escopo.

Então como fazemos para diferenciar um do outro? Para dizermos que estamos atribuindo o saldo do argumento no saldo da classe, utilizamos o this, como no exemplo.

stephany_13

Vamos pegar esse exemplo :

public class Conta {
    
   public int numero;
   public String dono;
   public double saldo;
    public double limite;
    
    public void Sacar (double valor) {
        this.saldo = saldo - valor;

o que eu entendi foi que o this.saldo se diz que saldo é = saldo - valor??
é isso?

Se não for por favor pega esse exemplo..
rs

e desculpa por ser tão lenta, tenho dislexia e as vezes fica complicado.

Rodrigo_Sasaki

Ah sim, nesse exemplo não precisaria utilizar o this.

Como só existe um saldo no escopo, ele consegue saber quem é.

stephany_13

Agora entendi. :slight_smile:

Se tivesse no parametro double saldo ai precisaria…
Pois teria que mostrar que this.saldo seria o atributo.

ata!

vlw.

Esse forúm é muito bom!

A proposito você usa alguma IDE, se sim? Qual?

Rodrigo_Sasaki

Uso sim, uso o Eclipse.

Criado 11 de novembro de 2012
Ultima resposta 11 de nov. de 2012
Respostas 29
Participantes 2