Escrever código em Java. As classes e métodos ficam no mesmo arquivo .java?

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 ???)

se puderem, me ajudar…

Grato.

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.

espero ter ajudado!

Abraço

Então , deixa eu me explicar melhor, na apostila ele mostra por exemplo… a criação da classe funcionario:Class Funcionario {
String Nome;
String Dpto;
Double Salario;
}

ai mais embaixo está o exemplo dos atributos:

Class Funcionario {
double salario;
void bonifica (double aumento) {
}
void demite() {
{
}

ai mais embaixo… ele mostra a class testafuncionario

Class TestaFuncionario {
public static void main (String [] args) {
Funcionario f1 = new Funcionario ();

    f1.nome = 'X';
    f1.salario = 100;
    f1.bonifica(50);

    System.out.println ("salario atual" + f1.salario);
     }

}

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.

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:

public class Conta {
//classe conta banco contem os attributos e metodos simples de um banco
	
	int n_conta;
	String nome_cliente;
	private float saldo;
	private double cpmf;
	boolean sit;
	
	
	public Conta(){
		
		saldo=0;
		cpmf=0.0038;
		}
	
	
	
	
	public void depositar(int valor ) {
		saldo=valor;
		
	}
	
	
	 public boolean sacar(int valor){
		double aux;
		aux=valor;
		aux=aux+valor*cpmf;
		10=10+10*0,0038
		
		if(aux>saldo)
		{	saldo=saldo-(float)aux;
		
		sit=true;
		return(true);
		//System.out.println("Saque realizado com sucesso, retire o dinheiro");			
			
		}
		else
			sit=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.

import java.util.Scanner;
public class Userc {

	
	public static void main(String[] args) {
		
		Scanner ent = new Scanner(System.in);
		
		Conta obj1 = new Conta();

		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();
		
		int opcao;
		int v;
		
		do{
		System.out.println("Digite (1)para sacar \n (2) para depositar \n (3) para sair ");
		
		
		opcao = ent.nextInt();
		
		switch(opcao){
		
		case 1: {
			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");
		else
			System.out.println("Saldo Insuficiente");
		break;
		}
		
		case 2: {
			//chamar função deposito
			
			break;
			
		}
		
		
		
		
		
		default: System.out.println("opcao invalida");
		
		
		} //swith
	}
		while(opcao!=3);
		
		
		
		
		
		
		
		
	}

}

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

tendeu?!

Caros , colegas antes de postar favor ler o seguinte tópico .
http://www.guj.com.br/posts/list/50115.java

certo, eu usei este código simples.

class Pessoa {
String nome;
int idade;

public void fazaniversario(){
idade = idade ++;
}

public static void main (String args [ ]){
Pessoa cliente = new Pessoa( );
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.

é 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

classe pessoa :

class Pessoa { 
String nome; 
int idade; 

public void fazaniversario(int id){ 
id = idade ++; 
} 

}

///////

classe (UserP) Usando a classe pessoa

public class UserP {
	public static void main (String args [ ]){ 
		Pessoa cliente = new Pessoa( ); 
		cliente.nome = "Fábio"; 
		cliente.idade = 29; 
		System.out.println("Cliente: " + cliente.nome + "idade Atual: " + cliente.idade); 
		cliente.fazaniversario(cliente.idade); 
		System.out.println("Cliente: " + cliente.nome + "Ano que vem sua idade será: " + cliente.idade); 
		} 
		} 
	

Olha antes de postar quqlquer codigo leia aqui .

http://www.guj.com.br/posts/list/50115.java

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


class Pessoa2 {
	private String nome;
	private int idade;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getIdade() {
		return idade;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}

	public void fazaniversario() {
		idade += 1;
       }

	public static void main(String args[]) {
		Pessoa2 cliente = new Pessoa2();
		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.

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…

outra coisa que to tentando entender neste código que passou é a questão destes procedimentos:
public String getNome() {
return nome;
}

public void setNome(String nome) {   
    this.nome = nome;   
}   

public int getIdade() {   
    return idade;   
}   

public void setIdade(int idade) {   
    this.idade = idade;   
}   

public void fazaniversario() {   
    idade += 1;   
    this.setIdade(idade);   
}   

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.

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.

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:

  1. arquivo Funcionario.java
class Funcionario {
    // código aqui!
}
  1. arquivo TestaFuncionario.java
class TestaFuncionario {
    // código aqui!
}

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’:

java TestaFuncionario

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!!!

Obrigado, a todos pela ajuda… valeu mesmo, continuarei os estudos e as próximas dúvidas… pedirei a vc(s) novamente…

Grato.

Não esqueça de adicionar no título do tópico [RESOLVIDO].

Bom estudo!

[quote=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 ???)

se puderem, me ajudar…

Grato.[/quote]