Composite pattern

  • 257 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
257
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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àn cảnh cụ thể -Có thể áp dụng được ngay vào một bài toán để code.
  • 2. 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ải tí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)
  • 3. 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ều class, etc…)
  • 4. Mô hình tính điểm tb của trường
  • 5. Phương án giải quyết  Sử dụng Composite Pattern
  • 6. 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ành phần composite (nghĩa là composite sẽ bao gồm nhiều Component)
  • 7. Áp dụng vào bài toán tính điểm trung bình  Component public interface Mark { float calculatePoint(); }
  • 8. Áp dụng vào bài toán tính điểm trung bình  SubClass public class Student implements Mark { private float math; private float physic; public Student(….) {….} @Override public float calculatePoint() { return (math + physic)/2; } }
  • 9. Áp dụng vào bài toán tính điểm trung 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; } }
  • 10. 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ó rau muố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ô.
  • 11. 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 :