Java-Aggregation vs. Komposition

Musfirah Waseem 12 Oktober 2023
  1. Komposition in Java
  2. Aggregation in Java
  3. Komposition vs. Aggregation
  4. Arbeiten Sie mit Komposition in Java
  5. Arbeiten Sie mit Aggregation in Java
Java-Aggregation vs. Komposition

In Java sind Aggregation und Komposition zwei Konzepte, die eng miteinander verbunden sind. Komposition ist eine enge Assoziation zwischen Klassen, während Aggregation eine schwache Assoziation ist.

Komposition in Java

Zusammensetzung ist, wenn ein Basisklassenobjekt ein anderes abgeleitetes Klassenobjekt besitzt und das abgeleitete Klassenobjekt nicht ohne die Basisklasse existieren kann.

Zum Beispiel wird die Konstruktion eines Menschen mehrere Unterklassen haben: die Hand, das Bein und das Herz. Wenn ein menschliches Objekt stirbt, hören alle seine Unterteile auf, sinnvoll zu existieren.

Aggregation in Java

Aggregation ist, wenn ein Basisklassenobjekt und sein abgeleitetes Klassenobjekt unabhängig voneinander existieren können. Wenn wir beispielsweise eine Basisklasse Spieler konstruieren und daraus eine Klasse Team ableiten, würde das Team noch existieren, wenn das Objekt Spieler zerstört wird.

Auch wenn das Team aufgelöst wird, bleibt der Spieler weiterhin bestehen und kann einem anderen Team beitreten.

Komposition vs. Aggregation

Komposition Anhäufung
PART-OF-Relation oder spezielle HAS A-Relation HAT A Beziehung
Unidirektionale Abhängigkeit Bidirektionale Abhängigkeit
Starke Art der Assoziation Schwache Assoziationsart
Das Kind ist von der Elternklasse abhängig Das Kind ist unabhängig von der Elternklasse
Die UML-Diagrammdarstellung ist ein schwarzer Diamant Die UML-Diagrammdarstellung ist eine weiße Raute

Arbeiten Sie mit Komposition in Java

import java.io.*;
import java.util.*;
class Job {
  private int pay;
  private int id;

  public int getWage() {
    return pay;
  }
  public void setWage(int pay) {
    this.pay = pay;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
}
class Person {
  private Job job;

  public Person() {
    this.job = new Job();
    job.setWage(650);
  }
  public int getWage() {
    return job.getWage();
  }
}
class Main {
  public static void main(String[] args) {
    Person person = new Person();
    int salary = person.getWage();
    System.out.println("The wage of the person for a job: " + salary);
  }
}

Ausgang:

The wage of the person for a job: 650

Der obige Code zeigt die Zusammensetzungsbeziehung zwischen zwei Klassen an. Komposition wird als Teil-von-Beziehungstyp klassifiziert; im obigen Fall ist Lohn Teil eines Jobs.

Wir haben parametrisierte Konstruktoren, Setter- und Getter-Funktionen für beide Klassen definiert.

Arbeiten Sie mit Aggregation in Java

import java.io.*;
import java.util.*;

class Bank {
  private String BankName;

  Bank(String name) {
    BankName = name;
  }
  public String getBankName() {
    return BankName;
  }
}

class Employee {
  private String EmployeeName;

  Employee(String name) {
    EmployeeName = name;
  }

  public String getEmployeeName() {
    return EmployeeName;
  }
}
class Main {
  public static void main(String[] args) {
    Bank bank = new Bank("IMF");
    Employee emp = new Employee("Rob");

    System.out.println(emp.getEmployeeName() + " is an employee of the " + bank.getBankName());
  }
}

Ausgang:

Rob is an employee of the IMF

Der obige Code zeigt die Aggregationsbeziehung zwischen zwei Klassen an. Die Aggregation wird als Has-ein-Beziehungstyp klassifiziert; im obigen Fall hat die bank einen Mitarbeiter namens Rob.

Wir haben parametrisierte Konstruktoren, Setter- und Getter-Funktionen für beide Klassen definiert.

Musfirah Waseem avatar Musfirah Waseem avatar

Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.

LinkedIn