Composite pattern

Preview:

Citation preview

Mục tiêu cần đạt được

-Hiểu được ý nghĩa của Composite Pattern

-Biết áp dụng Composite trong từng hoàncảnh cụ thể

-Có thể áp dụng được ngay vào một bài toánđể code.

Một vài ví dụ minh họa Ví dụ về các thành phần trong một chương trình

Ví dụ về tính điểm trung bình của một trường Muốn tính điểm trung bình của một trường, cần phải

tính điểm trung bình của lớp, trong một lớp phải tínhđiểm trung bình của một học sinh, mỗi học sinh phảitính điểm trung bình của môn mình học : toán, lý , hóa, thể dục,…

Có những môn có nhiều điểm như điểm 15p, điểm 45p, điểm cuối kỳ, trong khi có những môn chỉ có 1 điểm nhưmôn thể dục, quân sự (d0 đó những môn này ko cần tínhđiểm trung bình)

Bài toán đặt ra Làm thế nào có thể quản lý được những module trong

một chương trình một cách hiệu quả

Như ví dụ tính điểm trên, làm thế nào có thể quản lýđược hệ thống điểm ở trên của học sinh

Nêu ra một số cách quản lý thông thường (tạo nhiềuclass, etc…)

Mô hình tính điểm tb của trường

Phương án giải quyết Sử dụng Composite Pattern

Phương án giải quyết Thành phần Component sẽ là một interface hoặc một

abstract class (sẽ so sánh sự khác nhau khi sử dụng 2 loại hình này)

Các thành phần SubClass và Composite sẽ extends hoặc implements thành phần Component.

Có mũi tên kết tập hướng từ Component ra thànhphần composite (nghĩa là composite sẽ bao gồm nhiềuComponent)

Áp dụng vào bài toán tính điểmtrung bình Component

public interface Mark {

float calculatePoint();

}

Áp dụng vào bài toán tính điểmtrung bình SubClass

public class Student implements Mark {

private float math;

private float physic;

public Student(….) {….}

@Override

public float calculatePoint() {

return (math + physic)/2;

}

}

Áp dụng vào bài toán tính điểmtrung bình Composite

public class Class implements Mark{

ArrayList<Student> students = new ArrayList<Student>();

@Override

public float calculatePoint() {

float sum = 0;

for (Student s : students) {

sum += s.calculatePoint();

}

return 0;

}

}

Thực hành Có 3 thực đơn : bữa sáng, bữa trưa, bữa tối.

Bữa sáng có : đồ ăn chính (main food) và đồ uống(drinks)

Trong main food có : bánh mỳ, ngũ cốc, trứng ốp.

Trong drinks có : sữa, nước ép trái cây, cà fe

Bữa trưa có : cơm, rau, cá chép, thịt lợn. Trong rau có raumuống, rau dền.

Bữa tối có : cơm, rau, cá, thịt. Trong thịt có thịt lợn, thịt gà. Cá có cá chép, cá rô.

Thực hành Sử dụng Composite pattern để in ra toàn bộ menu của thực đơn. Sử

dụng uml sau :

Recommended