Tabla de Contenidos
Agregarea este un tip de asociere între clase care poate fi realizată în diferite limbaje de programare orientate pe obiecte, cum ar fi Java. Este un proces care permite reutilizarea rapidă și eficientă a codului, făcând programele mult mai ușor de scris și de rulat mai eficient.
În general, agregarea face referire la o clasă în cadrul unei alte clase. Aceasta creează ceea ce se numește o relație HAS-A între clasa care conține și clasa care conține. Aceste relații se caracterizează prin faptul că sunt unidirecționale, deoarece implică faptul că una dintre clase o conține pe cealaltă; aceasta împiedică să se întâmple contrariul.
De exemplu, putem spune că o companie, care poate fi văzută din punct de vedere al programării ca o clasă de obiecte, are un set de angajați; acestea, la rândul lor, pot fi văzute și ca obiecte cu atribute proprii. În acest caz, clasa de conținut este compania, în timp ce clasa de conținut este angajații. Această relație are sens doar în această direcție, adică de la companie la angajat. Relația în sens invers nu are sens, deoarece ar fi ca și cum ai spune că angajatul conține compania. Faptul că acest lucru nu are sens arată că este o relație unidirecțională.
Agregarea în diagrame de clase
În Unified Modeling Language (UML), care este un tip de limbaj vizual universal creat pentru proiectarea sistemelor software complexe, diagramele de clasă sunt folosite pentru a descrie structura și caracteristicile unui sistem. În aceste diagrame fiecare clasă și relațiile sale cu celelalte sunt reprezentate prin intermediul unor figuri geometrice. În cazul agregării, această relație este reprezentată de un diamant gol pe partea clasei care conține, care este legat prin intermediul unui segment de linie dreaptă de clasa care conține. De exemplu:
Aceasta este o relație de agregare care indică faptul că clasa Well conține clasa Duck.
Cum este implementată agregarea în Java?
Implementarea agregării în Java este relativ simplă. Este doar o chestiune de a crea două clase și apoi de a face referire la prima clasă în a doua.
Pe lângă stabilirea unei relații „have a” sau „have to”, agregarea Java se caracterizează printr-o relație slabă între obiectul container și conținut. Aceasta înseamnă că distrugerea unuia nu implică distrugerea celuilalt. Pentru a înțelege acest tip de relație, relația dintre un profesor și elevii săi poate fi luată ca exemplu. În acest caz, dispariția sau decesul profesorului nu are ca rezultat dispariția sau decesul elevilor săi.
Cazul opus ar fi relația dintre o ființă umană și inima lui. Nu există nicio îndoială că inima este cuprinsă în ființa umană, dar această relație este diferită de cea de agregare. Asta pentru că, în acest caz, ambele depind unul de celălalt. Distrugerea ființei umane distruge și inima, deoarece pentru a funcționa are nevoie de nutrienții și oxigenarea pe care organismul le oferă. Pe de altă parte, distrugerea inimii distruge și ființa umană, deoarece fără inimă nu putem trăi (excluzând cazurile de transplanturi sau alte metode de susținere artificială a vieții).
Exemplu de agregare
Următorul cod exemplifica implementarea agregării ca formă de asociere între două clase folosind Java. Exemplul este despre un program pentru a urmări ce angajați ai unei companii au propria mașină și care nu, precum și care au biciclete și care nu.
Deoarece căutăm să stabilim o relație care să indice că angajatul „are” o mașină și/sau că angajatul „are” o bicicletă, este o relație de agregare între clasa căreia îi va aparține angajatul (pe care o vom numi Angajat , din motive evidente) și două clase suplimentare, una pentru mașină și una pentru bicicletă.
Primul lucru de făcut în aceste cazuri este să creați clasele respective. În acest caz, există trei clase: una pentru mașină, una pentru bicicletă și una pentru angajat. Următoarea figură arată codul pentru crearea acestor clase, care sunt numite Mașină, Bicicletă și Angajat.
În codul de mai sus puteți vedea, de asemenea, că fiecare clasă are anumite atribute asociate cu ea. În cazul mașinii, acesta are ca atribute modelul, culoarea și plăcuțele de înmatriculare, toate asociate mașinii. La fel se întâmplă și cu bicicleta, care este asociată cu un număr de înmatriculare și cu modelul.
Când ne uităm la clasa Employee, observăm că această clasă are atributele monbreemp , care reprezintă numele angajatului, și empid, care reprezintă numărul de identificare al angajatului; apoi face referire la clasele Car și Bike, creând asocierea de agregare între aceste clase. În cele din urmă, evidența unui angajat este creată împreună cu mașina și bicicleta acestuia.
Rețineți că, în acest exemplu, referirea la clasele Mașină și Bicicletă din clasa Angajat face posibilă accesarea atributelor biciclete și mașini din cadrul clasei Angajat.
Rezultatul acestui program ar fi:
________Detalii despre angajat________
Numele angajatului: Xavier
Număr de identificare a angajatului: 210921
________Detaliile mașinii angajatului________
Model auto: Corolla
Culoare mașină: verde
Numărul de înmatriculare al mașinii: XFZ-043
________Detalii despre bicicleta angajatului________
Model de bicicleta: MERIDA
Plăci pentru biciclete: LAA-11B
Referințe
- Agregare în programarea Java . (2020). ICHI.PRO. https://ichi.pro/es/agregacion-en-programacion-java-144087060492693
- Barquinero, JMM (2019). Agregare Vs Compoziție în diagrame de clasă. UML. | Blog SEAS . Blogul SEAS. https://www.seas.es/blog/informatica/agregacion-vs-composicion-en-diagramas-de-clases-uml/
- Mentoring software. (2019). OOP8 – Programare orientată pe obiecte în Java – Diagrame UML și OOP – Exerciții [Video]. Youtube. https://www.youtube.com/watch?v=-Gy7Rf_wOeY