Tabla de Contenidos
Aggregering er en type assosiasjon mellom klasser som kan utføres i ulike objektorienterte programmeringsspråk, for eksempel Java. Det er en prosess som gjør at kode kan gjenbrukes raskt og effektivt, noe som gjør programmer mye enklere å skrive og kjører mer effektivt.
Generelt sett refererer aggregering til en klasse innenfor en annen klasse. Dette skaper det som kalles en HAS-A-relasjon mellom den inneholdende klassen og den inneholdende klassen. Disse relasjonene er karakterisert ved å være ensrettet, siden de innebærer at en av klassene inneholder den andre; dette forhindrer at det motsatte skjer.
For eksempel kan vi si at en bedrift, som kan sees fra et programmeringssynspunkt som en objektklasse, har et sett med ansatte; disse kan på sin side også sees på som objekter med sine egne attributter. I dette tilfellet er den inneholdende klassen selskapet, mens den inneholdende klassen er de ansatte. Dette forholdet gir bare mening i denne retningen, det vil si fra bedriften til den ansatte. Forholdet i motsatt retning gir ikke mening, siden det vil være som å si at den ansatte inneholder selskapet. At dette ikke gir mening viser at det er et enveisforhold.
Aggregering i klassediagrammer
I Unified Modeling Language (UML), som er en type universelt visuelt språk laget for å designe komplekse programvaresystemer, brukes klassediagrammer for å beskrive strukturen og egenskapene til et system. I disse diagrammene er hver klasse og dens forhold til de andre representert ved hjelp av geometriske figurer. Når det gjelder aggregering, er dette forholdet representert av en hul diamant på siden av den inneholdende klassen, som ved hjelp av et rett linjesegment er forbundet med den inneholdende klassen. For eksempel:
Dette er et aggregeringsforhold som indikerer at Well-klassen inneholder Duck-klassen.
Hvordan implementeres aggregering i Java?
Implementeringen av aggregering i Java er relativt enkel. Det er bare å lage to klasser og deretter referere til den første klassen i den andre.
I tillegg til å etablere en «ha en» eller «må»-relasjon, er Java-aggregering preget av et svakt forhold mellom beholderobjektet og innholdet. Dette betyr at ødeleggelsen av den ene ikke innebærer ødeleggelsen av den andre. For å forstå denne typen relasjoner kan forholdet mellom en lærer og hans elever tas som eksempel. I dette tilfellet resulterer ikke lærerens forsvinning eller død i at elevene hans forsvinner eller dør.
Det motsatte tilfellet ville være forholdet mellom et menneske og hans hjerte. Det er ingen tvil om at hjertet er inneholdt i mennesket, men dette forholdet er forskjellig fra aggregering. Dette er fordi begge i dette tilfellet er avhengige av hverandre. Ødeleggelsen av mennesket ødelegger også hjertet, siden det trenger næringsstoffene og oksygeneringen som kroppen gir for å fungere. På den annen side ødelegger hjertets ødeleggelse også mennesket, siden vi ikke kan leve uten et hjerte (unntatt tilfeller av transplantasjoner eller andre metoder for kunstig livsoppretting).
Aggregasjonseksempel
Følgende kode eksemplifiserer implementeringen av aggregering som en form for assosiasjon mellom to klasser som bruker Java. Eksemplet handler om et program for å holde styr på hvilke ansatte i en bedrift som har egen bil og hvilke som ikke har det, samt hvilke som har sykler og hvilke som ikke har det.
Siden vi ønsker å etablere et forhold som indikerer at den ansatte «har» bil og/eller at den ansatte «har» sykkel, er det et aggregeringsforhold mellom klassen som den ansatte skal tilhøre (som vi vil kalle Ansatt , av åpenbare grunner) og to tilleggsklasser, en for bilen og en for sykkelen.
Det første du må gjøre i disse tilfellene er å opprette de respektive klassene. I dette tilfellet er det tre klasser: en for bilen, en for sykkelen og en for den ansatte. Følgende figur viser koden for å lage disse klassene, som heter Bil, Sykkel og Ansatt.
I koden ovenfor kan du også se at hver klasse har visse attributter knyttet til seg. Når det gjelder bilen, har den som attributter modellen, fargen og skiltene, alt knyttet til bilen. Det samme skjer med sykkelen, som er knyttet til et skiltnummer og modellen.
Når vi ser på klassen Employee, legger vi merke til at denne klassen har attributtene monbreemp , som representerer den ansattes navn, og empid, som representerer den ansattes identifikasjonsnummer; den refererer deretter til bil- og sykkelklassene, og skaper den aggregerte assosiasjonen mellom disse klassene. Til slutt opprettes en ansatts post sammen med bilen og sykkelen hans.
Legg merke til at i dette eksempelet, ved å referere til bil- og sykkelklassene innenfor Employee-klassen, er det mulig å få tilgang til sykkel- og bilattributtene fra Employee-klassen.
Resultatet av dette programmet vil være:
________medarbeiderdetaljer________
Ansatt navn: Xavier
Ansatts identifikasjonsnummer: 210921
___________ Ansattes bildetaljer________
Bilmodell: Corolla
Bilfarge: Grønn
Bilskilt: XFZ-043
___________ Sykkeldetaljer for ansatte________
Sykkelmodell: MERIDA
Sykkelskilt: LAA-11B
Referanser
- Aggregering i Java-programmering . (2020). ICHI.PRO. https://ichi.pro/es/agregacion-en-programacion-java-144087060492693
- Barquinero, JMM (2019). Aggregasjon vs sammensetning i klassediagrammer. UML. | SEAS blogg . SEAS blogg. https://www.seas.es/blog/informatica/agregacion-vs-composicion-en-diagramas-de-clases-uml/
- Programvareveiledning. (2019). OOP8 – Objektorientert programmering i Java – UML Diagrammer & OOP – Øvelser [Video]. Youtube. https://www.youtube.com/watch?v=-Gy7Rf_wOeY