Tabla de Contenidos
Aggregation är en typ av association mellan klasser som kan utföras i olika objektorienterade programmeringsspråk, som Java. Det är en process som gör att kod kan återanvändas snabbt och effektivt, vilket gör programmen mycket lättare att skriva och köra mer effektivt.
Generellt sett hänvisar aggregering till en klass inom en annan klass. Detta skapar vad som kallas en HAS-A-relation mellan den innehållande klassen och den innehållande klassen. Dessa relationer kännetecknas av att vara enkelriktade, eftersom de innebär att en av klasserna innehåller den andra; detta förhindrar att motsatsen händer.
Till exempel kan vi säga att ett företag, som ur programmeringssynpunkt kan ses som en objektklass, har en uppsättning anställda; dessa kan i sin tur också ses som objekt med sina egna attribut. I det här fallet är den innehållande klassen företaget, medan den innehållande klassen är de anställda. Denna relation är bara meningsfull i denna riktning, det vill säga från företaget till den anställde. Förhållandet i motsatt riktning är inte vettigt, eftersom det skulle vara som att säga att den anställde innehåller företaget. Det faktum att detta inte är vettigt visar att det är en enkelriktad relation.
Aggregation i klassdiagram
I Unified Modeling Language (UML), som är en typ av universellt visuellt språk skapat för att designa komplexa mjukvarusystem, används klassdiagram för att beskriva strukturen och egenskaperna hos ett system. I dessa diagram representeras varje klass och dess relationer med de andra med hjälp av geometriska figurer. I fallet med aggregering representeras detta förhållande av en ihålig diamant på sidan av den innehållande klassen, som är ansluten med hjälp av ett rät linjesegment till den innehållande klassen. Till exempel:
Detta är ett aggregeringsförhållande som indikerar att Well-klassen innehåller Duck-klassen.
Hur implementeras aggregering i Java?
Implementeringen av aggregering i Java är relativt enkel. Det är bara att skapa två klasser och sedan referera till den första klassen i den andra.
Förutom att etablera en ”ha en” eller ”måste”-relation, kännetecknas Java-aggregering av en svag relation mellan containerobjektet och innehållet. Detta betyder att förstörelsen av den ena inte innebär att den andra förstörs. För att förstå denna typ av relation kan relationen mellan en lärare och hans elever tas som exempel. I det här fallet leder lärarens försvinnande eller död inte till att hans elever försvinner eller dör.
Det motsatta fallet skulle vara förhållandet mellan en människa och hennes hjärta. Det råder ingen tvekan om att hjärtat finns i människan, men detta förhållande skiljer sig från det för aggregering. Detta beror på att båda i det här fallet är beroende av varandra. Människans förstörelse förstör också hjärtat, eftersom det för att fungera behöver de näringsämnen och syresättning som kroppen ger. Å andra sidan förstör förstörelsen av hjärtat också människan, eftersom vi inte kan leva utan ett hjärta (exklusive fall av transplantationer eller andra metoder för artificiell livsuppehållande).
Aggregationsexempel
Följande kod exemplifierar implementeringen av aggregering som en form av association mellan två klasser som använder Java. Exemplet handlar om ett program för att hålla reda på vilka anställda på ett företag som har egen bil och vilka som inte har det, samt vilka som har cyklar och vilka som inte har det.
Eftersom vi är ute efter att etablera en relation som indikerar att den anställde ”har” en bil och/eller att den anställde ”har” en cykel, är det ett aggregeringsförhållande mellan den klass som den anställde kommer att tillhöra (som vi kommer att kalla Anställd , av uppenbara skäl) och ytterligare två klasser, en för bilen och en för cykeln.
Det första du ska göra i dessa fall är att skapa respektive klass. I det här fallet finns det tre klasser: en för bilen, en för cykeln och en för den anställde. Följande figur visar koden för att skapa dessa klasser, som heter Bil, Cykel och Anställd.
I ovanstående kod kan du också se att varje klass har vissa attribut kopplade till sig. När det gäller bilen har den som attribut modellen, färgen och registreringsskyltarna, allt förknippat med bilen. Detsamma händer med cykeln, som är förknippad med ett registreringsnummer och modellen.
När vi tittar på klassen Employee märker vi att den här klassen har attributen monbreemp , som representerar den anställdes namn, och empid, som representerar den anställdes identifikationsnummer; den refererar sedan till bil- och cykelklasserna, vilket skapar en aggregeringsassociation mellan dessa klasser. Slutligen skapas en anställds register tillsammans med hans bil och cykel.
Observera att i det här exemplet, hänvisning till bil- och cykelklasserna inom klassen Employee gör det möjligt att komma åt cykel- och bilattributen från klassen Employee.
Resultatet av detta program skulle vara:
________anställda detaljer________
Anställds namn: Xavier
Anställds identifikationsnummer: 210921
___________ Anställds bildetaljer________
Bilmodell: Corolla
Bilfärg: Grön
Bilens registreringsskylt: XFZ-043
___________ Anställd cykel detaljer________
Cykelmodell: MERIDA
Cykelskyltar: LAA-11B
Referenser
- Aggregation i Java-programmering . (2020). ICHI.PRO. https://ichi.pro/es/agregacion-en-programacion-java-144087060492693
- Barquinero, JMM (2019). Aggregation vs sammansättning i klassdiagram. UML. | SEAS blogg . SEAS blogg. https://www.seas.es/blog/informatica/agregacion-vs-composicion-en-diagramas-de-clases-uml/
- Programvara mentorskap. (2019). OOP8 – Objektorienterad programmering i Java – UML Diagram & OOP – Övningar [Video]. Youtube. https://www.youtube.com/watch?v=-Gy7Rf_wOeY