Lädt...


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


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

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.

...

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


📈 234.91 Punkte
🔧 Programmierung

🔧 Associação entre Classes ou Objetos em Java


📈 54.17 Punkte
🔧 Programmierung

🔧 Minecraft: A Janela para a POO


📈 27.43 Punkte
🔧 Programmierung

📰 Ep. 019 – Android holes, iOS screengrabbing and USB poo [PODCAST]


📈 27.43 Punkte
📰 IT Security Nachrichten

📰 Ep. 019 – Android holes, iOS screengrabbing and USB poo [PODCAST]


📈 27.43 Punkte
📰 IT Security Nachrichten

📰 Anyone want to lay claim to the USB drive found in seal poo?


📈 27.43 Punkte
📰 IT Security Nachrichten

📰 Anyone want to lay claim to the USB drive found in seal poo?


📈 27.43 Punkte
📰 IT Security Nachrichten

🔧 POO entrando a un nuevo viejo mundo


📈 27.43 Punkte
🔧 Programmierung

📰 Digital McCarthyism: Elon Musk Flings His Poo at Federal Workers


📈 27.43 Punkte
📰 IT Security Nachrichten

🔧 Conceitos de POO em Python para Programadores C++98


📈 27.43 Punkte
🔧 Programmierung

🔧 Dia 7 - Diferença entre C e C++, "por que C++ é rápido?" e uso de ponteiros.


📈 19.47 Punkte
🔧 Programmierung

🔧 ¿Cómo navegar entre commits en git? 🤔


📈 19.47 Punkte
🔧 Programmierung

📰 Des attaques de phishing et BEC qui ciblent, entre autres, les candidats aux élections locales


📈 19.47 Punkte
📰 IT Security Nachrichten

🔧 Comparación entre ECMAScript 5 (ES5) y ECMAScript 6 (ES6)


📈 19.47 Punkte
🔧 Programmierung

🔧 ** ¡Viajando entre dimensiones con JWT y Rick y Morty! ** 🛸


📈 19.47 Punkte
🔧 Programmierung

🔧 Comunicação entre threads com o uso de notify( ), wait( ) e notifyAll( )


📈 19.47 Punkte
🔧 Programmierung

🔧 Diferença entre Strings e Literais de Caracteres


📈 19.47 Punkte
🔧 Programmierung

🔧 Guia Completo: Construindo um Bot Seguro de Integração entre Telegram e MetaTrader5 em Python


📈 19.47 Punkte
🔧 Programmierung

🔧 Entendendo props e useState no React: Como Passar e Gerenciar Dados Entre Componentes


📈 19.47 Punkte
🔧 Programmierung

🔧 Sincronizando data entre tabs


📈 19.47 Punkte
🔧 Programmierung

📰 He aquí 11 maneras de garantizar la alineación entre TI y Negocio


📈 19.47 Punkte
📰 IT Security Nachrichten

🔧 Diferença entre Listas, Tuplas e Dicionários no Python


📈 19.47 Punkte
🔧 Programmierung

📰 „Entre dos tierras“-Bedeutung


📈 19.47 Punkte
📰 IT Nachrichten

🔧 Diferenças entre o jest.spyOn e jest.mock


📈 19.47 Punkte
🔧 Programmierung

🔧 Serviços Cloud: Entenda as Diferenças entre SAAS, PAAS e IAAS


📈 19.47 Punkte
🔧 Programmierung

🔧 El estado actual de la IA en LMS de código abierto: Comparación entre Moodle, Canvas, Open edX y Sakai


📈 19.47 Punkte
🔧 Programmierung

📰 Los lazos entre tecnología y finanzas se estrechan con la adopción de la IA generativa


📈 19.47 Punkte
📰 IT Security Nachrichten

🔧 Comprendre la Distinction entre Tristesse et Dépression


📈 19.47 Punkte
🔧 Programmierung

🔧 Tecnologia: a desunião entre a academia e o mercado de trabalho privado


📈 19.47 Punkte
🔧 Programmierung

🔧 Comprendre la différence entre docker load et docker import


📈 19.47 Punkte
🔧 Programmierung

🔧 A diferença entre desenvolvedor júnior, pleno e sênior na minha opinião [PT-BR]


📈 19.47 Punkte
🔧 Programmierung

matomo