1. Trang chủ
  2. » Luận Văn - Báo Cáo

BTL Design Patterns

125 138 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 125
Dung lượng 4,12 MB

Nội dung

Design pattern là một kỹ thuật dành cho lập trình hướng đối tượng. Nó cung cấp cho ta cách tư duy trong từng tình huống của việc lập trình hướng đối tượng, và phân tích thiết kế hệ thống phần mềm. Nó cần thiết cho cả các nhà lập trình và nhà phân tích thiết kế. Đối với những người chuyên về lập trình thì việc nắm vững công cụ lập trình thôi chưa đủ,họ cần phải có một tư duy, một kỹ năng giải quyết các tình huống nhỏ của công việc xây dựng phần mềm mà họ là người thi hành. Việc giải quyết này phải đảm bảo tính ổn định là họ có thể giải quyết được trong mọi tình huống, với thời gian đúng tiến độ, phương pháp giải quyết hợp lý và đặc biệt là phải theo một chuẩn nhất định. Những nhà phân tích thiết kế mức cao, việc nắm vững công cụ lập trình có thể là không cần thiết, nhưng họ cũng cần phải biết được ở những khâu nhỏ nhất chi tiết nhất của thiết kế của họ đưa ra có thể thực hiện được hay không và nếu thực hiện được thì có thể thực hiện như thế nào, và sẽ theo một chuẩn ra sao.

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN  - BÀI TẬP LỚN Môn: Design Patterns Giáo viên hướng dẫn : Nhóm sinh viên thực : Lớp: ĐH KTPM CLC K9 Hà Nội, tháng 11 năm 2016 Mục lục Lời nói đầu Phần I: Tổng quan Design pattern I Vấn đề thiết kế phần mềm hướng đối tượng II Lịch sử design pattern III Design pattern ? Phần II: I Hệ thống mẫu design pattern Hệ thống mẫu Nhóm Creational Nhóm Structural .5 Nhóm Behavioral II Sưu liệu chuẩn mẫu .6 III Quy tắc biểu diễn mẫu UML Phần III: I Nội dung mẫu Design pattern Nhóm Creational Abstract Factory .8 Factory Method 12 Builder 18 Prototype 26 Singleton 28 II Nhóm Structural 33 Adapter 33 Bridge .39 Composite .43 Decorator 48 Faỗade .52 Proxy .56 Flyweight 60 III Nhóm Behavioral .66 Interpreter .66 Template Method 73 Chain of Responsibility 78 Command .84 Iterator 87 Mediator 92 Memento 96 Observer 99 State 104 10 Strategy 109 11 Visitor 112 Bảng phân cơng thực nhóm: 118 Lời nói đầu Design pattern kỹ thuật dành cho lập trình hướng đối tượng Nó cung cấp cho ta cách tư tình việc lập trình hướng đối tượng, phân tích thiết kế hệ thống phần mềm Nó cần thiết cho nhà lập trình nhà phân tích thiết kế Đối với người chun lập trình việc nắm vững cơng cụ lập trình thơi chưa đủ,họ cần phải có tư duy, kỹ giải tình nhỏ công việc xây dựng phần mềm mà họ người thi hành Việc giải phải đảm bảo tính ổn định họ giải tình huống, với thời gian tiến độ, phương pháp giải hợp lý đặc biệt phải theo chuẩn định Những nhà phân tích thiết kế mức cao, việc nắm vững công cụ lập trình khơng cần thiết, họ cần phải biết khâu nhỏ chi tiết thiết kế họ đưa thực hay không thực thực nào, theo chuẩn Design pattern dùng khắp nơi, phần mềm hướng đối tượng hệ thống lớn Trong chương trình trò chơi, Và hệ thống tính tốn song song, Design pattern thể tính kinh nghiệm cơng việc lập trình, xây dựng thiết kế phần mềm Có thể gặp design pattern đâu đó, ứng dụng, sử dụng mẫu tương tự design pattern để giải tình mình, khơng có khái niệm Trong nội dung báo cáo mơn học chúng em xin trình bày hiểu biết Design pattern theo hướng tiếp cận mang tính kinh nghiệm Việc cài đặt mẫu trình bày tài liệu kèm Trong trình làm khơng tránh khỏi sai sót, mong phản hồi góp ý q thầy bạn Chúng em xin chân thành cảm ơn! Các tài liệu tham khảo  Design Patterns, Elements of Reusable Object Oriented Software nhóm tác giả Gang of Four ( Erich Gamma, Richard Helm, Ralph Johnson John Vlissides)  Các trang web trực tuyến http://laptrinh.vn https://www.tutorialspoint.com Phần I: Tổng quan Design pattern I Vấn đề thiết kế phần mềm hướng đối tượng Người ta nói rằng, việc thiết kế phần mềm hướng đối tượng cơng việc khó, việc thiết kế một phần mềm hướng đối tượng phục vụ cho mục đích dùng lại khó Chúng ta phải tìm đối tượng phù hợp, đại diện cho lớp đối tượng Sau thiết kế giao diện kế thừa cho chúng, thiết lập mối quan hệ chúng Thiết kế phải đảm bảo giải vấn đề tại, tiến hành mở rộng tương lai mà tránh phải thiết kế lại phần mềm Và tiêu trí quan trọng phải nhỏ gọn Việc thiết kế phần mềm hướng đối tượng phục vụ cho mục đích dùng lại cơng việc khó, phức tạp khơng thể mong chờ thiết kế đúng, đảm bảo tiêu trí Thực tế cần phải thử nghiệm sau vài lần sau sửa chữa lại Đứng trước vấn đề, người phân tích thiết kế tốt đưa nhiều phương án giải quyết, phải duyệt qua tất phương án chọn cho phương án tốt Phương án tốt dùng dùng lại nhiều lần, dùng gặp vấn đề tương tự Mà phân tích thiết kế phần mềm hướng đối tượng ta gặp lại vấn đề tương tự II Lịch sử design pattern Ý tưởng dùng mẫu xuất phát từ ngành kiến trúc, Alexander, Ishikawa, Silverstein, Jacobson, Fiksdahl-King Angel (1977) lần đưa ý tưởng dùng mẫu chuẩn thiết kế xây dựng truyền thông Họ xác định lập sưu liệu mẫu có liên quan để dùng để giải vấn đề thường xảy thiết kế cao ốc Mỗi mẫu cách thiết kế, chúng phát triển hàng trăm năm giải pháp cho vấn đề mà người ta làm lĩnh vực xây dựng thường gặp Các giải pháp tốt có ngày hơm qua q trình sàng lọc tự nhiên Mặc dù nghành công nghệ phần mềm khơng có lịch sử phát triển lâu dài nghành kiến trúc, xây dựng Công nghệ phần mềm nghành công nghiệp tiên tiến, tiếp thu tất tốt đẹp từ nghành khác Mẫu xem giải pháp tốt để giải vấn đề xây dựng hệ thống phần mềm Suốt năm đầu 1990,thiết kế mẫu thảo luận hội thảo workshop, sau người ta nổ lực để đưa danh sách mẫu lập sưu liệu chúng Những người tham gia bị dồn vào việc cần thiết phải cung cấp số kiểu cấu trúc mức quan niệm cao đối tượng lớp để cấu trúc dùng để tổ chức lớp Đây kết nhận thức đựơc việc dùng kỹ thuật hướng đối tượng độc lập không mang lại cải tiến đáng kể chất lượng hiệu công việc phát triển phần mềm Mẫu xem cách tổ chức việc phát triển hướng đối tượng, cách đóng gói kinh nghiệm ngưòi trước hiệu thực hành Năm 1994 hội nghị PLoP( Pattern Language of Programming Design) tổ chức Cũng năm sách Design patterns : Elements of Reusable Object Oriented Software (Gamma, Johnson,Helm Vhissdes,1995) xuất vào thời điểm diễn hội nghị OOPSLA’94 Đây tài liệu phơi thai việc làm nỗi bật ảnh hưởng mẫu việc phát triển phần mềm, đóng góp xây dựng mẫu thành danh mục (catalogue) với định dạng chuẩn dùng làm tài liệu cho mẫu tiếng với tên Gang of Four (bộ tứ), mẫu thường gọi mẫu Gang of Four Còn nhiều sách khác xuất năm sau, định dạng chuẩn khác đưa Năm 2000 Evitts có tổng kết cách mẫu xâm nhập vào giới phần mềm (sách ơng lúc nói mẫu sử dụng UML chưa đưa khái niệm mẫu thiết kế cách tổng qt) Ơng cơng nhận Kent Beck Ward Cunningham người phát triển mẫu với SmallTalk công việc họ báo cáo hội nghị OOPSLA’87 Có mẫu mà Kent Beck Ward Cunningham tìm việc kết hợp người dùng hệ thống mà họ thiết kế Năm mẫu áp dụng để thiết kế giao diện người dùng môi trường Windows III Design pattern ? Design patterns tập giải pháp cho cho vấn đề phổ biến thiết kế hệ thống máy tính Đây tập giải pháp cơng nhận tài liệu có giá trị, người phát triển áp dụng giải pháp để giải vấn đề tương tự Giống với yêu cầu thiết kế phân tích hướng đối tượng (nhằm đạt khả sử dụng thành phần thư viện lớp), việc sử dụng mẫu cần phải đạt khả tái sử dụng giải pháp chuẩn vấn đề thường xuyên xảy Christopher Alexander nói : “Mỗi mẫu mô tả vấn đề xảy lặp lặp lại môi trường mô tả cốt lõi giải pháp vấn đề đó.Bằng cách bạn dùng triệu lần mà không làm giống lần” Mối quan hệ Pattern Design pattern phần UML cốt lõi, lại đựơc sử dụng rộng rãi thiết kế hệ thống hướng đối tượng UML cung cấp chế biểu diễn mẫu dạng đồ hoạ Phần II: Hệ thống mẫu design pattern I Hệ thống mẫu Hệ thống mẫu design pattern có 23 mẫu định nghĩa “Design patterns Elements of Reusable Object Oriented Software” Hệ thống mẫu nói đủ tối ưu cho việc giải hết vấn đề toán phân tích thiết kế xây dựng phần mềm thời điểm Hệ thống mẫu design pattern chia thành nhóm: Creational, nhóm Structural, nhóm behavioral Nhóm Creational Gồm có pattern: AbstractFactory, Abstract Method, Builder, Prototype, Singleton Nhóm liên quan tới việc tạo thể nghiệm (instance) đối tượng, tách biệt với cách thực từ ứng dụng Muốn xem xét thơng tin mẫu nhóm phải dựa vào biểu đồ phụ thuộc vào mẫu đó, mẫu thiên hành vi hay cấu trúc Nhóm Structural Gồm có mẫu : Adapter, Bridge, Composite, Decorator, Facade, Proxy, Flyweight Nhóm liên quan tới quan hệ cấu trúc thể nghiệm, dùng kế thừa, kết tập, tương tác Để xem thông tin mẫu phải dựa vào biểu đồ lớp mẫu Nhóm Behavioral Gồm có 11 mẫu : Interpreter,Template Method,Chain of Responsibility,Command, Iterator,Mediator,Memento,Observer,State,Strategy Visitor.Nhóm liên quan đến quan hệ gán trách nhiệm để cung cấp chức đối tượng hệ thống Đối với mẫu thuộc nhóm ta dựa vào biểu đồ cộng tác biểu đồ diễn tiến Biểu đồ cộng tác biểu đồ diễn tiến giải thích cho ta cách chuyển giao chức II Sưu liệu chuẩn mẫu Mẫu phân loại thành nhóm Pattern catalogue (danh mục mẫu) pattern language (ngôn ngữ mẫu) Một pattern catalogue nhóm mẫu có quan hệ với sử dụng độc lập Một pattern language lập sưu liệu mẫu cho mẫu làm áp dụng để giải vấn đề lĩnh vực đó.Các mẫu lập sưu liệu cách dùng template, template cung cấp heading bên có chứa chi tiết mẫu cách thức làm việc cho phép người dùng biết mẫu dó có thích hợp với vấn đề họ hay khơng, có áp dụng mẫu để giải vấn đề Có loại template khác nhau, hai số thường sử dụng Coplien Gamma.Các heading liệt kê template Coplien  Name – Tên mẫu, mô tả ý tưởng, giải pháp theo số cách  Problem - Vấn đề mà mẫu giúp giải  Context - Ngữ cảnh ứng dụng mẫu (kiến trúc nghiệp vụ) yếu tố đề mẫu làm việc thành cơng tình  Force – Các ràng buộc vấn đề phải giải mẫu; chúng tạo cân đối, mẫu giúp ta cân đối  Solution - Giải pháp để cân đối ràng buộc xung đột làm cho hợp với ngữ cảnh chúng  Sketch - Bản phác thảo tượng trưng ràng buộc cách giải  Resulting context - Ngữ cảnh sau thay đổi giải pháp  Rationale - Lý động cho mẫu Sưu liệu gồm mã biểu đồ tiêu biểu Các biểu đồ UML dùng để minh hoạ cho cách làm việc mẫu Việc lựa chọn kiểu biểu đồ phụ thuộc vào chất mẫu III Quy tắc biểu diễn mẫu UML Một mục tiêu UML hỗ trợ khái niệm cấp cao, thành phần, cộng tác, framework mẫu Việc hỗ trợ thực cách cung cấp chế nhằm định nghĩa rõ ràng ngữ nghĩa chúng, từ việc sử dụng khái niệm đựơc dễ dàng nhằm đạt khả tái sử dụng mà phương pháp hướng đối tượng yêu cầu Khía cạnh thuộc cấu trúc mẫu biểu diễn UML cách dùng cộng tác mẫu trúc có điều kiện Từ sinh vấn đề phức tạp việc xử lý trạng thái đối tượng 9.2 Giải pháp Đưa nhánh điều kiện lớp riêng biệt Điều cho phép xử lý tình trạng đối tượng đối tượng riêng mà thay đổi cách độc lập từ đối tượng khác 9.3 Định nghĩa Observer mẫu thiết kế cho phép đối tượng thay đổi hành vi trạng thái bên thay đổi Đối tượng xuất để thay đổi lớp 9.4 Cấu trúc o Sơ đồ lớp UML o Các thành phần tham gia  Context - Định nghĩa giao diện mà đối tượng khách quan tâm Duy trì thể nghiệm lớp ConcreteState mà định nghĩa trạng thái  State - Định nghĩa giao diện cho việc đóng gói hành vi kết hợp với trạng thái đặc biệt Context  Concrete State - Mỗi lớp cài đặt hành vi kết hợp với trạng thái Context 108 9.5 Sử dụng State pattern nào? - Khi hành vi đối tượng phụ thuộc vào trạng thái nó, phải thay đổi hành vi thời điểm chạy phụ thuộc vào trạng thái - Hoạt động có độ lớn, nhiều phần có điều kiện phụ thuộc vào trạng thái đối tượng Trạng thái thường thể nhiều số liệt kê Thông thường, số hoạt động chứa cấu trúc có điều kiện Các State pattern đưa nhánh điều kiện lớp riêng biệt Điều cho phép bạn xử lý tình trạng đối tượng đối tượng riêng mà thay đổi cách độc lập từ đối tượng khác 9.6 Ví dụ code Chúng tơi tạo giao diện State xác định hành động lớp thực giao diện State Context lớp chứa đối tượng State StatePatternDemo lớp demo sử dụng Context tình trạng đối tượng để chứng minh thay đổi hành vi dựa kiểu trạng thái  Sơ đồ lớp UML 109  Code 1) Tạo giao diện State 2) Tạo lớp kế thừa giao diện State 110 3) Tạo class Context 4) Sử dụng Context để chứng minh thay đổi hành vi trạng thái thay đổi 5) Xác minh đầu 111 9.7 Các mấu liên quan - Mẫu Flyweight giải thích đối tượng State phân tách phân tách - Các đối tượng State thường Singleton 10 Strategy 10.1 Định nghĩa Strategy mẫu thiết kế dùng để định nghĩa họ thuật tốn, đóng gói thuật tốn làm cho chúng có khả thay đổi dễ dàng.Strategy cho phép giả thuật tùy biến cách độc lập Client sử dụng 10.2 Cấu trúc o Sơ đồ lớp UML o Các thành phần tham gia  Strategy - Khai báo giao diện thông thường tới tất giải thuật hỗ trợ Context sử dụng giao diện để gọi giải thuật định nghĩa ConcreteStrategy  ConcreteStrategy - Cài đặt giải thuật sử dụng giao diện Strategy  Context - Được cấu hình với đối tượng ConcreteStrategy - Duy trì tham chiếu tới đối tượng Stategy 112 - Có thể định nghĩa giao diện Strategy truy nhập liệu 10.3 Sử dụng Strategy pattern nào? - Nhiều class tương tự khác hành vi chúng - Có thuật tốn khác cho mục đích chung, tiêu chí lựa chọn có thểđược lập trình - Các thuật tốn sử dụng liệu mà client khơng nên có quyền truy cập 10.4 Ví dụ code o Sơ đồ lớp UML o Code 113 114 Output 10.5 Các mẫu liên quan Các đối tượng Strategy thường tạo Flyweight tốt 11 Visitor 11.1 Định nghĩa Visitor mẫu thiết kế xác định sườn giải thuật thao tác, theo số bước phân lớp Template Method cho phép lớp xác định lại chắn số bước giải thuật bên cấu trúc giải thuật 11.2 Cấu trúc o Sơ đồ lớp UML 115 o Các thành phần tham gia  Visitor - Đưa thao tác Visit cho lớp ConcreteElement cấu trúc đối tượng Tên dấu hiệu thao tác nhận dạng lớp gửi yêu cầu Visit tới visitor, cho phép visitor định lớp cụ thể thành phần thăm Sau visitor truy nhập thành phần trực tiếp thông qua giao diện đặc biệt  ConcreteVisitor - Thực thao tác đưa Visitor Mỗi thao tác thực phần giải thuật định nghĩa cho lớp phù hợp đối tượng cấu trúc 116 ConcreteVisitor cung cấp ngữ cảnh cho giải thuật lưu trữ trạng thái cục  Element - Định nghĩa thao tác Accept, thao tác mang visitor đối số  ConcreteElement - Thực thao tác Accept, thao tác mang visitor đối số  ObjectStructure - Có thể đếm thành phần - Có thể cung cấp giao diện mức cao cho phép visitor thăm thành phần - Có thể composite sưu tập danh sách hay tập hợp 11.3 Sử dụng Visitor pattern nào? - Một cấu trúc đối tượng chứa đựng nhiều lớp đối tượng với giao diện khác nhau, ta muốn thực thao tác đối tượng đòi hỏi lớp cụ thể chúng - Nhiều thao tác khác khơng có mối liên hệ cần thực đối tượng cấu trúc đối tượng, ta muốn tránh “làm hỏng” lớp chúng thực thao tác Visitor cho phép ta giữ thao tác có mối liên hệ với cách định nghĩa chúng lớp Khi cấu trúc đối tượng chia sẻ nhiều ứng dụng, sử dụng Visitor để đặt thao tác vào ứng dụng cần chúng - Các lớp định nghĩa cấu trúc đối tượng thay đổi, ta muốn định nghĩa thao tác cấu trúc Thay đổi lớp cấu trúc yêu cầu định nghĩa lại giao diện cho tất visitor 11.4 Ví dụ code o Sơ đồ lớp UML 117 o Code 118 119 120  Output 11.5 Mẫu liên quan Các Visitor sử dụng để cung cấp thao tác cấu trúc đối tượng định nghĩa mẫu Composite Visitor cung cấp để làm thông dịch 121 Bảng phân công thực nhóm: Thành viên Đỗ Hữu Minh Tạ Đăng Huân Nguyễn Tuấn Anh Trần Văn Luyện Vương Xuân Kiên Trương Quang Trung Đào Đức Quang Mẫu thực 4 4 3 Abstract Factory Bridge Memento Mediator Builder Adapter Template Method State Factory Method Composite Interperter Iterator Singleton Proxy Chain of Responsibility Strategy Faỗade Command Abstract Factory Builder Visitor Flyweight Decorator Observer Prototype 122

Ngày đăng: 27/05/2018, 20:11

TỪ KHÓA LIÊN QUAN

w