Your SlideShare is downloading. ×
Composite pattern
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Composite pattern

295
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
295
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
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 :