Elucidando as difenrenças entre associação, agregação e composição em POO

Em POO (Programação Orientada Objetos) é comum utilizarmos um objeto para executar um comportamento específico dentro de outro objeto, ou até mesmo compor agregando mais informações. Isso ocorre quando há relacionamento os objetos dentro de uma sistema…


This content originally appeared on DEV Community and was authored by João Paulo Oliveira

Em POO (Programação Orientada Objetos) é comum utilizarmos um objeto para executar um comportamento específico dentro de outro objeto, ou até mesmo compor agregando mais informações. Isso ocorre quando há relacionamento os objetos dentro de uma sistema que se comunicam entre si.

Podemos definir relação entre objetos em três tipos: associação, agregação e composição. Abaixo falarei mais sobre eles.

Associação

Para identificar a relação de associação entre dois objetos basta entender se entre eles não existe dependência, ou seja, se são independentes.

Por exemplo, Aluno e Curso, um Aluno pode ter vários Cursos e consequentemente um Curso pode conter vários Alunos. Veja, o Aluno pode existir sem um Curso assim como Curso pode existir sem Aluno. Um relacionamento de muitos para muitos.

class Aluno() {
    val cursos: MutableList<Curso> = mutableListOf()
    fun add(curso: Curso) {cursos.add(curso)}
} 
class Curso() {
    val alunos: MutableList<Aluno> = mutableListOf()
    fun add(aluno: Aluno) {alunos.add(aluno)}
} 

A relação entre ambos é eventual.

Agregação

Diferente da associação, o relacionamento por agregação ocorre quando há exclusividade em uma das partes deste relacionamento.

Um exemplo, Funcionário e Departamento, Departamentos podem ter vários Funcionários e Funcionário pode estar vinculado a um Departamento. Porém perceba que Funcionário pode existir sem o vínculo ao Departamento e o mesmo não tem dependência de Funcionário para existir. Um relacionamento de muitos para um.

class Departamento() {
    val funcionarios: MutableList<Funcionario> = mutableListOf()
    fun add(funcionario: Funcionarios) {funcionarios.add(funcionario)}
}
class Funcionario() {
    val departamento: Departamento? = null
}

Composição

Muito parecida com agregação, o relacionamento por composição ocorre quando um objeto depende estritamente de outro objeto.

Por exemplo, Carro e Motor, Carro deve ter um Motor assim como a existência de um motor está particularmente ligada a existência de um Carro. Um relacionamento de um para um.

class Motor() {}
class Carro() {
    val motor: Motor = Moto()
}

Conclusão

Associação, agregação e composição é a dependência existente entre objetos e como eles se relacionam. Não há diferença na maneira de implementá-los e sim como irão se comportar. Devemos pensar o seguinte para quando utilizarmos:

Se ambos os objetos da relação são independentes, isto é uma associação.
Se um dos objetos da relação compõe o todo mas não é dependente, isto é uma agregação.
Se os objetos da relação dependem um do outro compondo o todo, isto é uma composição.

Saber identificar as diferenças entre os relacionamentos de objetos em POO e aplicá-las teremos um código mais coeso e manutenível.


This content originally appeared on DEV Community and was authored by João Paulo Oliveira


Print Share Comment Cite Upload Translate Updates
APA

João Paulo Oliveira | Sciencx (2024-10-15T17:14:52+00:00) Elucidando as difenrenças entre associação, agregação e composição em POO. Retrieved from https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/

MLA
" » Elucidando as difenrenças entre associação, agregação e composição em POO." João Paulo Oliveira | Sciencx - Tuesday October 15, 2024, https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/
HARVARD
João Paulo Oliveira | Sciencx Tuesday October 15, 2024 » Elucidando as difenrenças entre associação, agregação e composição em POO., viewed ,<https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/>
VANCOUVER
João Paulo Oliveira | Sciencx - » Elucidando as difenrenças entre associação, agregação e composição em POO. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/
CHICAGO
" » Elucidando as difenrenças entre associação, agregação e composição em POO." João Paulo Oliveira | Sciencx - Accessed . https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/
IEEE
" » Elucidando as difenrenças entre associação, agregação e composição em POO." João Paulo Oliveira | Sciencx [Online]. Available: https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/. [Accessed: ]
rf:citation
» Elucidando as difenrenças entre associação, agregação e composição em POO | João Paulo Oliveira | Sciencx | https://www.scien.cx/2024/10/15/elucidando-as-difenrencas-entre-associacao-agregacao-e-composicao-em-poo/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.