Nếu một class có một thực thể tham chiếu, nó được gọi là Aggregation. Aggregation đại diện cho mối quan hệ HAS-A.
Hãy xem xét một tình huống, đối tượng Employee chứa nhiều thông tin như id, name, emailId, v.v …
Nó chứa thêm một đối tượng có tên Adress, chứa thông tin riêng của mình như thành phố, quốc gia, mã zip, v.v. như được đưa ra dưới đây.
class Employee{
int id;
String name;
Address address; //Address là một class
...
}
Trong trường hợp đó, Employee có một thực thể tham chiếu, vì vậy mối quan hệ là
Employee HAS-A address.
Ví dụ đơn giản về Aggregation
Trong ví dụ này, mình đã tạo tham chiếu của lớp Operation trong lớp Circle.
class Operation{
int square(int n){
return n*n;
}
}
class Circle{
Operation op; //aggregation
double pi = 3.14;
double area(int radius){
op = new Operation();
// Tái sử dụng code
int rsquare = op.square(radius);
return pi*rsquare;
}
public static void main(String args[]){
Circle c = new Circle();
double result = c.area(5);
System.out.println(result);
}
}
Kết quả:
78.5
Ví dụ thực tế về Aggregation
Trong ví dụ này, lớp Employee có một đối tượng Address, đối tượng Address chứa thông tin riêng của mình như thành phố, quốc gia, mã zip v.v.
File: Address.java
public class Address{
String city, state, zipCode;
public Address(String city, String country, int zipCode) {
this.city = city;
this.country = country;
this.zipCode = zipCode;
}
}
File: Employee.java
public class Employee{
int id;
String name;
Address address;
public Employee(int id, String name, Address address){
this.id = id;
this.name = name;
this.address = address;
}
void display(){
System.out.println(id+" "+name);
System.out.println(address.city+" "+address.country+" "+address.zipCode);
}
public static void main(String[] args){
Address address1 = new Address("Hanoi", "Vietnam", 100000);
Address address2 = new Address("HCM", "Vietnam", 700000);
Employee e1 = new Employee(111,"Hải", address1);
Employee e2 = new Employee(112,"Doanh", address2);
e1.display();
e2.display();
}
}
Kết quả nhận được là:
111 Hải
Hanoi Vietnam 100000
112 Doanh
HCM Vietnam 700000
Câu hỏi thường gặp về Aggregation
Trả lời: Để tái sử dụng code.
Sử dụng Aggregateion tốt nhất khi:
+ Không có mối quan hệ IS-A.
+ Kế thừa chỉ nên sử dụng khi mối quan hệ IS-A khi được duy trì trong suốt vòng đời của các đối tượng liên quan. Ngược lại, Aggregation là lựa chọn tốt nhất.
Bạn đã hiểu về mối quan hệ HAS-A trong Java chưa?
Như vậy là ngoài mối quan hệ IS-A chúng ta còn có mối quan hệ HAS-A giúp tái sử dụng code tốt hơn trong lập trình Java.
Tham khảo thêm:
- Học Lập trình Java online
- Hoặc tham gia Khóa học Java Full stack (Offline)
Chúc bạn học Java tốt!