Đang tải... (xem toàn văn)
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 Đai hoc Bach Khoa Tp Hừ Chđ Minh Khoa Cưng Nghï Thưng Tin Mưn hoc 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 Bach 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 hoc n lai s ́ khai ni m ban cua hương ₫ ́i tương, cac ng n ngư hương ₫ ́i tương thương dung, ch ́ dịch cac type/class sang ng n ngư c ̉ ₫i ̉n (ng n ngư may) n lai qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t n lai ng n ngư UML ₫ươc dung ₫ ̉ mi u ta cac artifacts cua qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t Giơi thi u cac m ̃u thi ́t k ́ hương ₫ ́i tương ₫ươc dung ph ̉ bi ́n cac ưng dung hi n hanh va cac ưng dung tương lai Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide Tai liïu tham khao 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 Bach Khoa Tp.HCM Slide Trương Đai hoc Bach Khoa Tp Hừ Chđ Minh Khoa Cưng Nghï Thöng Tin Chương CAC KHAI NIÏM CƠ BAN CUA MƯ HỊNH HƯƠNG ĐƯI TƯƠNG Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Nöi dung 1.1 Tư lêp trịnh co cếu truc ₫ḯn OOP 1.2 Đứi tương, thc tđnh, tac vu 1.3 Abstract type va class 1.4 Tñnh bao ₫ong 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 quat hoa 1.9 Tđnh vưng bï̀n Bư mưn Cưng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP May t nh s ́ la thi ́t bị co th ̉ thưc hi n s ́ hưu han cac chưc ban (t p l nh), ch ́ thưc hi n cac l nh la tư ₫ ng tư l nh ₫ ̀u cho ₫ ́n l nh cu ́i cung Danh sach cac l nh ₫ươc thưc hi n nay ₫ươc goi la chương tr nh b ́t ky c ng vi c ngoai ₫ơi nao cung co th ̉ ₫ươc chia thanh tr nh tư nhi ̀u c ng vi c nho Tr nh tư cac c ng vi c nho nay ₫ươc goi la giai thu t giai quy ́t c ng vi c ngoai ₫ơi M ̃i c ng vi c nho cung co th ̉ ₫ươc chia nho nưa, ⇒ c ng vi c ngoai ₫ơi la tr nh tư cac l nh may (chương tr nh) v ́n ₫ ̀ m ́u ch ́t cua vi c dung may t nh giai quy ́t v ́n ₫ ̀ ngoai ₫ơi la l p tr nh Cho ₫ ́n nay, l p tr nh la c ng vi c cua ngươi (vơi sư trơ giup ngay cang nhi ̀u cua may t nh) cac l nh cua chương tr nh (code) phai tham khao 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 Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP Dư li u cua chương tr nh co th ̉ r ́t nhi ̀u va ₫a dang Đ ̉ truy xu ́t ₫ung dư li u ta c ̀n : - t n nh n dang - ki ̉u dư li u mi u ta c ́u truc dư li u - t ̀m vưc truy xu ́t mi u ta giơi han khach hang truy xu ́t dư li u Chương tr nh c ̉ ₫i ̉n = giai thu t + dư li u Chương tr nh (function, subroutine, ) cho phep c ́u truc chương tr nh, sư dung lai code Chương tr nh c ̉ ₫i ̉n co c ́u truc ph n c ́p sau : Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP Chương tr nh = c ́u truc dư li u + giai 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 Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tư lêp trònh co cếu truc ₫ḯn OOP Chương tr nh = t p cac ₫ ́i tương tương tac ₫ ́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 Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide Tö̉ng quat 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 ́) khac hăn so vơi trương phai c ̉ ₫i ̉n (co c ́u truc) Băt ₫ ̀u nhen nhom vao 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 thanh cac phương phap ph n t ch/thi ́t k ́ hương ₫ ́i tương Va hi n ta co qui tr nh phat 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 Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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 cac ₫ ́i tương sinh s ́ng va tương tac vơi Đ ́i tương bao g ̀m : thu c t nh (dư li u) : mang gia trị nh ́t ₫ịnh tai tưng thơi ₫i ̉m tac vu (operation) : thưc hi n c ng vi c nao ₫o Implementation (class) Interface (abstract type) Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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ư dung ₫ ́i tương Interface la t p cac entry ma b n ngoai co th ̉ giao ti ́p vơi ₫ ́i tương Dung signature ₫ ̉ ₫ịnh nghĩa m ̃i entry, Signature g ̀m : t n method (operation) danh sach ₫ ́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 cua method (thương la chu th ch) Dung abstract type (chư kh ng phai 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 ̉) cua ₫ ́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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 cac thu c t nh dư li u : gia trị cua t ́t ca thu c t nh xac ₫ịnh trang thai cua ₫ ́i tương ki ̉u cua 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 khao ₫ ́n ₫ ́i tương khac coding cac method va cac internal function Định nghĩa cac method tao va xoa ₫ ́i tương Định nghĩa cac method constructor va destructor User kh ng c ̀n quan t n ₫ ́n class cua ₫ ́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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 Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 14 Tñnh bao ₫ong (encapsulation) Bao ₫ong : che d ́u moi chi ti ́t hi n thưc cua ₫ ́i tương, kh ng cho b n ngoai th ́y va truy xu ́t ⇒ t nh ₫ c l p cao giưa cac ₫ ́i tương (hay t nh k ́t d nh - cohesion giưa cac ₫ ́i tương r ́t th ́p) che d ́u cac thu c t nh dư li u : n ́u c ̀n cho phep truy xu ́t thu c t nh dư li u, ta tao method get/set tương ưng ₫ ̉ giam sat 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 cac method che d ́u cac internal function va sư hi n thưc cua chung Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua m h nh hương ₫ ́i tương Slide 15 Tñnh thưa kḯ (inheritance) T nh thưa k ́ cho phep giam nhe c ng sưc ₫ịnh nghĩa type/class : ta co th ̉ ₫ịnh nghĩa cac type/class kh ng phai tư ₫ ̀u ma băng cach k ́ thưa type/class co săn, ta ₫ịnh nghĩa th m cac 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 cac method cua class cha, k ́t qua override co nghĩa ₫ ́i tương class Đ ́i tương cua class co th ̉ ₫ong vai tro cua ₫ ́i tương cha ngươc lai thương kh ng ₫ung Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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) { // cac l nh ve ₫oan thăng } } Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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 khac tao n n m ́i quan h bao g p cach ₫ qui giưa cac ₫ ́i tương Co goc nh n v ̀ t nh bao g p : ngư nghĩa va hi n thưc Goc nh n ngư nghĩa Goc nh n hi n thưc O2 O2 O1 O1 O3 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM O3 Mưn Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m ban cua 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 Bach 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 hoc 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 Bach 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 Bach 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 Bach 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