Ir ao conteúdo
  • Cadastre-se
nanquinote

Atributos Objeto

Recommended Posts

Olá, acredito que seja uma dúvida bem simples pra maioria... 

 

Tenho três classes: Principal (com o método main), Porta (com atributos e métodos da porta) e Casa (essa do código)... Agora, o exercício diz: Crie uma casa e pinte-a. Crie três portas e coloque-as na casa; ....

 

package programa3;    public class Casa {                String cor;                Porta porta1 = new Porta(); // -> Objeto PORTA        Porta porta2; // -> Referência porta2 (não aloca espaço na memória)             porta1.cor = "amarelo"; // -> Só é permitido no MAIN??...

Eu não posso criar um "objeto de classe x" (porta) dentro de uma classe y(casa)?

Sim, porque eu consegui criar, mas...

 

Porque não consigo dar valor aos atributos declarados na classe porta?

 

O que me leva a outra dúvida.... Entendi que o main é aonde o programa começa a ser executado... Mas qual é lugar "correto" dele quando se tem mais de uma classe?

 

Outra: O que eu estou fazendo nesses exercícios é criar uma classe "Principal" aonde eu atribuo valores e invoco métodos...Isto está errado?? (quase a mesma pergunta anterior)

 

 

 

Ok, ficou confuso... Agradeço a quem puder me ajudar. Obrigada.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@nanquinote

To meio enferrujado em java... mas o básico eu lembro para te ajudar.

 

O main é usado para instanciar os objetos de classe e rodar o programa..

Então com base nisso.. tens a classe Casa e a classe porta

O jeito que estás fazendo está errado.  Use a classe Casa para  casa e seus atributos e a classe porta para a porta

A classe casa fica responsável por criar a casa e conter métodos de pintar a casa 

 

Por exemplo a classe casa:

public class Casa {    public String cor;    public String getCor() {        return cor;    }    public void setCor(String cor) {        this.cor = cor;    }}

a classe Porta:

public class Porta {    public String cor;    public String getCor() {        return cor;    }    public void setCor(String cor) {        this.cor = cor;    }}

e no seu main... você instancia as duas classes.. e quantos objetos quiser:

class testaPrograma {    public static void main(String[] args) {        //instância do objeto Casa        Casa minhaCasa = new Casa();                 //instancias do objeto Porta        Porta porta1 = new Porta();        Porta porta2 = new Porta();        Porta porta3 = new Porta();                 //seta o valor das cores             minhaCasa.cor ="amarelo";        porta1.cor = "vermelha";        porta2.cor = "azul";        porta3.cor = "verde";         System.out.println("a cor da minha casa é: " + minhaCasa.cor);        System.out.println("Ela tem 3 portas onde a cor da porta 1 é "+ porta1.cor +", da porta 2 " + porta2.cor + " e da porta 3 é "+ porta3.cor);     }}

Seria algo como isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei que o @Mention deu uma boa resposta, mas vou fazer algumas consideraçõs:

 

No exercício diz:

 

 

Crie uma casa e pinte-a. Crie três portas e coloque-as na casa; ....

 

Portanto sua classe Casa é composta de um atributo cor (String) e de atributos portas(Porta) podendo ter mais características se você colocar.

Assim sua classe Casa teria essa estrutura:

public class Casa {    private String cor;    private Porta porta1 = new Porta();//porta da sala?    private Porta porta2 = new Porta();//porta do banheiro?    private Porta porta3 = new Porta();//porta do quarto?    public String getCor() {        return cor;    }    public void setCor(String cor) {        this.cor = cor;    }    public Porta getPorta1() {        return porta1;    }    public void setPorta1(Porta porta1) {        this.porta1 = porta1;    }    public Porta getPorta2() {        return porta2;    }    public void setPorta2(Porta porta2) {        this.porta2 = porta2;    }    public Porta getPorta3() {        return porta3;    }    public void setPorta3(Porta porta3) {        this.porta3 = porta3;    }

Enquanto isso sua classe Main poderia ter a seguinte estrutura:

 public class Main {        public static void main(String[] args) {            Casa casa = new Casa();                        casa.setCor("branco");            //metodos para mostrar os resultados        }    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.
 

Eu não posso criar um "objeto de classe x" (porta) dentro de uma classe y (casa)?
Sim, porque eu consegui criar, mas...

Porque não consigo dar valor aos atributos declarados na classe porta?

 
Não consegue como? você precisaria postar o que está tentando fazer, e onde está dando errado.
 
 

O que me leva a outra dúvida.... Entendi que o main é aonde o programa começa a ser executado...

 
O método main é um método como qualquer outro, a diferença é que ele é o que é chamado automaticamente quado a classe é executada!!! Simples assim. Dá um google e pesquisa mais sobre...
 
 

Mas qual é lugar "correto" dele quando se tem mais de uma classe?

 
De certo modo não existe isso de lugar mais certo, talvez apenas que seja necessário ter em pelo menos uma... Como citado, ele é apenas "O" método que vai ser chamado ao executar a classe... ou seja, nesse contexto, poderia criar um main lá na Principal e deixar as outras sem, pois para as outras ela não será necessária (você não executará as outras classes nesse programa, entende?). Mas se criar vai funcionar, só não vai ter utilidade. (não crie)
 
 

Outra: O que eu estou fazendo nesses exercícios é criar uma classe "Principal" aonde eu atribuo valores e invoco métodos...Isto está errado?? (quase a mesma pergunta anterior)

 
Não entendi sua pergunta... mas essa questão de "onde fazer aquilo"  é relativa... existem várias formas, se não me engano organizadas em "Padrões de projetos", ou seja, cada padrão "determinada" como organizar a estrutura do projeto. (não precisa ver isso por enquanto)
 
Eu não lembro o nome desse modelo como você está fazendo, mas basicamente seria assim mesmo... o seu "projeto" teria as classes (Casa e Porta), que apenas "modelam o seu mundo" (para seu contexto), e outra classe "principal" que gerencia elas... essa principal seria como um programa em si.
 
 
 
Em relalação ao métodos get e set, é mesma coisa!!! São apenas métodos como qualquer outro, só que necesse casao, convencionado para ser utilizado para retornar algo (get) e atribuir (set)... Ao mesmo tempo, ele estão relacinoados ao encapsulamento, ou seja, forma de "proteger" os dados.... se você não entende ainda NÃO PRECISA USAR! (mas é um conceito bem simples - se for usar, pesquise antes, para usar sabendo do que se trata)
 
 
***
 
Para tentar ajudar, vou postar como acho que, mais ou menos, poderia ficar o main da classe principal.
 

public class Main {    public static void main(String[] args) {       Casa casa = new Casa(); //declara e já instancia o objeto       casa.cor="Branco"; //pinta de branco (mudando o atributo diretamente)        casa.porta1=new Porta();       casa.porta2=new Porta();       casa.porta3=new Porta();    }}

ou

Pra mim, faz mais sentido assim:

public class Main {    public static void main(String[] args) {       Casa casa = new Casa(); //declara e já instancia o objeto       casa.pintar("Branco"); //pinta de branco (chama um método que muda a cor da casa)        casa.adicionaPorta(new Porta());       casa.adicionaPorta(new Porta());        casa.adicionaPorta(new Porta()); }

Quando responder, poste as suas classes completas...

 
No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, getters e setters são realmente conceitos muito simples depois que eu pesquisei melhor.

 

 

Obrigada pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×