java composition what is composition java
In deze zelfstudie over Java-compositie wordt uitgelegd wat compositie en aggregatie in Java is en wat de verschillen daartussen zijn:
In de laatste paar tutorials hebben we overerving in Java in detail besproken. Overerving in Java is een soort 'IS-A' -relatie die aangeeft dat een object ‘een soort’ een ander object is. Bijvoorbeeld, een auto is een type of soort voertuig.
Objectgeoriënteerd programmeren biedt een ander type relatie, de 'HAS-A' -relatie. In deze tutorial zullen we de has-a-relatie in detail bespreken.
Bezoek hier om Java vanaf het begin te leren.
Wat je leert:
- Zelfstudie over Java-compositie
- Vereniging in Java
- Verschillen tussen aggregatie versus compositie
- Samenstelling Vs. Erfenis
- Gevolgtrekking
Zelfstudie over Java-compositie
De ‘has-a’ -relatie wordt in Java genoemd Samenstelling Door gebruik te maken van 'has-a'-relatie of compositie zorgen we ervoor dat code herbruikbaar is in onze programma's.
Dus door onze programma's de ‘has-a’ -relatie te laten gebruiken, doen we hier dat we ons programma een instantie van een klasse rechtstreeks laten gebruiken in plaats van deze uit een andere klasse te ‘uitbreiden’, zoals we doen in geval van overerving.
Het onderstaande diagram toont zowel ‘is-a’ als ‘has-a’ relaties in Java.
Zoals blijkt uit het bovenstaande diagram, delen auto en voertuig de ‘IS-A’ -relatie, aangezien een auto een voertuig is. Daarom creëren we een auto-object van het bestaande voertuigobject door er meer kenmerken aan toe te voegen.
In het diagram delen auto en motor de ‘Has-a’ -relatie. Een auto heeft altijd een motor. Dus wat we hier doen, is dat we de eigenschappen van het Engine-object niet uitbreiden, maar dat we het Engine-object rechtstreeks gebruiken. Dit gebeurt in Java met compositie.
Vandaar dat, naast inkapseling, abstractie en polymorfisme, overerving en compositie ook belangrijke kenmerken zijn van Objectgeoriënteerd programmeren (OOP).
De ‘has-a’ relaties bepalen meestal of een bepaald object een ander object heeft. Dus wat we hier doen, is dat we een object hergebruiken en zo codeduplicatie en fouten verminderen. Dit komt omdat we in onze klas een volledig ontwikkeld en getest object gebruiken.
Laten we beginnen met de bespreking van een speciale relatie, genaamd 'Associatie' in Java, waaruit we compositie en andere relaties afleiden.
Vereniging in Java
Associatie in Java kan worden gedefinieerd als een relatie die bestaat tussen twee individuele klassen met behulp van hun afzonderlijke objecten. Associatie in Java kan de volgende relaties hebben.
- Een op een: Eén object is gekoppeld aan precies één object.
- Een te veel: Een object kan met veel objecten worden geassocieerd.
- Veel-op-een: Er kunnen veel objecten aan één object worden gekoppeld.
- Veel te veel: Meer dan één object gekoppeld aan meer dan één ander object.
Wanneer een relatie tot stand is gebracht, communiceren de bevattende objecten (objecten die andere objecten als hun leden hebben) met het opgenomen object om hun eigenschappen en kenmerken opnieuw te gebruiken. Associatie heeft twee vormen, namelijk Samenstelling en Aggregatie.
De onderstaande afbeelding laat dit zien:
Zoals te zien is in het bovenstaande diagram, omvat de Association Samenstelling en aggregatie. Compositie is een meer specifieke term en aggregatie is algemener dan compositie. Deze formulieren zijn gebaseerd op het soort relaties dat ze ondersteunen.
Voordat we verder gaan met Composition en Aggregation, laten we een Java-programma implementeren om de Association in Java te demonstreren.
Uitgang:
Het bovenstaande programma demonstreert een verband in Java. Hier hebben we een klassenrekening die een banknaam en rekeningnummer heeft als privé-leden. Vervolgens hebben we een werknemersklasse. We weten dat elke medewerker een rekeningnummer krijgt voor het storten van salaris etc.
Dus wat we doen is, in plaats van een andere klasse of methode te schrijven om de bankrekeninggegevens van de werknemer in te lezen, gebruiken we de bestaande accountklasse direct opnieuw. Met andere woorden, we koppelen een accountobject aan de werknemer zodat we de bankrekeninggegevens van de werknemer krijgen. Het bovenstaande voorbeeld doet dit precies.
Compositie in Java
De compositie is een vorm van vereniging. De compositie kan worden gedefinieerd als een associatie waarin de ene klasse een andere klasse bevat en deze bevatte klasse is zodanig afhankelijk van de bevattende klasse dat deze niet onafhankelijk kan bestaan.
We hebben hierboven een voorbeeld van een has-a-relatie gezien. Daarin hadden we een auto-object met een motor. Dit is een voorbeeld van compositie. Hierbij kan een motor niet zelfstandig bestaan zonder auto.
De samenstelling is beperkter in vergelijking met Aggregation. De compositie is geen Java-functie. Het wordt vooral beschouwd als een ontwerptechniek.
Het volgende diagram toont een compositievoorbeeld.
wat is een beveiligingssleutel voor wifi
Hierin heeft een Medewerker een bankrekening. We weten dat een bankrekening niet kan bestaan zonder een rekeninghouder. Zonder rekeninghouder wordt het slapend.
We kunnen compositie gebruiken om objecten te modelleren die andere objecten als leden hebben en deze objecten hebben onderling een ‘heeft-een’ relatie.
In compositie bevindt een object zich in een ander object, dus wanneer het bevattende object wordt vernietigd; het andere object wordt ook vernietigd
We kunnen de compositie-relatie dus zien als een 'deel-van-een-geheel' relatie waarin de een deel bestaat niet zonder de heel Dus als het geheel wordt vernietigd, wordt het deel ook verwijderd. Dit betekent dat het geheel een sterkere relatie heeft met het onderdeel.
Voorbeeld van een Java-compositie
Hieronder wordt het programma gegeven om de compositie te demonstreren.
Het systeem dat we hier hebben gebruikt, wordt hieronder weergegeven.
Dus in dit programma hebben we drie klassen, zoals hierboven weergegeven. Honda is een auto, dus het strekt zich uit van de klasse auto. CarEngine Object wordt gebruikt in de Honda-klasse.
Het programma is hieronder weergegeven.
Uitgang:
oracle pl / sql interviewvragen en antwoorden
De output toont dus de eigenschappen van Honda-auto's. Het toont ook de output van een methode uit de CarEngine-klasse die we hebben gebruikt als lid van de Honda-klasse met behulp van compositie.
Dit programma liet zien hoe we compositie kunnen gebruiken in een Java-programma.
Aggregatie in Java
Aggregatie is een andere vorm van associatie in Java. Maar in het geval van aggregatie is alleen de eenrichtingsrelatie tussen de objecten mogelijk. Bijvoorbeeld, een werknemer heeft een woonadres. Maar omgekeerd, het huisadres heeft werknemers, klinkt niet goed.
Evenzo heeft een leerling een adres, maar 'adres heeft een leerling' klopt niet. Net als bij compositie, geeft aggregatie ook de 'has-a'-relatie weer. Dit betekent dat een klasse een object van een andere klasse bevat.
Het onderstaande diagram is een voorbeeld van een aggregatie.
Het bovenstaande voorbeeld kan worden geïnterpreteerd als het College personeel en studenten heeft.
Dus wanneer moeten we precies voor Aggregation gaan?
We zouden aggregatie moeten gebruiken als het niet nodig is om een 'is-a' -relatie of overerving te gebruiken. Als we de ‘is-a’ -relatie kunnen behouden gedurende de hele toepassing of levensduur van een object, kunnen we overerving implementeren voor hergebruik van code.
Anders is het het beste om aggregatie te gebruiken voor hergebruik van code. Laten we nu een voorbeeldaggregatie in Java implementeren.
Het voorbeeldsysteem dat we hebben gebruikt, is als volgt:
Hier hebben we een ‘Instituut’-klas. Instituut kan verschillende afdelingen of vestigingen hebben. Elke vestiging heeft op zijn beurt meerdere studenten. In dit programma tellen we het totale aantal studenten in het hele instituut. Hiervoor gebruiken we aggregatie. Het klasse Instituut bevat het Branch-object.
Het branch-object heeft een student-object. Dus in de Institute-klasse die het Branch-object gebruikt, tellen we het totale aantal studenten. Hiervoor gebruiken we een lijst met vestigingen in een instituut.
Het Java-programma wordt hieronder gegeven.
Uitgang:
Daarom zijn aggregatie en samenstelling twee vormen van associatie die we hier hebben besproken. Als we de ‘is-a’ -relatie tussen objecten niet nodig hebben of niet kunnen vertegenwoordigen, kunnen we gaan voor compositie als we een sterkere relatie tussen objecten willen of voor aggregatie als we een eenrichtingsrelatie willen.
Zowel aggregatie als compositie helpen ons om code in Java te hergebruiken.
Verschillen tussen aggregatie versus compositie
Zowel compositie als aggregatie zijn onderdelen van de associatie die een ‘heeft-een’ -relatie weergeeft. Beide technieken zijn geen Java-functies en hebben geen directe manier om te implementeren, maar kunnen worden geïmplementeerd met behulp van Java-code.
Door compositie en aggregatie kunnen we de code hergebruiken. Herbruikbaarheid van code vermindert de bugs in de code en maakt de applicatie ook stabieler.
Hieronder staan enkele verschillen tussen aggregatie en compositie vermeld.
Aggregatie | Samenstelling |
---|---|
Door aggregatie kunnen onderliggende objecten of ingesloten objecten onafhankelijk bestaan. Bijvoorbeeld in een relatie waar de school werknemers heeft, als we de school verwijderen, blijven de werknemers en kunnen ze zelfstandig functioneren. | In compositie kan het ingesloten object niet onafhankelijk bestaan. Bijvoorbeeld een auto heeft motor. Als we Auto verwijderen, kan de motorklasse niet alleen functioneren. |
Aggregatie is een ‘heeft-een'-relatie. | De compositie is een vorm van ‘heeft-een'-relatie, maar wordt gezien als een deel-van-een-geheel-relatie. |
De aggregatie heeft slechts één op één koppeling. | Compositie maakt andere relaties mogelijk die in de vereniging worden geboden. |
De aggregatie heeft een zwakke associatie tussen objecten. | De compositie heeft een sterke associatie tussen objecten. |
Samenstelling Vs. Erfenis
Samenstelling | Erfenis |
---|---|
De compositie geeft de ‘Has-A’ -relatie weer. | Overerving staat voor 'Is-A'-relatie. |
Makkelijker om de implementatie van bevattende objecten te wijzigen. | Wanneer een implementatie verandert, verandert de hele hiërarchie van overerving. |
Heeft een dynamische of looptijdbinding. | Heeft een statische of compilatietijdbinding. |
De front-end class-interface kan eenvoudig worden gewijzigd zonder de back-end-klassen te beïnvloeden. | Wijzigingen in methoden of prototypes zijn van invloed op alle klassen. |
De compositie wordt gebruikt wanneer we niet meer kenmerken of kenmerken aan een bestaand object hoeven toe te voegen. | Overerving wordt gebruikt wanneer er meer functies moeten worden toegevoegd aan overgeërfde klassen. |
Veel Gestelde Vragen
V # 1) Wat is het verschil tussen ‘IS - A’ en ‘HAS - A’ relatie?
Antwoord: In objectgeoriënteerd programmeren vertegenwoordigen IS-A-relaties overerving waarbij een kindklasse ‘een soort’ een bovenliggende klasse is. De Has-a-relatie is een ‘part-of-a-whole’ -relatie die wordt vertegenwoordigd door compositie en aggregatie. Overerving is een statische binding, terwijl Composition een dynamische binding is.
Vraag 2) Wat is aggregatie en compositie in Java?
Antwoord: In Composition zijn de twee objecten nauw met elkaar verbonden, d.w.z. wanneer het object (Bevattend object) dat een ander object bezit (bevat object) wordt vernietigd, wordt het andere object automatisch vernietigd omdat het niet zelfstandig kan functioneren.
In Aggregation kunnen het bevattende en het ingesloten object onafhankelijk functioneren. Dit komt doordat in Aggregation het ene object een ander object gebruikt.
V # 3) Waarom gebruiken we Composition in Java?
Antwoord: Composition stelt ons in staat om de bestaande code te hergebruiken, waardoor de complexiteit van de code wordt verminderd en ook de bugs in de code worden verminderd. Door compositie te gebruiken, kunnen we alleen hergebruiken wat we nodig hebben van het object en ook de zichtbaarheid ervan bepalen.
V # 4) Wat is het nut van associatie?
Antwoord: Associatie vertegenwoordigt de ‘heeft-een’ -relatie in Java. Associatie in Java wordt gebruikt wanneer een object de functionaliteit en services van een ander object moet gebruiken. Samenstelling en aggregatie zijn twee vormen van associatie.
V # 5) Is compositie beter dan overerving?
Antwoord: Het hangt af van het OOP-systeem dat we coderen. Als we de objecten met IS-A-relatie gedurende hun hele levensduur in de toepassing kunnen weergeven, is overerving een betere optie. Als we de code willen hergebruiken en het objectsysteem niet kunnen representeren met de IS-A-relatie, dan is de compositie beter.
Ook als we vaak front-end klassen willen veranderen zonder de back-end klassen te verstoren, dan is de samenstelling beter omdat in het geval van overerving kleine veranderingen meestal de gehele overervingshiërarchie beïnvloeden.
Gevolgtrekking
In deze tutorial hebben we de HAS-A-relatie in Java besproken. Samenstelling en aggregatie zijn de vormen die de ‘HAS-A’ -relatie implementeren. We hebben beide implementaties vergeleken.
Hoewel beide objecten van een andere klasse bevatten, is compositie de eigenaar van het object, terwijl aggregatie het object gewoon gebruikt. We hebben ook de samenstelling en overerving in Java vergeleken.
Kijk hier om A-Z van Java-trainingshandleidingen te zien.
Aanbevolen literatuur
- Java SWING-zelfstudie: afhandeling van containers, componenten en gebeurtenissen
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- TreeMap in Java - Tutorial met Java TreeMap-voorbeelden
- Java Float-zelfstudie met programmeervoorbeelden
- Java String met String Buffer en String Builder Tutorial
- Java-implementatie: creatie en uitvoering van Java JAR-bestand
- Java Class Vs Object - Hoe klasse en object in Java te gebruiken
- Java Basics: Java Syntax, Java Class en Core Java Concepts