1 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 1 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 ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 2 1. n lai 1 ś khai nim cơ ban cua hương ₫́i tương, cac ngn ngư hương ₫́i tương thương dung, cơ ch́ dịch cac type/class sang ngn ngư c̉ ₫ỉn (ngn ngư may). 2. n lai qui trnh phat trỉn ph̀n m̀m hơp nh́t. 3. n lai ngn ngư UML ₫ươc dung ₫̉ miu ta cac artifacts cua qui trnh phat trỉn ph̀n m̀m hơp nh́t. 4. Giơi thiu cac m̃u thít ḱ hương ₫́i tương ₫ươc dung ph̉ bín trong cac ưng dung hin hanh va cac ưng dung tương lai. Nöi dung mön hoc 2 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 3 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 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 4 Trương Đai hoc Bach Khoa Tp. Hö̀ Chñ Minh Khoa Cöng Nghï Thöng Tin Chương 1 CAC KHAI NIÏMCƠ BAN CUA MÖ HÒNH HƯƠNG ĐÖI TƯƠNG Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 3 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 5 Nöi dung 1.1 Tư lêp trònh co cếu truc ₫ḯn OOP 1.2 Đö́i tương, thuöc tñnh, tac vu. 1.3 Abstract type va class. 1.4 Tñnh bao ₫ong. 1.5 Tñnh thưakḯ va cơ 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. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 6 1. May tnh ś la thít bị co th̉ thưc hin 1 ś hưu han cac chưc năng cơ ban (tp lnh), cơ ch́ thưc hin cac lnh la tư ₫ng tư lnh ₫̀u cho ₫́n lnh cúi cung. Danh sach cac lnh ₫ươc thưc hin nay ₫ươc goi la chương trnh. 2. b́t ky cng vic ngoai ₫ơi nao cung co th̉ ₫ươc chia thanh trnh tư nhìu cng vic nho hơn. Trnh tư cac cng vic nho nay ₫ươc goi la giai thut giai quýt cng vic ngoai ₫ơi. M̃i cng vic nho hơn cung co th̉ ₫ươc chia nho nưa, ⇒ cng vic ngoai ₫ơi la 1 trnh tư cac lnh may (chương trnh). 3. v́n ₫̀ ḿu ch́t cua vic dung may tnh giai quýt v́n ₫̀ ngoai ₫ơi la lp trnh. Cho ₫́n nay, lp trnh la cng vic cua con ngươi (vơi sư trơ giup nga y cang nhìu cua may tnh). 4. cac lnh cua chương trnh (code) phai tham khao hoăc xư ly (truy xút) thng tin (dư liu). Tư lêp trònh co cếu truc ₫ḯn OOP Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 4 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 7 Tư lêp trònh co cếu truc ₫ḯn OOP Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 5. Dư liu cua 1 chương trnh co th̉ ŕt nhìu va ₫a dang. Đ̉ truy xút ₫ung 1 dư liu ta c̀n : -tn nhn dang. -kỉu dư liu miu ta ću truc dư liu. -t̀m vưc truy xút miu ta giơi han khach hang truy xútdư liu. 6. Chương trnh c̉ ₫ỉn = giai thut + dư liu. 7. Chương trnh con (function, subroutine, ) cho phep ću truc chương trnh, sư dung lai code 8. Chương trnh c̉ ₫ỉn co ću truc phn ćp như sau : Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 8 Chương trnh = ću truc dư liu + giai thut entry 'start' global data module (package) local data of module local data of function Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Tư lêp trònh co cếu truc ₫ḯn OOP 5 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 9 Chương trnh = tp cac ₫́i tương tương tac nhau entry ₫́i tương (object) local data of object local data of operation Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Tư lêp trònh co cếu truc ₫ḯn OOP Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 10 Tö̉ng quat vï̀ hương ₫ö́i tương M hnh hương ₫́i tương giơi thiu 1 quan ₫ỉm lp trnh (va phn tch/thít ḱ) khac hăn so vơi trương phai c̉ ₫ỉn (co ću truc). Băt ₫̀u nhen nhom vao nhưng năm cúi 60s va ₫́n ₫̀u 90s th trơ nn ŕt ph̉ bín trong cng nghip ph̀n m̀m. Nhưng ngn ngư hương ₫́i tương ₫̀u tin : Smalltalk, Eiffel. Sau ₫o xút hin thm : Object Pascal, C++, Java, C#,… Hnh thanh cac phương phap phn tch/thít ḱ hương ₫́i tương. Va hin nay ta co 1 qui trnh phat trỉn ph̀n m̀m hơp nh́t dưa trn ngn ngư UML. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 6 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 11 Đö́i tương (Object) ~ M hnh ₫́i tương quan nim chương trnh bao g̀m cac ₫́i tương sinh śng va tương tac vơi nhau. ~ Đ́i tương bao g̀m : thuc tnh (dư liu) : mang 1 gia trị nh́t ₫ịnh tai tưng thơi ₫ỉm. tac vu (operation) : thưc hin 1 cng vic nao ₫o. Interface (abstract type) Implementation (class) Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 12 Kiï̉u trưu tương (Abstract type) ~ Abstract type (type) ₫ịnh nghĩa interface sư dung ₫́i tương. ~ Interface la tp cac entry ma bn ngoai co th̉ giao típ vơi ₫́i tương. ~ Dung signature ₫̉ ₫ịnh nghĩa m̃i entry, Signature g̀m : tn method (operation) danh sach ₫́i ś hnh thưc, m̃i ₫́i ś ₫ươc ₫ăc ta bơi 3 thuc tnh : tn, type va chì u chuỷn ₫ng (IN, OUT, INOUT). ₫ăc ta chưc năng cua method (thương la chu thch). ~ Dung abstract type (chư khng phai class) ₫̉ ₫ăc ta kỉu cho bín, thuc tnh, tham ś hnh thưc. ~ User khng c̀n quan tm ₫́n class (hin thưc cu th̉) cua ₫́i tương. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 7 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 13 Class (Implementation) ~ Class ₫ịnh nghĩa chi tít hin thưc ₫́i tương : ₫ịnh nghĩa cac thuc tnh dư liu : gia trị cua t́t ca thuc tnh xac ₫ịnh trang thai cua ₫́i tương. kỉu cua thuc tnh co th̉ la type c̉ ₫ỉn hay abstract type, trong trương hơp sau thuc tnh 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 khng c̀n quan tn ₫́n class cua ₫́i tương. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 14 Vñ du vï̀ class trong 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 } Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 8 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 15 Tñnh bao ₫ong (encapsulation) z Bao ₫ong : che d́u moi chi tít hin thưc cua ₫́i tương, khng cho bn ngoai th́y va truy xút ⇒ tnh ₫c lp cao giưa cac ₫́i tương (hay tnh ḱt dnh - cohesion giưa cac ₫́i tương ŕt th́p). che d́u cac thuc tnh dư liu : ńu c̀n cho phep truy xút 1 thuc tnh dư liu, ta tao 2 method get/set tương ưng ₫̉ giam sat vic truy xút va che d́u chi tít hin thưc bn trong. che d́u chi tít hin thưc cac method. che d́u cac internal function va sư hin thưc cua chung. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 16 Tñnh thưa kḯ (inheritance) ~ Tnh thưa ḱ cho phep giam nhe cng sưc ₫ịnh nghĩa type/class : ta co th̉ ₫ịnh nghĩa cac type/class khng phai tư ₫̀u ma băng cach ḱ thưa type/class co săn, ta chỉ ₫ịnh nghĩa thm cac chi tít mơi ma thi (thương kha t). Đa thưa ḱ hay ₫ơn thưa ḱ. Ḿi quan h supertype/subtype va superclass/subclass. co th̉ override cac method cua class cha, ḱt qua override chỉ co nghĩa trong ₫́i tương class con. Đ́i tương cua class con co th̉ ₫ong vai tro cua ₫́i tương cha nhưng ngươc lai thương khng ₫ung. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 9 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 17 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 lnh ve ₫oan thăng } } Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 18 Tñnh bao göp (aggregation) 1 ₫́i tương co th̉ chưa nhìu ₫́i tương khac tao nn ḿi quan h bao gp 1 cach ₫ qui giưa cac ₫́i tương. Co 2 goc nhn v̀ tnh bao gp : ngư nghĩa va hin thưc. O 1 O 2 O 3 Goc nhn ngư nghĩa Goc nhn hin thưc O 1 O 2 O 3 Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương 10 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 19 Vñ du vï̀ bao göp - C++ class Geometry { // abstract base class public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ) = 0; // abstract operation protected: int xPos, yPos; double xScale, yScale; COLORREF color; }; class Group : public Geometry { public: Group( ); ~Group( ); virtual void Draw( Window *pWnd ); // override private: Geometry **ppGeo; // pointer container int geoCount; }; Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 20 Thöng ₫iïp (Message) ~ Thng ₫ip la 1 phep goi tac vu ₫́n 1 ₫́i tương tư 1 tham khao. ~ Thng ₫ip bao g̀m 3 ph̀n : tham khao ₫́n ₫́i tương ₫ch. tn tac vu mún goi. danh sach tham ś thưc c̀n truỳn theo (hay nhn v̀ tư) tac vu. v du : aCircle.SetRadius (3); aCircle.Draw (pWnd); ~ Thng ₫ip la phương tin giao típ (hay tương tac) duy nh́t giưa cac ₫́i tương. Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương [...]... Build the product Transition the product to its users 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 70 35 Major Milestones Inception Elaboration Construction Transition time Vision Baseline Architecture Initial Capability Product Release 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 71 Bö mön Cöng nghï phề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 66 33 What Is a Process? • Defines Who is doing What, When to do it, and How to reach a certain goal New or changed Software Engineering Process requirements Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM New or changed system Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 4: UML & Qui tr... 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 68 34 Key concepts time Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle i Cycle n Phase Inception Prelim Iteration Elaboration Arch Iteration Release Release Construction Dev Iteration Release Dev Iteration Release Release Transition Trans Iteration Release Release Release Mön Phân tích & Thiết kế hướng ₫ối tượng dùng. .. 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 2: Th du v ̀ cac ng n ngư OOP Slide 44 22 Thñ du vï̀ chương trònh Java GUIClock 12.34.25 AlarmClock wakeup() 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 2: Th du v ̀ cac ng n ngư OOP Slide 45 Thñ du... } } Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 2: Th du v ̀ cac ng n ngư OOP Slide 51 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Trương Đai Hoc Bach Khoa Tp HCM Khoa Cöng nghï Thöng tin Chương 3 NGUYÏN TĂÆC DỊCH OOP Dịch abstract type Dịch class 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... Đ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 cơ ban cua m h nh hương ₫ ́i tương Slide 25 Trương Đai hoc Bach Khoa Tp Hö̀ Chñ Minh Khoa Cöng Nghï Thöng Tin Chương 2 THÑ DU VÏ NGÖN NGƯ OOP Visual C++ Java 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 2: Th du v ̀... : Geometry { }; Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 2: Th du v ̀ cac ng n ngư OOP Slide 33 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Cếu truc 1 chương trònh Dialog based ₫ơn gian InitInstance() DoModal() CProgramDlg CProgramApp 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 2: Th du... CProgramApp Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 2: Th du v ̀ cac ng n ngư OOP Slide 35 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Cếu truc 1 chương trònh MDI ₫ơn gian InitInstance() CChildFrame CProgramView CProgramDoc CMultiDocTemplate CProgramApp 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... Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 2: Th du v ̀ cac ng n ngư OOP Slide 41 Hö̃ trơ ₫ềy ₫u tñnh ₫a hònh 8 T ́t ca cac public function ₫ươc quan ly trong 1 danh sach "public function table" ₫ịa chỉ function 1 ₫ịa chỉ function 2 ₫ịa chỉ function 3 ₫ịa chỉ function i ₫ịa chỉ function 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. .. Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 3: Nguy n tăc dịch OOP Slide 65 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Trương Đai Hoc Bach Khoa Tp HCM Khoa Cöng nghï Thöng tin Chương 4 QUI TRÒNH HƠP NHÊT & UML Qui trònh phat triï̉n phền mï̀m hơp nhết Tö̉ng quat vï̀ ngön ngư mö hònh UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích . Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 1 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. Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 37 2.2 Ngön ngư Java 1. Hö̃ trơ 'interface' (1 dang cua type) va class. 2. Hö̃ trơ Đơn thưa kḯ. 3. Dung 'abstract. CNTT ĐHBach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 22 Kiï̉m tra kiï̉u (type check) ~ Chăt va dung ḿi quan h 'conformity' (tương thch t̉ng quat).