Duvida referente a criacão de objeto - [Resolvido]

Olá a todos,

Comecei a ter java no curso agora, como ja havia passado em uma cadeira de C, agora no início os problemas exigidos são bem básicos, mas o que estou tendo um pouco dificuldade é com O.O. e a sintaxe do java mesmo, tenho alguns exercicios para fazer em casa, todos fiz com uma certa facilidade, mas tem no último tive uma dificuldade, pois nos primeiros apenas criava a classe, atributos, métodos para fazer o que era pedido e pronto, agora tem outro bem simples também, mas me confundi, vai aí;

Fiz um exercício básico onde era pra criar uma classe Casa que teria apenas os atributos largura e comprimento, calcular a área e pronto… Fiz assim:

[code]public class Casa {
private double largura, comprimento;

public Casa(double largura, double comprimento) {
    this.largura = largura;
    this.comprimento = comprimento;
}

public double getLargura() {
    return largura;    
}

public void setLargura(double largura) {
    this.largura = largura;    
}

public double getComprimento() {
    return comprimento;    
}

public void setComprimento(double comprimento) {
    this.comprimento = comprimento;    
}

public double calculaArea() {
    return largura * comprimento;    
}

}[/code]

Agora no outro foi pedido que no mesmo exercício fosse implementado um terreno que tambem tera largura e comprimento e um metodo que calcula area, alem destes vai ter um que calcula a area livre no terreno, area do terreno menos a da casa(passando um objeto casa por parametro), os calculos sao extremamente simples, o que nao sei e como criar o terreno, pois nao posso ter outra classe(do terreno) dentro da classe casa, como criar um objeto terreno então?

Grato,
Jeferson Neves

Amigo, cria um pacote e dentro desse pacote cria varios arquivos class.
olha que maravilha

[quote=felipehand]Amigo, cria um pacote e dentro desse pacote cria varios arquivos class.
olha que maravilha[/quote]

Sera que tem como fazer diferente, pois ainda nao foi ensinado como criar este pacote…

Mas pode me mostrar como seria que farei e entregarei…

É só clicar com o botao direito no projeto, e criar o pacote. Da um nome tipo: br.com.NOME.
Ai é só vc ir clicando com o direito no pacote e criando novas classes.
é simples, encara o pacote como uma pasta no projeto :wink:

abs

se você ainda não sabe o que é pacote, crie um único arquivo (Teste.java) com todo o conteúdo abaixo ou crie três arquivos (Teste.java, Casa.Java e Terreno.Java) separados, mas no mesmo diretório.

[code]public class Teste {
public static void main(String[] args) {
// Casa casa = new Casa(6, 12);
Terreno terreno = new Terreno(7.5, 20);
// terreno.setCasa(casa);
System.out.println(terreno.getArea());
System.out.println(terreno.getAreaCasa());
System.out.println(terreno.getAreaUtil());
}
}

class Terreno {
private double largura;
private double comprimento;
private Casa casa;

public Terreno(double largura, double comprimento) {
    this.largura = largura;
    this.comprimento = comprimento;
}

public double getLargura() {
    return largura;
}

public double getComprimento() {
    return comprimento;
}

public Casa getCasa() {
    return casa;
}

public void setCasa(Casa casa) {
    this.casa = casa;
}

public double getArea() {
    return largura * comprimento;
}

public double getAreaCasa() {
    //
}

public double getAreaUtil() {
    //
}

}

class Casa {
private double largura;
private double comprimento;

public Casa(double largura, double comprimento) {
    this.largura = largura;
    this.comprimento = comprimento;
}

public double getLargura() {
    return largura;
}

public double getComprimento() {
    return comprimento;
}

public double getArea() {
    return largura * comprimento;
}

}[/code]
o resto é com você.

dica: lembre-se que o terreno pode estar vazio (não possuir uma casa).

Lembrando vc so pode ter uma classe public por arquivo .

Voce pode ter mais de uma classe sim. Mas as outras tem que ficar fora dessa classe e não pode ser public.

public class Casa{
//classe casa
}
class Terreno{
//clase terreno
}
class OutraQualquer{
//classe outraqualquer
}

E o main tem que ficar na classe publica.

[quote=Mark_Ameba]Voce pode ter mais de uma classe sim. Mas as outras tem que ficar fora dessa classe e não pode ser public.

public class Casa{
//classe casa
}
class Terreno{
//clase terreno
}
class OutraQualquer{
//classe outraqualquer
}

E o main tem que ficar na classe publica.[/quote]
Foi o que eu disse eu so estava complementando o topico acima do meu verifica la pra vc ver .

[quote=edmarr][quote=Mark_Ameba]Voce pode ter mais de uma classe sim. Mas as outras tem que ficar fora dessa classe e não pode ser public.

public class Casa{
//classe casa
}
class Terreno{
//clase terreno
}
class OutraQualquer{
//classe outraqualquer
}

