Uma colaboração pode também modelar a implementação de uma operação individual.
A figura abaixo mostra como associar uma colaboração com a operação que realiza / implementa.
Esta representação é mais valiosa quando a implementação é complexa. A colaboração pode incluir diagramas estruturais e comportamentais para explicar a colaboração.
O exemplo acima significa nunca perder de vista a necessidade de calcular o valor total da compra, mesmo que você precise mudar o algoritmo que faz isso uma dúzia de vezes ao longo da vida da aplicação. Ou seja, é uma espécie de lembrete para você manter o foco da funcionalidade, mesmo que a lógica mude, que as fórmulas mudem, o método deve sempre desempenhar aquele papel esperado. Veja um exemplo mais real.
|
Algumas ferramentas de UML implementam o diagrama de estruturas compostas dentro do diagrama de classes. Outras apresentam diagramas específicos para estruturas compostas, porém pode ser que nem todas as funcionalidades presentes na modelagem de diagrama de classes estejam presentes. |
Veja este exemplo mais real:
Suponha que você comece a modelar um sistema que trabalha com reservas de viagens, e no primeiro momento o seu sistema venda apenas diárias de hotel. Há nele uma funcionalidade final onde o cliente efetua o pagamento. A regra de fazer esse pagamento pode ser apenas uma pré-reserva, sem descontar nada no cartão de crédito, ou descontar uma diária, ou efetuar o pagamento completo por todas as diárias de hotel. Não importa a regra de negócio, o método deve ser capaz de efetuar a reserva para o cliente. Como a reserva será feita (por uma das três possibilidades apresentadas) será apenas uma regra de negócio implementada dentro do componente acionado pelo pagamento. Ainda, futuramente, quando o seu sistema também fizer reservas de carros e passagens aéreas, a classe que faz o pagamento terá a mesma forma de ativação, será a implementação que ela disparar que realizará o que foi previsto como regra de negócio.
X