Aggregation vs Composition relationship

Qua bài này sẽ minh họa sự khác nhau giữa 2 loại quan hệ trong thiết kế hướng đối tượng và minh họa rõ sự khác biệt khi cài đặt trong code

Aggregation

Aggregation là mối quan hệ mà ở đó thực thể có thể tồn tại độc lập với các lớp khác. Ví dụ: một người nào đó có thể thuộc một công ty hoặc không thuộc một công ty, người đó vẫn có thể tồn tại độc lập, có nghĩa là họ không làm cho một công ty bất kỳ.

Composition

Composition đề cập đến trường hợp khi một đối tượng (obj1) tồn tại phụ thuộc vào sự tồn tại của một đối tượng khác(obj2). Có nghĩa rằng, nếu đối tượng được phụ thuộc obj2 tồn tại thì đối tượng obj1 mới có thể tồn tại.

Cài đặt mã khi viết chương trình biểu diễn mối quan hệ Aggregation

public class Subject {
   private String name;
   public void setName(String name)
   {
     this.name = name;
   }
   public String getName()
   {
     return name;
   }
 }
 
 public class Student {
   private Subject[] studyAreas = new Subject[10];
   //the rest of the Student class
 } 

Cài đặt mã khi viết chương trình biểu diễn mối quan hệ Composition

public class Job {
    private String role;
    private long salary;
    private int id;
        
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public long getSalary() {
        return salary;
    }
    public void setSalary(long salary) {
        this.salary = salary;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}
public class Person {
    //composition has-a relationship
    private Job job; 
    public Person(){
        this.job=new Job();
        job.setSalary(1000L);
    }
    public long getSalary() {
        return job.getSalary();
    }
}

Source: internet