Composição em Java

13 respostas
G

Salve Pessoal! Estou trabalhando com duas classes Casa e Porta. Estou seguindo o exercício da apostila do Paulo Silveira. No entanto, pintou uma dúvida conceitual. No meu contexto, uma Casa é composta de
(1…*)Portas. Como ficam as duas classes em Java? Terei um vetor de Portas como atributo em Casa? Onde posso encontrar um bom material sobre análise orientada a objetos utilizando Java?
Saudações e obrigado.
Bruno Giminiani.

13 Respostas

R

acho q vc poderia utilizar o extends para criar a classe porta, indicando a classe casa, por exemplo, “public class porta extends casa…”, não sei se falei bobagem, mas acho q eh isso…

G

Pois é! Mas neste caso, Porta não “é uma” casa, ela “compões uma” casa!
De qualquer forma, brigadão pela boa vontade!

peczenyj
class Porta{
}

class Casa{
   Porta frente, fundos;
}

Veja! A casa tem uma porta na frente e uma nos fundos!

class Porta{
    public void abrir(){ System.out.println("oi, eu sou uma porta e estou sendo aberta");}
}

class Casa{
   Porta frente, fundos;
   public Casa() { this.frente = new Porta(); }
   public abrePortaDaFrente() { frente.abrir(); }
}

;-)

Kassiane_Pretti

As portas tem atributos próprios?

Acho que não entendi direito o q vc quer saber…

L

neste caso o mais apropriado eu acredito que seja usar um:

Vector<Porta> portas;
galoneti

Massa!!

lgi2020

Acredito que o correto serial algo como a seguir:

public class Casa {

    private List<Porta> portas;

    public Casa() {
        portas = new ArrayList();
    }

    //gets e sets suprimidos

}

Dessa forma, uma casa TEM portas.

Abraços.

guivirtuoso

Pelo amor de Deus usa um List… LinkedList… qualquer coisa menos Vector.

Deixa p; usar Vector quando estiver brincando com Threads…

Um Abraco.

guivirtuoso
lgi2020:
Acredito que o correto serial algo como a seguir:
public class Casa {

    private List<Porta> portas;

    public Casa() {
        portas = new ArrayList();
    }

    //gets e sets suprimidos

}

Dessa forma, uma casa TEM portas.

Abraços.

Nao seria ?!?!?!? :

portas = new ArrayList<Porta>();

Abracos!

R

me enganei no conceito! mas eh isso ae!

Kassiane_Pretti

Se a porta tiver atributos proprios o melhor a se fazer
é uma classe para ela. Caso tenha janelas vc pode tentar trabalhar um pouco com herança.
Criando uma classe generica tipo entradas e as classes janela e porta iriam herdar as caracteristicas de entradas e ainda teriam suas proprias caracteristicas implementadas…

G

Essa é a idéia KassiPretti, obrigado pela dica! Ou melhor, obrigado a todos pelas respostas, serviram de direção! :smiley:

L

falei em vector pois tive a ideia de o numero de portas ser desconhecido, ou haver a necessidade de adicionar ou remover portas em tempo de execução… mas se o número de portas é conhecido, ou lido de um BD… seria correto usar List

Criado 25 de fevereiro de 2008
Ultima resposta 27 de fev. de 2008
Respostas 13
Participantes 8