E o main tem que ficar na classe publica.[/quote]
Foi o que eu disse eu so estava complementando o topico acima do meu verifica la pra vc ver . [/quote]

Boa noite,

Funcionou, mas nao do jeito que eu queria, vou tentar explicar:

Eu uso nas aulas e em casa o BlueJ, e eu crio as classes, depois que compilo clico com o botao direito na classe e seleciono new Casa por exemplo, dai cria um objeto casa que com o clique do bot’ao direito eu posso inserir valores(chamando o set largura por exemplo) e posso criar dois ou mais objetos e atribuir valores diferentes. Desta maneira funcionou, mas do modo que eu fazia n’ao aparece o new qdo clico com o direito sobre o objeto criado(apenas no accessible methods), e se eu executar o main, da o resultado certo, mas ao tentar implementar a segunda parte deu problema, pois tambem tinha que criar um metodo para calcular a diferenca entre 2 terrenos(area de um menos a de outro passado por parametro…), e deste modo eu so tenho um terreno com uma area…ate tentei, olhem abaixo:

public double calculaDiferenca(Terreno t1) { if (this.calculaArea() <= t1.calculaArea()) { return t1.calculaArea() - this.calculaArea(); } else return this.calculaArea() - t1.calculaArea(); }
Mas desta maneira o terreno tem a mesma area, entao sempre da zero…

****Se ajudar a entender o que quero vou passar o enunciado:

[color=darkblue]No mesmo projeto de casa, implemente um terreno. O terreno também se caracteriza por possuir largura e comprimento. Implemente métodos que permitam dar valores iniciais aos atributos do terreno, bem como permitam alterá-los e consultá-los. Crie também um método que calcula a área do terreno. A seguir, defina o método calcula areaLivre que é responsável por determinar quanto sobra da área de um terreno se retirarmos do mesmo a área correspondente à casa. Portanto, esse método recebe como parâmetro a referência de uma casa. Crie, ainda, o método calculaDiferenca é responsável por determinar a diferença de área entre dois terrenos. Portanto, esse método recebe como parâmetro a referência de um outro terreno.[/color]

Bom dia,

Alguem poderia me auxiliar na resolução deste exercício? O enunciado esta no post acima…

A classe funciona agora como fazer ela rodar sem problemas no blueJ eu nao sei =/

Funciona para primeira parte do enunciado, mas pra calcular a diferença entre dois terrenos eu não consegui(passando um como referencia), pois do jeito que esta eu ja digo no inicio o tamanho de meu terreno, então como faço para passar um outro(que tenha medidas diferentes) por parâmetro no método para calcular a diferença de área entre os dois…

o que vc implementou depois do post do

wbdsjunior ?

[quote=edmarr]o que vc implementou depois do post do

wbdsjunior ?[/quote]

Tentei isso(abaixo) mas não deu certo…da sempre zero, pois tenho inicializado um terreno apenas, queria poder criar diferentes terrenos com a mesma classe(no blueJ eu clico com o direito na classe e do um new e preencho os valores que quero, ao invés de ter apenas um terreno com medidas q não posso alterar…) dai posso criar vários objetos com a mesma classe com valores diferentes…

public double calculaDiferenca(Terreno t1) { if (this.calculaArea() <= t1.calculaArea()) { return t1.calculaArea() - this.calculaArea(); } else return this.calculaArea() - t1.calculaArea(); }

Quando eu tinha apenas a classe Casa, o que eu quero funcionava, acho que por isso:

[code]
public class Casa {
private double largura, comprimento;

public Casa(double largura, double comprimento) {
    this.largura = largura;
    this.comprimento = comprimento;
}[/code]

Quando eu clicava com o direito no BlueJ e dava um newCasa, eu poderia passar valores diferentes para largura e comprimento para cada objeto(cada vez que criava um clicando com o direito e dando newCasa)… Não sei se me entenderam.

**** Do jeito que estamos aprendendo ainda não estavamos pondo a main nos programas, apenas criando a classe, atributos, metodos e testando… A profª informou que em seguida iríamos fazer isso com main e tudo em codigo,ao invés de clicar com direito na classe e criar os objetos…

Poste por favor todo o seu codigo e teste usar tags [code] corretamente .

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

[quote=edmarr]Poste por favor todo o seu codigo e teste usar tags code] corretamente .

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

Obrigado pela ajuda, esta compilando e executando, só que eu estou com a casa e o terreno com medidas fixas, e o que foi pedido era para poder alterar, trecho do enunciado: No mesmo projeto de casa, implemente um terreno. O terreno também se caracteriza por possuir largura e comprimento. Implemente métodos que permitam dar valores iniciais aos atributos do terreno, bem como permitam alterá-los e consultá-los O enunciado todo esta comentado no programa.

