Dúvida quanto a existência de relacionamentos

Olá,

Tenho uma dúvida quanto a existência de relacionamento entre classes( se deve existir, se é facultativo ou se não deve existir)

Por exemplo, tenho as seguintes classes, com os seguintes métodos

Classe Colegio

ColegioControle

Controle
-Método InseirColegio
—Instancia objeto Colegio e ColegioControle
—Chama método do objeto ColegioControle e passa como parametro objeto Colegio

Deve existir uma relacao no diagrama de classes UML entre essas classes?Se sim, quais? :slight_smile: ( se deve existir, se é facultativo ou se não deve existir)

Normalmente é o relacionamento de dependência: uma seta tracejada entre a classe ColegioControle e a classe Colegio.

Entretanto, não sei qual o contexto da sua dúvida: é para um trabalho de faculdade?, é para modelagem no seu trabalho? Te pergunto isso porque, no mundo real, você não precisa de tanto formalismo assim. Esse seu exemplo é muito simples, uma conversa com o colega-desenvolvedor do tipo: “preciso de uma classe DAO para inserir e atualizar colégios” é mais do que suficiente, e não requer um diagrama para compreensão.

Outra, quando modelar em UML, abstraia as limitações de infraestrutura e foque no negócio. Pense que todos os objetos sejam automaticamente persisitidos e cada objeto tenha sua própia linha de execução. (Assim, métodos como inserir e atualizar não seriam modelados). Essas coisas são muito “no-brainer” para fazer parte da análise e da modelagem.

[quote=Leonardo3001]Normalmente é o relacionamento de dependência: uma seta tracejada entre a classe ColegioControle e a classe Colegio.

Entretanto, não sei qual o contexto da sua dúvida: é para um trabalho de faculdade?, é para modelagem no seu trabalho? Te pergunto isso porque, no mundo real, você não precisa de tanto formalismo assim. Esse seu exemplo é muito simples, uma conversa com o colega-desenvolvedor do tipo: “preciso de uma classe DAO para inserir e atualizar colégios” é mais do que suficiente, e não requer um diagrama para compreensão.

Outra, quando modelar em UML, abstraia as limitações de infraestrutura e foque no negócio. Pense que todos os objetos sejam automaticamente persisitidos e cada objeto tenha sua própia linha de execução. (Assim, métodos como inserir e atualizar não seriam modelados). Essas coisas são muito “no-brainer” para fazer parte da análise e da modelagem.
[/quote]

É para o meu trabalho de conclusão de curso e é para a modelagem dele sim. Então logicamente este não é o exemplo do meu trabalho :slight_smile: ele envolve várias classes com DAO. Então o melhor seria elimiar as classes ColegioControle e todas as outras que sejam Controle e fazer algo mais abstrato somente entre as classes Colegio por exemplo?

Ou ainda seria melhor fazer os dois tipos? Fazer um diagrama de classe com TODAS as classes inclusive as DAO e ainda mais um diagrama mais abstraído?

Utilizei alguns geradores automáticos de Diagrama de Classe como o Astah UML e ele só gera relacionamento entre classes que possuem instâncias em variáveis globais, instâncias de classes dentro de métodos não geram relacionamentos. Por isto fiquei em dúvida, não sei se é correto isto ainda :frowning:

Ocorre um relacionamento N x N entre Controle e Colegio. A classe ColegioControle é a Classe de Associação. Veja UML ESSENCIAL 3a. Edição do Martin Fowler páginas 88 e 89.

Dica: a partir da existência do método inseriColegio, deduzo que Controle é a classe “forte” do relacionamento. Então, é desejável que o acesso à classe ColegioControle fique encapsulado em Controle. Esta por sua vez, teria um método List getColegios() e removeColegio (Colegio).

ColegioControle é forte candidata à Value Object (ver TDD, Kent Beck) para evitar problemas com sinônimos.

Abraços