PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - SỐNG VỚI HỘI CHỨNG DOWN

176 697 1
PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - SỐNG VỚI HỘI CHỨNG DOWN

Đ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

Cách xây dựng các mô hình trong UML phù hợp mô tả các hệ thống thông tin cả về cấu trúc cũng như hoạt động. Cách tiếp cận theo mô hình của UML giúp ích rất nhiều cho những người thiết kế và thực hiện hệ thống thông tin cũng như những người sử dụng nó; tạo nên một cái nhìn bao quát và đầy đủ về hệ thống thông tin dự định xây dựng. Cách nhìn bao quát này giúp nắm bắt trọn vẹn các yêu cầu của người dùng; phục vụ từ giai đoạn phân tích đến việc thiết kế, thẩm định và kiểm tra sản phẩm ứng dụng công nghệ thông tin. Các mô hình hướng đối tượng được lập cũng là cơ sở cho việc ứng dụng các chương trình tự động sinh mã trong các ngôn ngữ lập trình hướng đối tượng, chẳng hạn như ngôn ngữ C++, Java, ... Phương pháp mô hình này rất hữu dụng trong lập trình hướng đối tượng. Các mô hình được sử dụng bao gồm Mô hình đối tượng (mô hình tĩnh) và Mô hình động.

SỐNG VỚI HỘI CHỨNG DOWN Trương Đai hoc Bach Khoa Tp Hừ Chđ Minh Khoa Cưng Nghï Thưng Tin Mưn hoc PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide Nöi dung mön hoc n lai s ́ khai ni m ban cua hương ₫ ́i tương, cac ng n ngư hương ₫ ́i tương thương dung, ch ́ dịch cac type/class sang ng n ngư c ̉ ₫i ̉n (ng n ngư may) n lai qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t n lai ng n ngư UML ₫ươc dung ₫ ̉ mi u ta cac artifacts cua qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t Giơi thi u cac m ̃u thi ́t k ́ hương ₫ ́i tương ₫ươc dung ph ̉ bi ́n cac ưng dung hi n hanh va cac ưng dung tương lai Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide Tai liïu tham khao chñnh [1] The Unified Software Development Process, Ivar Jacabson, Grady Booch, James Rumbaugh, Addison-Wesley, 1999 [2] Software Engineering - A practitioner's approach, R.S Pressman, McGraw-Hill, 1997 [3] Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1998 [4] OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999 [5] UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998 [6] Object-Oriented Software Engineering, A Use-Case Driven Approach, I Jacobson, ACM Press/Addison-Wesley, 1992 [7] Object-Oriented Analysis and Design with Applications, G Booch, The Benjamin Cummings Publishing Company, 1994 Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Slide Trương Đai hoc Bach Khoa Tp Hừ Chđ Minh Khoa Cưng Nghï Thöng Tin Chương CAC KHAI NIÏM CƠ BAN CUA MƯ HỊNH HƯƠNG ĐƯI TƯƠNG Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Nöi dung 1.1 Tư lêp trịnh co cếu truc ₫ḯn OOP 1.2 Đứi tương, thc tđnh, tac vu 1.3 Abstract type va class 1.4 Tñnh bao ₫ong 1.5 Tñnh thưa kḯ va chḯ 'override' 1.6 Tđnh bao gưp 1.7 Thưng ₫iïp, tđnh ₫a hịnh va kiï̉m tra kiï̉u 1.8 Tđnh tửng quat hoa 1.9 Tđnh vưng bï̀n Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP May t nh s ́ la thi ́t bị co th ̉ thưc hi n s ́ hưu han cac chưc ban (t p l nh), ch ́ thưc hi n cac l nh la tư ₫ ng tư l nh ₫ ̀u cho ₫ ́n l nh cu ́i cung Danh sach cac l nh ₫ươc thưc hi n nay ₫ươc goi la chương tr nh b ́t ky c ng vi c ngoai ₫ơi nao cung co th ̉ ₫ươc chia thanh tr nh tư nhi ̀u c ng vi c nho Tr nh tư cac c ng vi c nho nay ₫ươc goi la giai thu t giai quy ́t c ng vi c ngoai ₫ơi M ̃i c ng vi c nho cung co th ̉ ₫ươc chia nho nưa, ⇒ c ng vi c ngoai ₫ơi la tr nh tư cac l nh may (chương tr nh) v ́n ₫ ̀ m ́u ch ́t cua vi c dung may t nh giai quy ́t v ́n ₫ ̀ ngoai ₫ơi la l p tr nh Cho ₫ ́n nay, l p tr nh la c ng vi c cua ngươi (vơi sư trơ giup ngay cang nhi ̀u cua may t nh) cac l nh cua chương tr nh (code) phai tham khao hoăc xư ly (truy xu ́t) th ng tin (dư li u) Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP Dư li u cua chương tr nh co th ̉ r ́t nhi ̀u va ₫a dang Đ ̉ truy xu ́t ₫ung dư li u ta c ̀n : - t n nh n dang - ki ̉u dư li u mi u ta c ́u truc dư li u - t ̀m vưc truy xu ́t mi u ta giơi han khach hang truy xu ́t dư li u Chương tr nh c ̉ ₫i ̉n = giai thu t + dư li u Chương tr nh (function, subroutine, ) cho phep c ́u truc chương tr nh, sư dung lai code Chương tr nh c ̉ ₫i ̉n co c ́u truc ph n c ́p sau : Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP Chương tr nh = c ́u truc dư li u + giai thu t module (package) entry 'start' global data local data of module local data of function Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP Chương tr nh = t p cac ₫ ́i tương tương tac ₫ ́i tương (object) entry local data of object local data of operation Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tö̉ng quat vï̀ hương ₫ö́i tương M h nh hương ₫ ́i tương giơi thi u quan ₫i ̉m l p tr nh (va ph n t ch/thi ́t k ́) khac hăn so vơi trương phai c ̉ ₫i ̉n (co c ́u truc) Băt ₫ ̀u nhen nhom vao nhưng năm cu ́i 60s va ₫ ́n ₫ ̀u 90s th trơ n n r ́t ph ̉ bi ́n c ng nghi p ph ̀n m ̀m Nhưng ng n ngư hương ₫ ́i tương ₫ ̀u ti n : Smalltalk, Eiffel Sau ₫o xu ́t hi n th m : Object Pascal, C++, Java, C#,… H nh thanh cac phương phap ph n t ch/thi ́t k ́ hương ₫ ́i tương Va hi n ta co qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t dưa tr n ng n ngư UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 10 Đö́i tương (Object) M h nh ₫ ́i tương quan ni m chương tr nh bao g ̀m cac ₫ ́i tương sinh s ́ng va tương tac vơi Đ ́i tương bao g ̀m : thu c t nh (dư li u) : mang gia trị nh ́t ₫ịnh tai tưng thơi ₫i ̉m tac vu (operation) : thưc hi n c ng vi c nao ₫o Implementation (class) Interface (abstract type) Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 11 Kiï̉u trưu tương (Abstract type) Abstract type (type) ₫ịnh nghĩa interface sư dung ₫ ́i tương Interface la t p cac entry ma b n ngoai co th ̉ giao ti ́p vơi ₫ ́i tương Dung signature ₫ ̉ ₫ịnh nghĩa m ̃i entry, Signature g ̀m : t n method (operation) danh sach ₫ ́i s ́ h nh thưc, m ̃i ₫ ́i s ́ ₫ươc ₫ăc ta bơi thu c t nh : t n, type va chi ̀u chuy ̉n ₫ ng (IN, OUT, INOUT) ₫ăc ta chưc cua method (thương la chu th ch) Dung abstract type (chư kh ng phai class) ₫ ̉ ₫ăc ta ki ̉u cho bi ́n, thu c t nh, tham s ́ h nh thưc User kh ng c ̀n quan t m ₫ ́n class (hi n thưc cu th ̉) cua ₫ ́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 12 Class (Implementation) Class ₫ịnh nghĩa chi ti ́t hi n thưc ₫ ́i tương : ₫ịnh nghĩa cac thu c t nh dư li u : gia trị cua t ́t ca thu c t nh xac ₫ịnh trang thai cua ₫ ́i tương ki ̉u cua thu c t nh co th ̉ la type c ̉ ₫i ̉n hay abstract type, trương hơp sau thu c t nh chưa tham khao ₫ ́n ₫ ́i tương khac coding cac method va cac internal function Định nghĩa cac method tao va xoa ₫ ́i tương Định nghĩa cac method constructor va destructor User kh ng c ̀n quan t n ₫ ́n class cua ₫ ́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 13 Vñ du vï̀ class Java class abstract HTMLObject { protected static final int LEFT = 0; protected static final int MIDDLE = 1; protected static final int RIGHT = 2; private int alignment = LEFT; protected Vector objects = null; HTMLObject( ){ // constructor objects = new Vector (5); } public void setAlignment( int algnmt ) { alignment = algnmt; } public int getAlignment( ) { return alignment; } public abstract String toHTML( ); // abstract operation } Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 14 Tñnh bao ₫ong (encapsulation) Bao ₫ong : che d ́u moi chi ti ́t hi n thưc cua ₫ ́i tương, kh ng cho b n ngoai th ́y va truy xu ́t ⇒ t nh ₫ c l p cao giưa cac ₫ ́i tương (hay t nh k ́t d nh - cohesion giưa cac ₫ ́i tương r ́t th ́p) che d ́u cac thu c t nh dư li u : n ́u c ̀n cho phep truy xu ́t thu c t nh dư li u, ta tao method get/set tương ưng ₫ ̉ giam sat vi c truy xu ́t va che d ́u chi ti ́t hi n thưc b n che d ́u chi ti ́t hi n thưc cac method che d ́u cac internal function va sư hi n thưc cua chung Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 15 Tñnh thưa kḯ (inheritance) T nh thưa k ́ cho phep giam nhe c ng sưc ₫ịnh nghĩa type/class : ta co th ̉ ₫ịnh nghĩa cac type/class kh ng phai tư ₫ ̀u ma băng cach k ́ thưa type/class co săn, ta ₫ịnh nghĩa th m cac chi ti ́t mơi ma th i (thương kha t) Đa thưa k ́ hay ₫ơn thưa k ́ M ́i quan h  supertype/subtype va superclass/subclass co th ̉ override cac method cua class cha, k ́t qua override co nghĩa ₫ ́i tương class Đ ́i tương cua class co th ̉ ₫ong vai tro cua ₫ ́i tương cha ngươc lai thương kh ng ₫ung Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 16 Vñ du vï̀ thưa kḯ va override - Java class Geometry { public Draw(Graphics g); protected int xPos, yPos; protected double xScale, yScale; protected COLORREF color; }; class Line extends Geometry { int xPos2, yPos2; // other attributes public Draw(Graphics g) { // cac l nh ve ₫oan thăng } } Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 17 Tđnh bao gưp (aggregation) ₫ ́i tương co th ̉ chưa nhi ̀u ₫ ́i tương khac tao n n m ́i quan h  bao g p cach ₫  qui giưa cac ₫ ́i tương Co goc nh n v ̀ t nh bao g p : ngư nghĩa va hi n thưc Goc nh n ngư nghĩa Goc nh n hi n thưc O2 O2 O1 O1 O3 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM O3 Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 18 Ví dụ mẫu Template Method Document docs Application AddDocument() OpenDocument() DoCreateDocument() CanOpenDocument() AboutToOpenDocument() Save() Open() Close() DoRead() document MyDocument MyApplication DoRead() DoCreateDocument() CanOpenDocument() AboutToOpenDocument() return new MyDocument; Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Chương 11 : Các mẫu Creational Slide 321 Sơ ₫ồ cấu trúc mẫu Template Method AbstractClass TemplateMethod() PrimitiveOperation1() PrimitiveOperation2() PrimitiveOperation1(); PrimitiveOperation2(); ConcreteClass PrimitiveOperation1() PrimitiveOperation2() Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 322 161 Các phần tử tham gia AbstractClass (Application) : ₫ịnh nghĩa primitive operation cho lớp override ₫ể thực phần hoạt ₫ộng Các phương thức ₫iểm mà lớp hook vào code lớp cha thực template method, method ₫ịnh nghĩa khung hoạt ₫ộng Template method kết hợp primitive operation ₫ể thực trọn vẹn hoạt ₫ộng ConcreteClass (MyApplication) : thực primitive operation ₫ể can thiệp phần vào trình thực hoạt ₫ộng lớp cha Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 323 Các ngữ cảnh nên dùng mẫu Template Method Thường sử dụng Template method cần: thực phần cố ₫ịnh hoạt ₫ộng cho phép lớp thực phần thay ₫ổi tập trung hành vi giống lớp ₫ể tránh trùng lắp kiểm sốt q trình override lớp con: cho phép override ₫iểm hook qui ₫ịnh sẵn Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 324 162 Mẫu Strategy Mục tiêu : Cung cấp họ giải thuật cho phép Client chọn lựa linh ₫ộng giải thuật cụ thể sử dụng Nhu cầu áp dụng : Một số chương trình có nhiều giải thuật khác cho vấn ₫ề Nhu cầu phát sinh: quản lý giải thuật ₫ó cách ₫ơn giản cho phép client chọn giải thuật ₫ó ₫ể sử dụng cách linh ₫ộng Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 325 Ví dụ nhu cầu ứng dụng Strategy Chương trình chơi game có nhiều giải thuật tùy vào mức ₫ộ khó chơi Khi người chơi chọn mức ₫ộ khó dễ thao tác chọn giải thuật Do ₫ó ₫ối tượng giải thuật phải tách biệt với code chương trình Một hướng giải ₫ược ₫ề nghị sau: Định nghĩa interface chung cho lớp thể giải thuật Định nghĩa lớp concrete thực interface trên, lớp concrete thể giải thuật Chương trình sử dụng ₫ối tượng kiểu interface cho phép client thay ₫ối tượng thể giải thuật cụ thể chạy → hướng giải vấn ₫ề mẫu Strategy Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 326 163 Ví dụ mẫu Strategy Composition compositor Compositor Compose() Traverse() Repair() compositor->Compose(); SimpleCompositor Compose() Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM TeXCompositor Compose() ArrayCompositor Compose() Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 327 Lược ₫ồ cấu trúc mẫu Strategy Context strategy Strategy AlgorithmInterface() ContextInterface() ConcreteStrategyA AlgorithmInterface() Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM ConcreteStrategyB AlgorithmInterface() ConcreteStrategyC AlgorithmInterface() Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 328 164 Các phần tử tham gia Strategy (Compositor) : ₫ịnh nghĩa interface cho tất lớp thể giải thuật Có thể nhận pointer ₫ến ₫ối tượng Context trình khởi tạo ₫ối tượng ₫ể truy xuất liệu Context ConcreteStrategy (SimpleCompositor, TeXCompositor ) : thực interface Strategy, thể giải thuật cụ thể Context (Composition) : thời ₫iểm dịch: sử dụng ₫ối tượng kiểu Strategy xác ₫ịnh giải thuật cho vấn ₫ề cần xử lý thời ₫iểm run-time: ₫ược cung cấp ₫ối tượng giải thuật cụ thể thay cho ₫ối tượng Strategy cung cấp entry cho phép ₫ối tuợng kiểu Strategy truy xuất liệu Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 329 Các ngữ cảnh nên dùng mẫu Strategy Thường áp dụng mẫu Strategy trường hợp sau: Một lớp có nhiều hành vi loại loại trừ lẫn trình chuyển từ hành vi sang hành vi khác cần ₫ược thực dễ dàng Khi ₫ó hành vi ₫ược thể lớp Concrete Strategy lớp có nhiều hành vi lớp Strategy Giải thuật cần ₫ược che dấu liệu cấu trúc ₫ối với chương trình Client Một số chương trình áp dụng Strategy : Compiler, OS: q trình tối ưu hóa Game: Q trình chọn giải thuật Các giao diện tổng quát (common dialog VB…) Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 330 165 Mẫu Command Mục tiêu : ₫óng gói request vào Object, nhờ ₫ó thơng số hóa chương trình nhận request thực thao tác request: xếp, log, undo… Nhu cầu áp dụng : Đôi cần gửi request ₫ến ₫ối tượng ₫ược hành ₫ộng ₫ược thực thi ₫ối tượng bị tác ₫ộng request ₫ó Ví dụ user interface toolkit cần xây dựng trước việc truyền request ₫ến menu button có ứng dụng cụ thể xác ₫ịnh ₫ược hành ₫ộng click vào chúng Vấn ₫ề ₫ược giải sau: Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 331 Ví dụ nhu cầu ứng dụng mẫu Command Xây dựng lớp trừu tượng Command, ₫ó có phương thức trừu tượng Execute() Menu hay button giữ liên kết ₫ến ₫ối tượng kiểu Command Request ₫ược ₫óng gói ₫ối tượng thừa kế Command Các ₫ối tượng override phương thức Execute() ₫ể xác ₫ịnh hành ₫ộng thực thi request Khi ứng dụng cần gửi request ₫ến cho menu hay button cần gửi ₫ối tượng có ₫óng gói request ₫ó ₫i Menu hay button gọi phương thức Execute() ₫ối tượng ₫ó Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 332 166 Ví dụ mẫu Command command Application Add(Document) MenuItem Menu Command Clicked() Add(MenuItem) Execute() Document command->Execute(); Open() Close() Cut() Copy() Paste() Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Chương 11 : Các mẫu Creational Slide 333 Ví dụ mẫu Command Thí dụ ₫ối tượng PasteCommand hỗ trợ hoạt ₫ộng dán text từ clipboard vào tài liệu Phần tử nhận PasteCommand ₫ối tượng Document mà PasteCommand ₫ược cung cấp lúc "instantiation" tác vụ Execute gọi chức Paste Document nhận ₫ược Command Execute() Document Open() Close() Cut() Copy() Paste() document Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM PasteCommand Execute() document->Paste(); Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 334 167 Ví dụ mẫu Command Tác vụ Execute OpenCommand khác : hiển thị cửa sổ u cầu user nhập tên document tạo ₫ối tượng Document tương ứng, "add" document vào ứng dụng nhận mở document Command Execute() Application application OpenCommand Add(Document) Execute() AskUser() name = AskUser(); doc = new Document(name); application-.Add(doc); doc->Open(); Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bư mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Chương 11 : Các mẫu Creational Slide 335 Ví dụ mẫu Command Đôi option Menu cần thực thi chuỗi lệnh, ₫ịnh nghĩa class MacroCommand ₫ể cho phép thi hành số lệnh chưa biết trước Command Execute() commands MacroCommand Execute() Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM forall c in commands c->Execute(); Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 336 168 Lược ₫ồ class mẫu Command Client Command Invoker Execute() Receiver Action() receiver ConcreteCommand Execute() receiver->Action(); state Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Chương 11 : Các mẫu Creational Slide 337 Các phần tử tham gia Command : Khai báo phương thức ảo (Execute()…) ₫ể gọi thực thi hay quản lý request ConcreteCommand (PasteCommand, OpenCommand): Xác ₫ịnh ₫ối tượng nhận tương tác (₫ối tượng lớp Receiver) Override phương thức Execute lớp Command ₫ể ₫áp ứng request Client (Application) : khởi tạo ₫ối tượng ConcreteCommand truyền ₫ối tượng nhận tương tác cho Invoker (MenuItem): gửi request ₫ến ₫ối tượng Command Receiver (Document, Application) : Đối tượng nhận tương tác ConcreteCommand Biết cách thực hành ₫ộng ₫ể ₫áp ứng request Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 338 169 Q trình cộng tác phẩn tử Bư mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 339 Các ngữ cảnh nên dùng mẫu Command Thơng số hóa ₫ối tượng hành vi mà ₫ối tượng ₫ó thực thi Nghĩa entry ₫ối tượng thực thi nhiều hành vi khác tùy thuộc vào thơng số (là ₫ối tượng khác) truyền cho Quản lý, lưu trữ thực thi request thời ₫iểm khác Vì mẫu Command, request ₫ược lưu trữ ₫ối tượng nên việc lưu trữ quản lý request việc lưu trữ quản lý ₫ối tượng Hỗ trợ undo, redo thao tác Phương thức Execute() lưu trạng thái cũ ₫ối tượng Receiver ₫ể phục hồi lại có yêu cầu Hỗ trợ việc log lại thay ₫ổi ₫ối tượng Receiver ₫ể thực trở lại trường hợp ứng dụng chưa lưu ₫ối tượng Receiver ₫ã thay ₫ổi mà hệ thống lại bị hỏng (Ví dụ MS Word có chức recovery) Các hệ thống hỗ trợ transaction Trường hợp kết hợp mẫu Template Method Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 340 170 Mẫu State Mục tiêu : cho phép ₫ối tượng thay ₫ổi hành vi trạng thái bên thay ₫ổi Ta có cảm giác class ₫ối tượng bị thay ₫ổi Nhu cầu áp dụng : class TCPConnection miêu tả mối nối mạng, ₫ối tượng TCPConnection nhiều trạng thái : Established, Listening, Closed Khi ₫ối tượng TCPConnection nhận request, ₫áp ứng khác tùy vào trạng thái hành → hướng giải vấn ₫ề mẫu State Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Chương 11 : Các mẫu Creational Slide 341 Ví dụ mẫu State TCPConnection state TCPState Open() Close() Acknowledge() Open() Close() Acknowledge() state->Open(); TCPEstablished Open() Close() Acknowledge() Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM TCPListen TCPClosed Open() Close() Acknowledge() Open() Close() Acknowledge() Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 342 171 Lược ₫ồ cấu trúc mẫu State Context state State Request() Handle() state->Handle(); ConcreteStateA Handle() ConcreteStateB ConcreteStateC Handle() Handle() Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Chương 11 : Các mẫu Creational Slide 343 Các phần tử tham gia Context (TCPConnection) : ₫ịnh nghĩa interface cần dùng cho client trì tham khảo ₫ến ₫ối tượng class ConcreteState mà ₫ịnh nghĩa trạng thái hành State (TCPState) : ₫ịnh nghĩa interface nhằm bao ₫óng hành vi kết hợp với trạng thái cụ thể trì tham khảo ₫ến ₫ối tượng class ConcreteState mà ₫ịnh nghĩa trạng thái hành ConcreteState (TCPEstablished, TCPListen, TCPClose) : ₫ịnh nghĩa hành vi cụ thể kết hợp với trạng thái Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 344 172 Các ngữ cảnh nên dùng mẫu State Thường áp dụng mẫu State trường hợp sau: hành vi ₫ối tượng phụ thuộc vào trạng thái phải thay ₫ổi runtime trạng thái thay ₫ổi tác vụ có lệnh ₫iều kiện số học lớn phụ thuộc vào trạng thái ₫ối tượng Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 345 Mẫu Observer Mục tiêu : ₫ịnh nghĩa phụ thuộc 1-n ối tượng cho ₫ối tượng thay ₫ổi trạng thái ₫ội tượng phụ thuộc ₫ược cảnh báo hầu hiệu chỉnh tự ₫ộng (₫ể ₫ảm bảo tính quán) Nhu cầu áp dụng : ứng dụng quản lý bảng tính, bảng tính database ₫ược trình bày nhiều dạng khác spreadsheet, barchart, piechart, Mỗi nội dung database thay ₫ổi ta muốn cập nhật ₫ồng thời nhiều dạng biểu diễn → hướng giải vấn ₫ề mẫu Observer Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 346 173 Ví dụ mẫu Observer Spreadsheet PieChart BarChart thay ₫ổi, notification Database Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM request, modification Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 347 Lược ₫ồ cấu trúc mẫu Observer Subject Attach(Observer) Detach(Observer) Notify() observers forall o in observers o->Update(); ConcreteObserver ConcreteSubject GetState() SetState() Observer Update() return subjectState(); Update() observerState = subject->GetState(); observerState subjectState Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 348 174 Các phần tử tham gia Subject : biết observer Có thể có nhiều observer quan sát subject cung cấp interface ₫ể Attach va Detach observer vào Observer : ₫ịnh nghĩa interface hiệu chỉnh cho ₫ối tượng mà ₫ược cảnh báo ₫ể hiệu chỉnh subject ConcreteSubject : lưu trạng thái lưu ý tới ₫ối tượng ConcreteObserver gởi cảnh báo tới observer trạng thái thay ₫ổi Concretebserver : trì tham khảo tới ₫ối tượng ConcreteSubject lưu trạng thái mà cần phải ln qn với subject thực interface hiệu chỉnh ₫ể giữ trạng thái qn với subject Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 349 Các ngữ cảnh nên dùng mẫu Observer Thường áp dụng mẫu State trường hợp sau: trừu tượng có khía cạnh phụ thuộc lẫn Bao ₫óng khía cạnh ₫ối tượng ₫ộc lập giúp ta thay ₫ổi dùng lại chúng ₫ộc lập việc thay ₫ổi ₫ối tượng ₫òi hỏi phải thay ₫ổi ₫ối tượng khác bạn khơng biết trước có ₫ối tượng cần thay ₫ổi ₫ối tượng cần có khả cảnh báo ₫ối tượng khác khơng muốn chúng ghép nối chặt với Bư mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 11 : Các mẫu Creational Slide 350 175 ... Thưng Tin Mưn hoc PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide Nöi dung... Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 4: UML & Qui tr nh hơp nh ́t Slide 82 41 Overview of the UML • The UML is a language for — visualizing... phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 4: UML & Qui tr nh hơp nh ́t Slide 75 Analysis & Design Model Use Case Model Analysis Model

