Antes precisamos entender mais um conceito: Quando um objeto deseja utilizar uma operação de outro objeto, existe o que chamamos de troca de mensagens. Hiiii!!!! Agora virou chat! Troca de mensagens é um termo usado por se entender a colaboração como um ato generoso do objeto colaborador com o objeto colaborado. Quando o objeto colaborado quer a colaboração do colaborador ele a pede através de uma mensagem. “Aí amigo botijão!!! Tem como você me fornecer um pouquinho de gás???” Espera-se que o botijão de gás, educadamente, forneça gás para o fogão.
Procure depois ver como um diagrama de seqüência funciona. ;)
Mas como essa colaboração de fato ocorre? Existem duas maneiras:
A primeira é fazendo com que o objeto colaborador seja um parâmetro da operação, no nosso caso ProduzirChamas(). Assim, essa operação seria escrita da seguinte forma: ProduzirChamas(meuBotijãoDeGás: BotijãoDeGás). Essa é chamada de associação de dependência.
A segunda é fazendo com o objeto colaborador seja um atributo da classe, no nosso caso Fogão. Quando isso acontece identificamos uma agregação, descrita a seguir.
Tanto em um quanto no outro o método ProduzirChamas() será capaz de utilizar a operação FornecerGás() do botijão de gás.