/* g) No mesmo projeto de casa, implemente um terreno. O terreno também se caracteriza por possuir largura e comprimento. Implemente métodos que permitam dar valores iniciais aos atributos do terreno, bem como permitam alterá-los e consultá-los. Crie também um método que calcula a área do terreno. A seguir, defina o método calcula areaLivre que é responsável por determinar quanto sobra da área de um terreno se retirarmos do mesmo a área correspondente à casa. Portanto, esse método recebe como parâmetro a referência de uma casa. Crie, ainda, o método calculaDiferenca é responsável por determinar a diferença de área entre dois terrenos. Portanto, esse método recebe como parâmetro a referência de um outro terreno. 
*/

public class Casa2 {

    public static void main(String[] args) {
        Casa casa = new Casa(6, 12);
        Terreno terreno = new Terreno(8.5, 22);
        terreno.setCasa(casa);
        
        System.out.println("Area da casa: " + casa.calculaArea());
        System.out.println("Area do terreno: " + terreno.calculaArea());
        System.out.println("Area livre (area area do terreno menos a da casa): " + terreno.calculaAreaLivre());
        System.out.println("Diferença de área entre os terrenos: " + terreno.calculaDiferenca(terreno));        
    }
}

class Casa {
    private double largura, comprimento;
    
    public Casa(double largura, double comprimento) {
        this.largura = largura;
        this.comprimento = comprimento;
    }
    
    public double getLargura() {
        return largura;    
    }
    
    public void setLargura(double largura) {
        this.largura = largura;    
    }
    
    public double getComprimento() {
        return comprimento;    
    }
    
    public void setComprimento(double comprimento) {
        this.comprimento = comprimento;    
    }
    
    public double calculaArea() {
        return largura * comprimento;    
    }
}

class Terreno {
    private double largura, comprimento;
    private Casa casa;
    
    public Terreno(double largura, double comprimento) {
        this.largura = largura;
        this.comprimento = comprimento;
    }
    
    public double getLargura() {
        return largura;    
    }
    
    public void setLargura(double largura) {
        this.largura = largura;    
    }
    
    public double getComprimento() {
        return comprimento;    
    }
    
    public void setComprimento(double comprimento) {
        this.comprimento = comprimento;    
    }
    
    public void setCasa(Casa casa) {
        this.casa = casa;    
    }
    
    public double calculaArea() {
        return largura * comprimento;    
    }
    
    public double calculaAreaLivre() {
        if (this.calculaArea() < casa.calculaArea()) {
            System.out.println("Área do terreno é menor que a da casa");
            return 0;
        }
        else return this.calculaArea() - casa.calculaArea();
    }
    
    public double calculaDiferenca(Terreno t1) {
        if (this.calculaArea() <= t1.calculaArea()) {
            return t1.calculaArea() - this.calculaArea();    
        } else return this.calculaArea() - t1.calculaArea();    
    }
}

Solicite a entrada dos valores , segue exemplo abaixo .

[code]import java.util.Scanner;

public class TesteScaner {

public static void main(String[] args) {

	int i, j, k;
	float vet_a[] = new float[4], vet_b[] = new float[4];
	Scanner vet = new Scanner(System.in);
	
	for (i = 0; i < vet_a.length; i++) {
		System.out.println("Digite o valor do primeiro array valor  " + (i + 1) + " :");
		vet_a[i] = vet.nextFloat();
	}
	for (j = 0; j < vet_b.length; j++) {
		System.out.println("Digite o valor do segundo array valor  " + (j + 1) + " :");
		vet_b[j] = vet.nextFloat();
	}
	
	for(float t : vet_a){
		System.out.println("Valor do vetor a " +t);
	}
	
	for(float t : vet_b){
		System.out.println("Valor do vetor b " + t);
	}
	
}

}
[/code]

[quote=edmarr]Solicite a entrada dos valores , segue exemplo abaixo .

[code]import java.util.Scanner;

public class TesteScaner {

public static void main(String[] args) {

	int i, j, k;
	float vet_a[] = new float[4], vet_b[] = new float[4];
	Scanner vet = new Scanner(System.in);
	
	for (i = 0; i < vet_a.length; i++) {
		System.out.println("Digite o valor do primeiro array valor  " + (i + 1) + " :");
		vet_a[i] = vet.nextFloat();
	}
	for (j = 0; j < vet_b.length; j++) {
		System.out.println("Digite o valor do segundo array valor  " + (j + 1) + " :");
		vet_b[j] = vet.nextFloat();
	}
	
	for(float t : vet_a){
		System.out.println("Valor do vetor a " +t);
	}
	
	for(float t : vet_b){
		System.out.println("Valor do vetor b " + t);
	}
	
}

}
[/code][/quote]

Obrigado pela atenção, farei assim mesmo, mas acho que ela queria de uma outra maneira pois ainda não ensinou nada aprecido, hoje a noite tem aula e vou ver como ela queria e postar aqui por curiosidade. Mias uma vez obrigado.