:shock: Falando em coleções e arranjos simples, é sempre uma dificuldade para entender uma regra que melhor se encaixe quando o assunto é Agregação e Composição.
:arrow: Então que regra é mais fácil para interpretá-los, isso é uma discussão que alguns gurus da UML, já até então abordaram exaustivamente em obras e livros.
[quote=allanmarques]Vc tem cunhado? Se tiver vai ser fácil entender.
O seu cunhado está agregado a sua família, ele não compõe a sua família.
Já você compõe sua família.
:D[/quote]
Ótimo exemplo
[code]class Voce {
}
class SeuCunhado {
}
class SuaFamilia {
private SeuCunhado seuCunhado; // Agregação
private Voce voce; // Composição
}[/code]
No contexto de sua aplicação, você pode ter instâncias de SuaFamilia com o atributo “seuCunhado” igual a null ( agregação ), mas nenhuma delas terá o atributo “voce” igual a null ( composição ).
[quote=allanmarques]Vc tem cunhado? Se tiver vai ser fácil entender.
O seu cunhado está agregado a sua família, ele não compõe a sua família.
Já você compõe sua família.
[/quote] Acho que isso foi inocente, mas acabou se aproximando de um conceito até mais plausível
class SuaFamilia {
private SeuCunhado seuCunhado; // Agregação
private Voce voce; // Composição
}[/code]
No contexto de sua aplicação, você pode ter instâncias de SuaFamilia com o atributo “seuCunhado” igual a null ( agregação ), mas nenhuma delas terá o atributo “voce” igual a null ( composição ).[/quote]
[quote=Giulliano]COMPOSIÇÃO: O outro lado só existe se aquele que esta com ele existir.
AGREGAÇÃO: O objeto esta associado mas possue estado independente de quem esta associado a ele.
acho q é isso.
[/quote]
Coloca uma situação sem ter que ser conceitual, dando um enfoque criativo algo que até em um caso de uso acho teria melhor relação.
Os conceitos de agregação e composição também dependem muito do domínio em que estamos. Ex:
Se o meu domínio é uma concessionária de carros, motor não existe sozinho, ele compõe o carro. O carro também não existe sem
o motor.
Já se o meu domínio é um ferro-velho, motor pode existir sozinho como também pode estar agregado a um carro.
Não me lembro de ter visto tanta atrocidade junta antes… talvez na Segunda Gerra Mundial!
Agregação: a parte pode pertencer a mais de um todo.
Composição: a parte pertence a um único todo.
O resto das cláusulas são efeitos destas regras ou pura balela!
Um abraço a todos!
[quote=malsan]Não me lembro de ter visto tanta atrocidade junta antes… talvez na Segunda Gerra Mundial!
Agregação: a parte pode pertencer a mais de um todo.
Composição: a parte pertence a um único todo.
O resto das cláusulas são efeitos destas regras ou pura balela!
Um abraço a todos![/quote]
Associação: um objeto não faz parte do outro, porém eles se conhecem.
Acho que o que eu vou dizer pode parecer besteira, mas
Agregação quando A conhece objetos do tipo B e que, quando um for “destruído” não acarretará na “destruição” de outro.
Composição é quando, se A for “destruído”, B vai ser também.
Não sei onde li isso… Mas pelo que eu me lembre foi o conceito pelo qual consegui entender um pouco.
[quote=allanmarques]Vc tem cunhado? Se tiver vai ser fácil entender.
O seu cunhado está agregado a sua família, ele não compõe a sua família.
Já você compõe sua família.
[/quote]
Excelente exemplo!!! Caramba, precisamos mais disso pra aprender OO!!! Fica muito mais fácil.
class SuaFamilia {
private SeuCunhado seuCunhado; // Agregação
private Voce voce; // Composição
}[/code][/quote]
O exemplo é bom, mas ainda acho que não é 100% exato. Afinal, você continuaria a existir sem sua família, e sua família continuaria a existir sem você também (apenas seria um pouco mais triste ou mais feliz, dependendo de como você os trata :))
class SuaFamilia {
private SeuCunhado seuCunhado; // Agregação
private Voce voce; // Composição
}[/code][/quote]
O exemplo é bom, mas ainda acho que não é 100% exato. Afinal, você continuaria a existir sem sua família, e sua família continuaria a existir sem você também (apenas seria um pouco mais triste ou mais feliz, dependendo de como você os trata :))[/quote]
Sem ele não seria “a família dele” e sim outra família qualquer.
[quote=Ssalgado]
Sem ele não seria “a família dele” e sim outra família qualquer.[/quote]
Bom… não entendo profundamente esse assunto, então tenham paciencia se eu estiver falando besteira, mas acho o seguinte: uma relação de composição não traz a idéia de “um não vive sem o outro” ?
Assim: Se José não existe a família continua existindo. Ela se torna “uma outra família qualquer que não a de José”, mas isso não é apenas um detalhe? Da mesma forma, sem ele o cunhado também não é mais o cunhado dele, mas o cunhado de um outro qualquer - nem por “José tem um cunhado” foi considerado Composição.
Não sei se fui claro o suficiente…
Um exemplo do que considero composição:
-> José tem uma cabeça.
José não vive sem a cabeça, a cabeça não vive sem José, e caso José não exista a cabeça dele não poderá simplesmente tornar-se a cabeça de um outro cara.