Dúvida de projeto

Falae Pessoal!

Estou com uma dúvida de projeto.

Tenho a seguinte estrutura:

(Estou usando Struts)

ProjectForm.java

public class ProjectForm extends ActionForm {
    private String project;
//métodos getters e setters
}

ModelForm.java

public class ModelForm extends ActionForm {
    public String project;
    public String model;
//métodos getters e setters
}

Acontece q um Model faz parte de um Project e pretendo mostrar ao usuário qual o projeto q determinado modelo está fazendo parte. Vcs acham melhor eu fazer a classe ModelForm herdar de ProjectForm? Não sei se devo separar as coisas ou uní-las, ou seja, qd for pegar no banco de dados eu populo dois Forms ou apenas um Form q já tenha todas as propriedades.

Uma outra analogia seria trabalhar com estados e países. Tenho uma classe CountryForm e StateForm onde, qd eu listar os estados, eu tb mostraria o país q ele pertence.

valeu!

Na verdade é melhor vc separar suas classes de negócio e VOs de seus ActionForms.

Ops! Eu já faço isso Daniel.
É q achei melhor colocar minha dúvida direto.

Considere q meus VOs tem a mesma estrutura de meus forms e nos meus actions eu faço a troca de Forms para VOs e vice-versa.

public class Model { private String name; //get & set }

public class Project { private String name; private Model model; //get & set }

Que tal?

hmmm…

Isso é uma composição ou agregação? E se for mais de um modelo? eu crio um array?

Se é composição ou agregação vai depender do teu modelo.
Se for um relacionamento 1:n, sugiro usar List ao invés de array.

blz! Valeu Daniel!

Mas nesse caso, eu tendo somente essas duas classes, eu posso dizer q isso seria uma agregação? Se tivesse herdando eu poderia dizer q seria uma composição?

Herança é uma especialização, ou generalização (se for no sentido contrário).

Agregação é um tipo de relacionamento todo-parte, onde um tipo agrega um ou vários de outro tipo. Exemplo:

Nota Fiscal e Itens de Venda

A composição também é todo-parte, mas é mais forte, onde cada lado não existe sem o outro. Exemplo:

Item de Venda e Produto
Pessoa e Coração

hmmmm… agora a última dúvida.

E na hora q eu for fazer um formulário do modelo? Estava pretendo colocar todos os projetos disponíveis em checkbox para possibilitar colocar o mesmo modelo fazendo parte de outros projetos. Como eu faço um ActionForm/VOs para esse caso.

Ficaria assim?

Model:

public class Model { private String name; private Project project; //ou private ArrayList projects; //get & set }

Project:

public class Project { private String name; private Model model; //ou private ArrayList models; //get & set }

Para preencher meu ActionForm no HTML eu colocaria o nome do meu objeto e sua respectiva propriedade?

Ex: preenchendo um modelo

<html:text property=“name”/> //preenche o nome do modelo
<html:text property=“project.name”/> //preenche o nome do projeto?

:?: