Escrever código em Java. As classes e métodos ficam no mesmo arquivo .java?
15 respostas
faviandrade
Boa tarde, gostaria de uma ajuda…!!!
Estou utilizando a apostila caelum para aprender java, porém estou com uma dúvida, nos exercícios iniciais, eu escrevia dentro de um arquivo .java o código e lá possuia o main. Agora estou no execicio que tenho que criar as classes os métodos e testar. a Dúvida é:
Eu crio as classes em um arquivo .Java , os Métodos em um arquivo .Java e o programa que testará isso em outro arquivo .JAVA? (se for assim a outra pergunta é, na hora de compilar eu compilo javac teste.java somente e ele já entenderá os demais arquivos ???)
Cara eu não sei sobre a apostila, mas é assim.
Normalmente é tudo .java, que são as classes, se você quiser que uma classe enxergue outra, você terá que realizar o import da mesma na classe que tem o método main().
Isso dependendo do nível de acesso as coisas, classes só podem ter dois nível de acesso, public e defautl, mas pra métodos e variaveis já muda a história.
Então se você quer utilizar uma classe em outra, vc cria uma variavel chamada de variavel de referencia nela.
O livro deve estar pedindo isso pra você começar a entender os conceitos de O.O.
Ou seja, tenho 03 blocos, a dúvida é entender como isso fica dentro do arquivo que to escrevendo, escrevo isso num único arquivo texto, separo ?
Grato.
fernando.fajr
Cara é o seguinte: os primeiros exercicios em java utilizam apenas um arquivo fonte, onde contem tudo que voce quer.
Porem é apenas para voce adaptar-se com a sintaxe da linguagem. Porém esses exercicios simples ainda não utilizam o conceito de POO ou seja é necessário ter um classe que contenha “atributos e metodos” e um outro arquivo que voce instancie(crie) um objeto para interagir com sua outra classe.
veja o exemplo:
publicclassConta{//classe conta banco contem os attributos e metodos simples de um bancointn_conta;Stringnome_cliente;privatefloatsaldo;privatedoublecpmf;booleansit;publicConta(){saldo=0;cpmf=0.0038;}publicvoiddepositar(intvalor){saldo=valor;}publicbooleansacar(intvalor){doubleaux;aux=valor;aux=aux+valor*cpmf;10=10+10*0,0038if(aux>saldo){saldo=saldo-(float)aux;sit=true;return(true);//System.out.println("Saque realizado com sucesso, retire o dinheiro"); }elsesit=false;return(false);//System.out.println("Saldo Insuficiente");}}
agora observe a classe principal (main) que estará interagindo com o classe banco. ou seja nessa classe agora que eu vou criar um objeto que vai sofrer interações.
importjava.util.Scanner;publicclassUserc{publicstaticvoidmain(String[]args){Scannerent=newScanner(System.in);Contaobj1=newConta();System.out.println("Bem vindo ao Banco");System.out.println("Entre com o numero da conta");obj1.n_conta=ent.nextInt();System.out.println("Entre com o nome do cliente");obj1.nome_cliente=ent.nextLine();intopcao;intv;do{System.out.println("Digite (1)para sacar \n (2) para depositar \n (3) para sair ");opcao=ent.nextInt();switch(opcao){case1:{System.out.println("Qual o valor do saque");v=ent.nextInt();if(obj1.sacar(v)==true)System.out.println("Saque realizado com sucesso, retire o dinheiro");elseSystem.out.println("Saldo Insuficiente");break;}case2:{//chamar função depositobreak;}default:System.out.println("opcao invalida");}//swith}while(opcao!=3);}}
fernando.fajr
Se voce estiver utilizando o eclipse
pode seguir os seguintes passos
new/project/javaproject/next/nomequalquer/finish
observe que irá aparecer no lado esquerdo o seu projeto nomequalquer
para o exemplo que postei anteriormente faça o seguinte:
clique com o botao direito do mouse no lado direito da tela em seu nomequalquer e em new/class e crie uma classe com o nome de Conta e outra com o nome de UserC (usando a classe conta)
ou seja todos os objetos que estiverem usando a classe conta estarão dentro de userc e terão os atributos e os metodos disponíveis da classe conta
publicvoidfazaniversario(){idade=idade++;}publicstaticvoidmain(Stringargs[]){Pessoacliente=newPessoa();cliente.nome="Fábio";cliente.idade=29;System.out.println("Cliente: "+cliente.nome+"idade Atual: "+cliente.idade);cliente.fazaniversario();System.out.println("Cliente: "+cliente.nome+"Ano que vem sua idade será: "+cliente.idade);}
}
Porém esta dando o seguinte erro: Exception in thread “main” java.lang.NoClassdefFoundError: fazaniversario… e ai vem vários causas… java.lang.ClassNoFoundException…
sabe me ajudar com este erro ?
Grato.
fernando.fajr
é O seguinte: aki não deu erro não
mas a idade não é atualizada.isso pork quando voce chama cliente.fazaniversario();
e não passa nada, o maximo que a classe pessoa pode fazer é alterar o valor da variável padrão, q os proximos objetos receberão como valor padrão.
fiz as seguinte modificações cliente.fazaniversario(cliente.idade); ou seja passei a idade do meu objeto.
e na classe pessoa modifiquei para
public void fazaniversario(int id){
id = idade ++;
}
FIz em dois arquivo do tipo class (um chamando o outro) dentro de um projeto unico
O erro ocorrou pq o nome da classe precisa ter o mesmo nome do arquivo .
Bom estudo vou so lhe mostrar uma forma aprimorada do seu codigo
classPessoa2{privateStringnome;privateintidade;publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicintgetIdade(){returnidade;}publicvoidsetIdade(intidade){this.idade=idade;}publicvoidfazaniversario(){idade+=1;}publicstaticvoidmain(Stringargs[]){Pessoa2cliente=newPessoa2();cliente.setNome("Fábio");cliente.setIdade(29);System.out.println("Cliente: "+cliente.getNome()+"idade Atual: "+cliente.getIdade());cliente.fazaniversario();System.out.println("Cliente: "+cliente.getNome()+"Ano que vem sua idade será: "+cliente.getIdade());}}
Ps … .Seu Código nao faz a somatório correto do aniversário.
faviandrade
Obrigado, o problema maior mesmo do código estava no nome do arquivo estar diferente do nome da classe.
(valeu mesmo) … eu corrigi o problema da somatória… tirei a váriavel somando ++ e coloquei + 1
agora não entendi o pq… que não calculou daquela forma…
No caso… o resultado final foi o mesmo… o que isto influenciou?
Grato mais uma vez… a todos que estão me ajudando muito.
Grato.
Z
Zyto
Fala ae faviandrade blz.
cara eu tambem comecei a estudar java por esta apostila da caelum.
Nesse exercicio do funcionario realmente você precisa dividir em alguns arquivos .java.
um que contem os metodos e variaveis e outro para testar.
você cria primeiro os do metodo e compila…depois vc cria o de teste compila e executa…
Boa sorte nos estudos.
M
marcobiscaro2112
Cada classe pública (toda declaração que contenha ‘public class’ ou, as vezes, apenas ‘class’) deve ter um arquivo ‘.java’ para ele. Portanto, no seu caso, deve-se ter:
arquivo Funcionario.java
classFuncionario {
// códigoaqui!
}
arquivo TestaFuncionario.java
classTestaFuncionario {
// códigoaqui!
}
Quando você compilar, serão gerados dois arquivos com extensão ‘.class’, com o nome de cada classe (Funcionario.class e TestaFuncionario.class). Para executar, chame o comando java, seguido do nome da classe com o método main, sem a extensão ‘.class’:
javaTestaFuncionario
fjvasconcellos
Boa noite!
Então cara, a diferença do código que o nosso amigo passou, que contem os métodos “get… e set…” é um código simples e nos maiores padrões determinados pela SUN.
Você pode notar que todas as variáveis da classe Pessoa, são declaradas como PRIVATE, assim restringindo o acesso direto as variaveis por outras classes.
O uso dos métodos “get… e set…” são simplesmente para que voce tenha acesso as variaves da classe pessoa INDIRETAMENTE, ou seja, voce tem a possibilidade de realizar testes e restrições aos valores que as variaveis da sua classe irão receber usando os metodos SET… e para recuperar o valor dessas variaveis em outras classes vc irá usar os metodos GET…
Resumindo tudo, vc acava de aprender o método ideal de criar um simples código Java, usando as determinações da SUN.
Espero ter ajudado!!!
faviandrade
Obrigado, a todos pela ajuda… valeu mesmo, continuarei os estudos e as próximas dúvidas… pedirei a vc(s) novamente…
Grato.
danielfigueiredoc
Não esqueça de adicionar no título do tópico [RESOLVIDO].
Bom estudo!
faviandrade
faviandrade:
Boa tarde, gostaria de uma ajuda…!!!
Estou utilizando a apostila caelum para aprender java, porém estou com uma dúvida, nos exercícios iniciais, eu escrevia dentro de um arquivo .java o código e lá possuia o main. Agora estou no execicio que tenho que criar as classes os métodos e testar. a Dúvida é:
Eu crio as classes em um arquivo .Java , os Métodos em um arquivo .Java e o programa que testará isso em outro arquivo .JAVA? (se for assim a outra pergunta é, na hora de compilar eu compilo javac teste.java somente e ele já entenderá os demais arquivos ???)