java composition what is composition java
In diesem Tutorial zur Java-Komposition wird erläutert, was Komposition und Aggregation in Java ist und welche Unterschiede zwischen ihnen bestehen:
In den letzten Tutorials haben wir die Vererbung in Java ausführlich besprochen. Vererbung in Java ist eine Art von 'IS-A' -Beziehung, die angibt, dass ein Objekt eine Art von einem anderen Objekt ist. Beispielsweise, Ein Auto ist eine Art oder ein Fahrzeug.
Die objektorientierte Programmierung bietet eine andere Art von Beziehung, die als 'HAS-A' -Beziehung bezeichnet wird. In diesem Tutorial werden wir die Beziehung zwischen Has und A im Detail diskutieren.
=> Besuchen Sie hier, um Java von Grund auf neu zu lernen.
Was du lernen wirst:
- Java Composition Tutorial
- Assoziation In Java
- Unterschiede zwischen Aggregation und Zusammensetzung
- Zusammensetzung Vs. Erbe
- Fazit
Java Composition Tutorial
Die 'has-a' -Beziehung in Java wird aufgerufen Komposition . Durch die Verwendung von 'has-a' -Beziehung oder -Komposition stellen wir die Wiederverwendbarkeit von Code in unseren Programmen sicher.
Indem wir dafür sorgen, dass unsere Programme die Beziehung 'has-a' verwenden, tun wir hier, dass unser Programm eine Instanz einer Klasse direkt verwendet, anstatt sie wie bei einer Vererbung von einer anderen Klasse zu 'erweitern'.
Das folgende Diagramm zeigt sowohl 'is-a' - als auch 'has-a' -Beziehungen in Java.
Wie aus dem obigen Diagramm ersichtlich, teilen Auto und Fahrzeug die Beziehung „IS-A“, da ein Auto ein Fahrzeug ist. Daher erstellen wir aus dem vorhandenen Fahrzeugobjekt ein Autoobjekt, indem wir ihm weitere Merkmale hinzufügen.
In der Abbildung teilen Auto und Motor die Beziehung „Hat-a“. Ein Auto hat immer einen Motor. Wir erweitern hier also nicht die Eigenschaften des Engine-Objekts, sondern verwenden das Engine-Objekt direkt. Dies erfolgt in Java mithilfe der Komposition.
Daher sind Vererbung und Komposition neben Kapselung, Abstraktion und Polymorphismus auch wichtige Merkmale der objektorientierten Programmierung (OOP).
Die 'has-a' -Beziehungen bestimmen normalerweise, ob ein bestimmtes Objekt ein anderes Objekt hat. Wir verwenden hier also ein Objekt wieder und reduzieren so die Codeduplizierung sowie Fehler. Dies liegt daran, dass wir in unserer Klasse ein vollständig entwickeltes und getestetes Objekt verwenden.
Beginnen wir mit der Diskussion einer speziellen Beziehung namens 'Assoziation' in Java, aus der wir Komposition und andere Beziehungen ableiten.
Assoziation In Java
Die Zuordnung in Java kann als eine Beziehung definiert werden, die zwischen zwei einzelnen Klassen unter Verwendung ihrer separaten Objekte besteht. Die Zuordnung in Java kann die folgenden Beziehungen haben.
- Eins zu eins: Ein Objekt, das genau einem Objekt zugeordnet ist.
- Eins zu viele: Ein Objekt kann vielen Objekten zugeordnet werden.
- Viele zu eins: Viele Objekte können einem Objekt zugeordnet werden.
- Viel zu viel: Mehr als ein Objekt, das mehr als einem anderen Objekt zugeordnet ist.
Wenn eine Beziehung hergestellt wird, kommunizieren die enthaltenen Objekte (Objekte, deren Mitglieder andere Objekte sind) mit dem enthaltenen Objekt, um ihre Eigenschaften und Merkmale wiederzuverwenden. Assoziation hat zwei Formen, d. H. Zusammensetzung und Aggregation.
Die folgende Abbildung zeigt dies:
Wie aus dem obigen Diagramm ersichtlich, umfasst die Zuordnung Zusammensetzung und Aggregation. Zusammensetzung ist ein spezifischerer Begriff und Aggregation ist allgemeiner als Zusammensetzung. Diese Formulare basieren auf der Art der Beziehungen, die sie unterstützen.
Bevor wir mit Komposition und Aggregation fortfahren, implementieren wir ein Java-Programm, um die Assoziation in Java zu demonstrieren.
import java.io.*; // class Account class Account { private String bank_name; private long Account_number; // initialize bank name and account number Account(String bank_name, long Account_number) { this.bank_name = bank_name; this.Account_number = Account_number; } //read bank name public String getBankName() { returnthis.bank_name; } //read account number public long getAccountNumber() { returnthis.Account_number; } } // employee class class Employee { private String emp_name; // initialize employee name Employee(String emp_name) { this.emp_name = emp_name; } //read employee name public String getEmployeeName() { return this.emp_name; } } // Associate both the classes class Main { public static void main (String() args) { Employee emp = new Employee('Andrew'); Account acc = new Account('Citi Bank', 13319); System.out.println(emp.getEmployeeName() + ' has an account with ' + acc.getBankName() + ' with Account Number:' + acc.getAccountNumber()); } }
Ausgabe:
Das obige Programm demonstriert eine Assoziation in Java. Hier haben wir ein Klassenkonto, das einen Banknamen und eine Kontonummer als private Mitglieder hat. Als nächstes haben wir eine Mitarbeiterklasse. Wir wissen, dass jeder Mitarbeiter eine Kontonummer für die Einzahlung von Gehältern usw. hat.
Anstatt eine andere Klasse oder Methode zum Einlesen der Bankkontodaten des Mitarbeiters zu schreiben, verwenden wir die vorhandene Kontoklasse direkt wieder. Mit anderen Worten, wir ordnen dem Mitarbeiter ein Kontoobjekt zu, damit wir die Bankkontodaten des Mitarbeiters erhalten. Das obige Beispiel macht genau das.
Komposition in Java
Die Zusammensetzung ist eine Form der Assoziation. Die Zusammensetzung kann als Assoziation definiert werden, in der eine Klasse eine andere Klasse enthält, und diese enthaltene Klasse hängt von der enthaltenden Klasse so ab, dass sie nicht unabhängig existieren kann.
Wir haben oben ein Beispiel für eine Beziehung gesehen. Darin hatten wir ein Autoobjekt, das einen Motor hat. Dies ist ein Beispiel für die Zusammensetzung. Dabei kann ein Motor ohne Auto nicht eigenständig existieren.
Die Zusammensetzung ist im Vergleich zur Aggregation eingeschränkter. Die Komposition ist keine Java-Funktion. Es wird hauptsächlich als Designtechnik angesehen.
Das folgende Diagramm zeigt ein Zusammensetzungsbeispiel.
Wie lautet der Benutzername und das Passwort meines Routers?
Dabei hat ein Mitarbeiter ein Bankkonto. Wir wissen, dass ein Bankkonto ohne einen Kontoinhaber nicht existieren kann. Ohne Kontoinhaber wird es ruhend.
Wir können Komposition verwenden, um Objekte zu modellieren, deren Mitglieder andere Objekte sind, und diese Objekte haben eine Beziehung zwischen sich.
In der Komposition ist ein Objekt in einem anderen Objekt enthalten, also wenn das enthaltende Objekt zerstört wird; Das andere Objekt wird ebenfalls zerstört
Wir können die Kompositionsbeziehung also als einen „Teil eines Ganzen“ betrachten, in dem die Teil existiert nicht ohne die ganze . Wenn also das Ganze zerstört wird, wird auch der Teil gelöscht. Dies bedeutet, dass das Ganze eine stärkere Beziehung zum Teil hat.
Java-Kompositionsbeispiel
Im Folgenden finden Sie das Programm zur Demonstration der Komposition.
Das hier verwendete System ist wie folgt dargestellt.
In diesem Programm haben wir also drei Klassen, wie oben gezeigt. Honda ist ein Auto, also erstreckt es sich von der Klasse Auto. CarEngine Object wird in der Honda-Klasse verwendet.
Das Programm ist unten angegeben.
class CarEngine { public void startEngine(){ System.out.println('Car Engine Started.'); } public void stopEngine(){ System.out.println('Car Engine Stopped.'); } } class Car { private String color; private int max_Speed; public void carDetails(){ System.out.println('Car Color= '+color + '; Max Speed= ' + max_Speed); } //set car color public void setColor(String color) { this.color = color; } //set car max_Speed public void setMaxSpeed(int max_Speed) { this.max_Speed = max_Speed; } } class Honda extends Car{ public void HondaStart(){ CarEngine Honda_Engine = new CarEngine(); //composition Honda_Engine.startEngine(); } } public class Main { public static void main(String() args) { Honda HondaCity = new Honda(); HondaCity.setColor('Silver'); HondaCity.setMaxSpeed(180); HondaCity.carDetails(); HondaCity.HondaStart(); } }
Ausgabe:
Somit zeigt die Ausgabe die Eigenschaften von Honda-Autos. Es zeigt auch die Ausgabe einer Methode aus der CarEngine-Klasse, die wir als Mitglied der Honda-Klasse unter Verwendung von Komposition verwendet haben.
Dieses Programm hat gezeigt, wie wir Komposition in einem Java-Programm verwenden können.
Aggregation in Java
Aggregation ist eine andere Form der Assoziation in Java. Bei der Aggregation ist jedoch nur die Einwegbeziehung zwischen den Objekten zulässig. Beispielsweise, Ein Mitarbeiter hat eine Privatadresse. Umgekehrt klingt die Privatadresse jedoch nicht richtig.
Ebenso hat ein Schüler eine Adresse, aber 'Adresse hat einen Schüler' ist nicht sinnvoll. Wie die Komposition zeigt auch die Aggregation die Beziehung „hat-a“. Dies bedeutet, dass eine Klasse ein Objekt einer anderen Klasse enthält.
Das folgende Diagramm zeigt ein Aggregationsbeispiel.
Das obige Beispiel kann so interpretiert werden, dass das College Mitarbeiter und Studenten hat.
Wann genau sollten wir uns für die Aggregation entscheiden?
Wir sollten die Aggregation verwenden, wenn keine 'is-a' -Beziehung oder Vererbung erforderlich ist. Wenn wir die 'is-a' -Beziehung während der gesamten Anwendung oder Lebensdauer eines Objekts beibehalten können, können wir die Vererbung für die Wiederverwendung von Code implementieren.
Andernfalls ist es am besten, die Aggregation für die Wiederverwendbarkeit von Code zu verwenden. Lassen Sie uns nun eine Beispielaggregation in Java implementieren.
Das von uns verwendete Beispielsystem lautet wie folgt:
Hier haben wir eine Institutsklasse. Das Institut kann verschiedene Abteilungen oder Zweige haben. Jeder Zweig hat wiederum mehrere Studenten. In diesem Programm zählen wir die Gesamtzahl der Studierenden im gesamten Institut. Zu diesem Zweck verwenden wir die Aggregation. Die Klasse Institut enthält das Branch-Objekt.
Das Verzweigungsobjekt hat ein Schülerobjekt. In der Institutsklasse mit dem Branch-Objekt zählen wir also die Gesamtzahl der Schüler. Zu diesem Zweck verwenden wir eine Liste von Zweigstellen in einem Institut.
Das Java-Programm ist unten angegeben.
import java.io.*; import java.util.*; // Class Student class Student { String student_name; int student_id ; String student_dept; //Initialize Student class members Student(String student_name, int student_id, String student_dept) { this.student_name = student_name; this.student_id = student_id; this.student_dept = student_dept; } } //Branch class indiates the branch or department to which the student belongs class Branch { String Branch_name; private List students; //Each branch contain students //Initialize class members Branch(String Branch_name, List students) { this.Branch_name = Branch_name; this.students = students; } //return list of students public List getStudents() { return students; } } //Institure class contains branches which in turn have students class Institute { String instituteName; private List branches; //each institure have various branches //initialize members Institute(String instituteName, List branches) { this.instituteName = instituteName; this.branches = branches; } // count and return number of all students in the institute public int getAllStudentsInInstitute() { int noOfStudents = 0; List students; for(Branch branch : branches) { students = branch.getStudents(); for(Student s : students) { noOfStudents++; } } return noOfStudents; } } //Aggregate all the classes=> Institute (contains) branches (contains) Students class Main { public static void main (String() args) { //declare student objects Student s1 = new Student('Megan', 1, 'CSE'); Student s2 = new Student('Mia', 2, 'CSE'); Student s3 = new Student('John', 1, 'ETC'); Student s4 = new Student('Finn', 2, 'ETC'); // List of CSE Students. List cse_students = new ArrayList(); cse_students.add(s1); cse_students.add(s2); //List of ETC Students List etc_students = new ArrayList(); etc_students.add(s3); etc_students.add(s4); //declare Branch objects Branch CSE = new Branch('CSE', cse_students); Branch ETC = new Branch('ETC', etc_students); //make list of branches List branches = new ArrayList(); branches.add(CSE); branches.add(ETC); // creating an object of Institute. Institute institute = new Institute('NIT', branches); //display total number of students System.out.print('Total students in NIT institute: '); System.out.print(institute.getAllStudentsInInstitute()); } }
Ausgabe:
Daher sind Aggregation und Zusammensetzung zwei Formen der Assoziation, die wir hier diskutiert haben. Wenn wir keine Is-a-Beziehung zwischen Objekten benötigen oder nicht darstellen können, können wir uns für die Komposition entscheiden, wenn wir eine stärkere Beziehung zwischen Objekten wünschen, oder für die Aggregation, wenn wir eine Einwegbeziehung wünschen.
Sowohl die Aggregation als auch die Komposition helfen uns, Code in Java wiederzuverwenden.
Unterschiede zwischen Aggregation und Zusammensetzung
Sowohl Zusammensetzung als auch Aggregation sind Teile der Vereinigung, die eine Beziehung zwischen „hat und hat“ darstellt. Beide Techniken sind keine Java-Funktionen und können nicht direkt implementiert werden, sondern können mithilfe von Java-Code implementiert werden.
Zusammensetzung und Aggregation ermöglichen es uns, den Code wiederzuverwenden. Die Wiederverwendbarkeit von Code reduziert die Fehler im Code und macht die Anwendung stabiler.
Nachfolgend sind einige Unterschiede zwischen Aggregation und Zusammensetzung aufgeführt.
Anhäufung | Komposition |
---|---|
Durch die Aggregation können untergeordnete Objekte oder enthaltene Objekte unabhängig voneinander existieren. Zum Beispiel Wenn wir in einer Beziehung, in der die Schule Mitarbeiter hat, die Schule löschen, bleiben die Mitarbeiter und können selbstständig arbeiten. | In der Komposition kann das enthaltene Objekt nicht unabhängig existieren. Zum Beispiel Ein Auto hat Motor. Wenn wir Auto löschen, kann die Motorklasse nicht alleine funktionieren. |
Aggregation ist eine Beziehung, die man hat. | Die Komposition ist eine Form der Beziehung „hat eine Beziehung“, wird jedoch als Teil einer gesamten Beziehung angesehen. |
Die Aggregation hat nur eine Eins-zu-Eins-Zuordnung. | Die Zusammensetzung ermöglicht andere Beziehungen, die in der Assoziation bereitgestellt werden. |
Die Aggregation hat eine schwache Assoziation zwischen Objekten. | Die Komposition hat eine starke Assoziation zwischen Objekten. |
Zusammensetzung Vs. Erbe
Komposition | Erbe |
---|---|
Die Komposition zeigt die Beziehung „Has-A“. | Die Vererbung steht für eine Is-A-Beziehung. |
Einfachere Änderung der Implementierung von enthaltenen Objekten. | Wenn sich eine Implementierung ändert, ändert sich die gesamte Vererbungshierarchie. |
Hat eine dynamische oder Laufzeitbindung. | Hat eine statische oder Kompilierungszeitbindung. |
Die Front-End-Klassenschnittstelle kann einfach geändert werden, ohne dass dies Auswirkungen auf die Back-End-Klassen hat. | Änderungen an Methoden oder Prototypen wirken sich auf alle Klassen aus. |
Die Komposition wird verwendet, wenn einem vorhandenen Objekt keine weiteren Merkmale oder Merkmale hinzugefügt werden müssen. | Vererbung wird verwendet, wenn geerbten Klassen weitere Features hinzugefügt werden sollen. |
Häufig gestellte Fragen
F # 1) Was ist der Unterschied zwischen der Beziehung 'IS - A' und 'HAS - A'?
Antworten: In der objektorientierten Programmierung stellen IS-A-Beziehungen eine Vererbung dar, bei der eine untergeordnete Klasse eine Art übergeordnete Klasse ist. Die Has-a-Beziehung ist eine Teil-einer-Ganz-Beziehung, die durch Zusammensetzung und Aggregation dargestellt wird. Vererbung ist eine statische Bindung, während Komposition dynamische Bindung ist.
F # 2) Was ist Aggregation und Komposition in Java?
Antworten: In der Zusammensetzung sind die zwei Objekte eng miteinander verbunden, d. H. Wenn das Objekt (das ein Objekt enthält), das ein anderes Objekt (ein enthaltenes Objekt) besitzt, zerstört wird, wird das andere Objekt automatisch zerstört, da es nicht unabhängig voneinander funktionieren kann.
In der Aggregation können das enthaltende und das enthaltene Objekt unabhängig voneinander funktionieren. Dies liegt daran, dass in der Aggregation ein Objekt ein anderes Objekt verwendet.
F # 3) Warum verwenden wir Composition in Java?
schnelle Sortierung in c ++
Antworten: Durch die Komposition können wir den vorhandenen Code wiederverwenden, wodurch die Codekomplexität verringert und die Fehler im Code verringert werden. Mit der Komposition können wir nur das wiederverwenden, was wir vom Objekt benötigen, und auch seine Sichtbarkeit steuern.
F # 4) Was nützt die Assoziation?
Antworten: Die Assoziation repräsentiert die 'has-a' -Beziehung in Java. Die Zuordnung in Java wird verwendet, wenn ein Objekt die Funktionen und Dienste eines anderen Objekts verwenden muss. Zusammensetzung und Aggregation sind zwei Formen der Assoziation.
F # 5) Ist die Zusammensetzung besser als die Vererbung?
Antworten: Es hängt vom OOP-System ab, das wir codieren. Wenn wir die Objekte mit IS-A-Beziehung während ihrer gesamten Lebensdauer in der Anwendung darstellen können, ist die Vererbung eine bessere Option. Wenn wir den Code wiederverwenden möchten und das Objektsystem mit der IS-A-Beziehung nicht darstellen können, ist die Zusammensetzung besser.
Wenn wir häufig Front-End-Klassen ändern möchten, ohne die Back-End-Klassen zu stören, ist die Zusammensetzung besser, da bei Vererbung geringfügige Änderungen hauptsächlich die gesamte Vererbungshierarchie betreffen.
Fazit
In diesem Tutorial haben wir die HAS-A-Beziehung in Java erläutert. Zusammensetzung und Aggregation sind die Formen, die die Beziehung „HAS-A“ implementieren. Wir haben beide Implementierungen verglichen.
Während beide Objekte einer anderen Klasse enthalten, besitzt die Komposition das Objekt, während die Aggregation einfach das Objekt verwendet. Wir haben auch die Zusammensetzung und Vererbung in Java verglichen.
=> Hier finden Sie A-Z der Java-Schulungsanleitungen.
Literatur-Empfehlungen
- Java SWING Tutorial: Container-, Komponenten- und Ereignisbehandlung
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- TreeMap in Java - Tutorial mit Java TreeMap-Beispielen
- Java Float Tutorial mit Programmierbeispielen
- Java String mit String Buffer und String Builder Tutorial
- Java-Bereitstellung: Erstellung und Ausführung einer Java-JAR-Datei
- Java Class Vs Object - Verwendung von Klasse und Objekt in Java
- Java-Grundlagen: Java-Syntax, Java-Klasse und Java-Kernkonzepte