Báo cáo cuối kỳ môn Lập trình hướng đối tượng - Chủ đề: State design pattern - Bùi Thanh Duy
State design pattern
Nhóm: thỏ trắng
Thành viên:
-Bùi Thanh Duy -1760291
-Huỳnh Thanh Hải -1760300
1. Design Patterns là gì?
-Design patterns là một kỹ thuật trong lập trình hướng đối
tượng, được các nhà nghiên cứu đúc kết và tạo ra các mẫu thiết kế
chuẩn. Và design pattern không phải là một ngôn ngữ lập trình cụ thể
nào cả, mà nó có thể sự dụng được trong hầu hết các ngôn lập trình có
hỗ trợ OOP hiện nay.
2. Tại sao nên sử dụng design patterns?
-Design pattern giúp cho dự án của chúng ta dễ bảo trì, nâng cấp và
mở rộng.
-Hơn nữa do design pattern đã được các nhà nghiên cứu đúc kết ra
nên khi sử dụng design pattern thì chúng ta sẽ hạn chế được các lỗi
tiềm ẩn.
-Và cuối cùng là khi sử dụng design pattern thì sẽ giúp code của
chúng ta sẽ dễ đọc hơn. Điều này rất có lợi khi làm việc nhóm.
3. State Design Patterns là gì?
a) khái niệm:
State design pattern là một trong những mẫu thiết kế hành vi.
State design pattern được sử dụng khi một Object thay đổi
hành vi của nó dựa trên trạng thái bên trong của nó. Nếu chúng
ta phải thay đổi hành vi của đối tượng dựa trên trạng thái của
nó. Trong State pattern , chúng ta tạo các đối tượng đại diện
cho các trạng thái khác nhau và một đối tượng bối cảnh mà
hành vi của chúng thay đổi khi các thay đổi đối tượng trạng thái
của nó.
b) ưu điểm:
Giảm bớt rắc rối trong quá trình xử lý các sự kiện.
Dễ dàng chỉnh sửa trong quá trình lập trình.
c) một số ví dụ
- đèn giao thông: cần quản lý 3 trạng thái màu của đèn xanh,đỏ vàng
-quản lý cho thuê nhà: đợi người thuê nhà,nhận yêu cầu thuê,cho thuê
vàhết nhà trống
- atm: đã chèn thẻ và chưa chèn thẻ
- state design pattern được sủ dụng rất nhiều trông việc quản lý trạng
thái các đối tường trọng game hoặc úng dụng
d) giải quết ví vụ đèn giao thông
1) không dùng state design pattern
-nhược điểm : mỗi 1 thao tác với state chúng ta cẩn phải dùng
câu lệnh rẽ nhánh để kiểm tra state hiện tại của object rồi mới quyết
định cần phải làm gì chính vì vậy nếu 1 đối tượng có nhiều state va
nhiều thao tác thì sẽ cần rất nhiều câu lênh kiểm tra làm cho code khó
đọc, khó hiểu va khó thay đổi về sau.
- trong ví dụ ta có 3 state và 2 thao tác. Mỗi thao tác ta cần dùng câu
lệnh swich với 3 case để xác đinh trang thái. Giả xử ta thêm 3 trạng
thái, thì ta cần vào code từng thao tác r them3 case vào . khá rác rối!
Tệ hơn đồng nghiệp của chúng ta không biết code mà ta viết thì sao
bời vì mỗi người sẽ có cách viết khác nhau. Nhưng chúng ta viết code
theo 1 mẫu(pattern) thì lại khác
2) dùng state design pattern
Mỗi 1 state sẽ là 1 object trong trường trình , khi có nhu cầu
them state chỉ cần tạo them 1 đối tượng là được, việc chia nhỏ state ra
từng object sẽ dễ dàng quản lý hơn.
Đồng nghiep sẽ dễ dàng hiểu biết đuọc chúng ta viết thế nào
- Như class diagram bên dưới nếu ta them 1 state cho đối tường,
ví dụ pink thì ta cần làm: tạo 1 đối tường pink gần tương tự như
các state kia. Them thuọc tính pink vào class Trafficlight. Đó là
tất cả ta cần làm
Class diagram
Sourse code: đính kèm
Bài tập state:
Thiết kê state cho printer để thực hiện 2 thao tác: cancel(hủy in),
handle(thuc hiện hành động nào đó
Lời giải kham khảo:
Bài tập flyweight
Vẽ sơ đồ lớp trương trình lưu trử thông tin các máy bay có nhưng
thông tin sau:
-mỗi chiếc máy bay sẽ có một số trạng thái chung như Loại máy bay,
khả năng ngồi, tốc độ vv,
-ngoài ra,mỗi máy bay sẽ có thông tin về Số sê-ri và Ngày sản xuất
duy nhất trên mỗi máy bay.
(sủ dụng design pattern)
Bài giải kham khảo:
Bạn đang xem tài liệu "Báo cáo cuối kỳ môn Lập trình hướng đối tượng - Chủ đề: State design pattern - Bùi Thanh Duy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bao_cao_cuoi_ky_mon_lap_trinh_huong_doi_tuong_chu_de_state_d.docx
FLYWEIGHT.pptx