Ngày đăng: 22/08/2013, 14:06

Hình ảnh liên quan

hình…). Tuy nhiên việc xây dựng những phần mềm HĐT như thế phụ - PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - SỐNG VỚI HỘI CHỨNG DOWN

h.

ình…). Tuy nhiên việc xây dựng những phần mềm HĐT như thế phụ Xem tại trang 112 của tài liệu.
‰ Hình thành kho tri thức, ngữ vựng trong giao tiếp giữa những người làm - PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - SỐNG VỚI HỘI CHỨNG DOWN

Hình th.

ành kho tri thức, ngữ vựng trong giao tiếp giữa những người làm Xem tại trang 113 của tài liệu.
‰ Object patterns sử dụng tính ₫a hình và bao gộp ₫ể truyền thao tác từ - PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - SỐNG VỚI HỘI CHỨNG DOWN

bject.

patterns sử dụng tính ₫a hình và bao gộp ₫ể truyền thao tác từ Xem tại trang 158 của tài liệu.
‰ Nhu cầu áp dụng: trong ứng dụng quản lý bảng tính, mỗi bảng tính là 1 - PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML - SỐNG VỚI HỘI CHỨNG DOWN

hu.

cầu áp dụng: trong ứng dụng quản lý bảng tính, mỗi bảng tính là 1 Xem tại trang 174 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan