Escolar Documentos
Profissional Documentos
Cultura Documentos
Classes de associação
Tais atributos e métodos não podem ser associados à classe leitor nem tampouco à
classe exemplar de livro. Não seria adequado incluir tais atributos e métodos em
nenhuma dessas classes, pois não dizem respeito a elas.
Generalização/ especialização
Uma classe mais geral se relaciona com outra mais específica (herdada). A classe
mais específica herda todas as características (atributos e métodos) permitidos da
classe mais geral. A classe mais geral também é chamada de superclasse, e a classe
mais específica chama-se subclasse.
O exemplo a seguir ilustra o uso dessa restrição completa, na qual uma pessoa é
homem ou mulher, não havendo novas subclasses possíveis para a superclasse
pessoa.
Uma das maiores fontes de confusão e dúvidas na modelagem de classes é o uso dos
relacionamentos de agregação e composicão.
Esses dois relacionamentos são do tipo “todo-parte”, ou seja, existe uma classe
que denota um todo e outras que denotam as partes. A grande dificuldade está em
diferenciar agregação de composição.
Vamos analisar cada um dos dois relacionamentos a seguir, à luz das duas
características descritas e explicar o porquê de serem agregação e composição,
respectivamente.
Embora as duas características ajudem muito a elucidar a dúvida sobre qual dos
dois relacionamentos é mais apropriado, devemos sempre analisar o contexto, para
entender como se relacionam todo e parte.
Por fim, afirmamos que a composição é um relacionamento que diz muita coisa a
quem vai implementar as classes, na linguagem de programação, pois orienta que a
criação e destruição das partes está condicionada à vida do todo.
Dependência
A dependência entre duas classes existe se: mudanças na definição de uma classe
puder demandar mudanças na definição da outra classe. As dependências podem
ser evidenciadas de várias formas, como por exemplo:
Uma classe tem outra como parte de seus dados;
Uma classe menciona outra como parâmetro de uma chamada de
método.
Se a interface da classe dominante muda, as mensagens enviadas podem não ser
mais válidas, demandando alterações na classe dependente.
Na modelagem UML, veremos muitas dependências, mas você deve ser seletivo e
modelar dependências apenas quando ela for relevante para o contexto específico
de sua aplicação.
Observe o método incluir da classe disciplina. Ela usa como parâmetro o objeto
aluno, que é da classe estudante. Isto significa que qualquer mudança na interface
(assinatura) de estudante poderá afetar a classe disciplina.