Duvida sobre Análise

Bom dia colegas !

Estou com a seguinte situação:

Tenho uma classe Equipamento.
Mas Equipamento pode ser Equipamento de Cliente ou Equipamento de Grupo…

A maioria dos atributos e métodos são comuns aos dois, mas existem alguns que são especificos para cada caso.

Imaginei ter uma superclasse Equipamento e outras duas EquipamentoCliente e EquipamentoGrupo que seria filhas da classe Equipamento… essa seria a implementação correta ?

Outra dúvida é na hora de persistir esses dados… eu criei somente uma tabela Equipamento e nela um campo para identificar se é Equipamento de Cliente ou de Grupo, vocês tem outra sugestão ?

Obrigado.

Abraços a todos.

Vc tem nesse caso a estratégia de uma tebela para toda hierarquia, mas procure tb pelas estratégias de uma tabela para cada classe concreta, e uma tabela para cada classe (joined subclass).

[]s

Esqueça tabelas por enquanto. O que varia são apenas os atributos do objeto ou o comportamento deles?

Existem atributos e métodos que são comuns e atributos e metódos que são específicos de cada tipo.

Vc pode fazer como disse: cria uma classe principal e duas que herdam as funcionalidades dela, ou você pode Criar uma interface Equipamento e fazer com que suas classes equipamentocliente equipamentogrupo implementem essa interface.
Assim como o pcalcado disse, não se preocupe com as tabelas agora. Defina primeiro como irá implementar as classes.

[quote=luciene.silva]Vc pode fazer como disse: cria uma classe principal e duas que herdam as funcionalidades dela, ou você pode Criar uma interface Equipamento e fazer com que suas classes equipamentocliente equipamentogrupo implementem essa interface.
Assim como o pcalcado disse, não se preocupe com as tabelas agora. Defina primeiro como irá implementar as classes.[/quote]

deixa um DBA ler esse post… huahuahua (brincadeirinha)…

Estou trabalhando nesse problema e parece que agora piorou !

:smiley:

Tenho 1 Equipamento que pode ser utilizado em N grupos, e 1 Grupo pode utilizar N equipamentos…

Visualizei um relacionamento N:N, onde normalmente existe uma tabela Equipamento (onde pk = idEquipamento), uma tabela Grupo (onde pk = idGrupo) e uma tabela EquipamentoGrupo (onde a pk seria composta por idEquipamento+idGrupo).

Só não consigo definir como ficarão as classes para representar essa estrutura…

Minha idéia:
-Na classe Grupo terei um atributo do tipo List , que trará uma lista dos equipamentos.
Mas e ai… na classe Equipamento terei tb um List .

Eu tenho as tres tabelas criadas conforme falei acima e pedi para o NetBeans criar uma Classe de Entidade de Banco de Dados e selecionei a tabela EquipamentoGrupo, ele criou as seguintes classes:

Equipamento e Grupo - em cada uma ele criou um atributo do tipo:

private Collection<EquipamentoGrupo> equipamentoGrupoCollection;

EquipamentoGrupo - nesta ele criou:

protected EquipamentoGrupoPK equipamentoGrupoPK;
private Grupo grupo;
private Equipamento equipamento;

EquipamentoGrupoPK - n

private int eceqIdEquipamento;
private int eccoIdGrupo;

Não entendi porque necessito da EquipamentoGrupoPK…

Me desculpem, venho de VB+Oracle, então minha visão ainda esta pouco treinanda para OO… eu acho.

Abraços…

faça exatamente como você citou acima:

  • Equipamento

    PK
    etc
    etc 2

    - [b]EquipamentoGrupo extends Equipamento[/b]
    
       atributo especifico do eq. grupo 1
       atributo especifico do eq. grupo 2
    
    - [b]EquipamentoCliente extends Equipamento[/b]
    
       atributo especifico do eq. cliente 1
       atributo especifico do eq. cliente 2
    

Crie JavaBeans para as 3.

Dicas pessoais:
Posso ser meio arcaico, mas não costumo usar muito ferramentas visuais para criar as classes. É bem simples e tu pode criar bem facil com um “generate getters and setters” do eclipse, no caso do netBeans certamente tem esse down RAD tbm.

Se veio do VB.NET / C#.NET esqueça os DataSet’s ou possíveis variações dele criadas e adaptadas para o Java. Ou baixa 100% do nível, ou sobe 100% do nível. meio termo é complicado.

Abraços