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

17 respostas
J

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:
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;    
    }
}

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

17 Respostas

felipehand

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

J

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

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…

felipehand

É 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

wbdsjunior

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.

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;
    }
}
o resto é com você.

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

edmarr

Lembrando vc so pode ter uma classe public por arquivo .

Marky.Vasconcelos

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.

edmarr

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.


Foi o que eu disse eu so estava complementando o topico acima do meu verifica la pra vc ver .

J

edmarr:
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.


Foi o que eu disse eu so estava complementando o topico acima do meu verifica la pra vc ver .

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]

J

Bom dia,

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

edmarr

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

J

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…

edmarr

o que vc implementou depois do post do

wbdsjunior ?

J
edmarr:
o que vc implementou depois do post do

wbdsjunior ?

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:
public class Casa {
    private double largura, comprimento;
    
    public Casa(double largura, double comprimento) {
        this.largura = largura;
        this.comprimento = comprimento;
    }
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...

edmarr

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

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

J

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

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

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();    
    }
}
edmarr

Solicite a entrada dos valores , segue exemplo abaixo .

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);
		}
		
	}
}
J
edmarr:
Solicite a entrada dos valores , segue exemplo abaixo .
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);
		}
		
	}
}

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.

Criado 2 de setembro de 2009
Ultima resposta 4 de set. de 2009
Respostas 17
Participantes 5