Tài liệu môn Phân tích thiết kế hướng đối tượng
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu môn Phân tích thiết kế hướng đối tượng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- tai_lieu_mon_phan_tich_thiet_ke_huong_doi_tuong.pdf
Nội dung text: Tài liệu môn Phân tích thiết kế hướng đối tượng
- 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT ĐH Bỏch Khoa Tp.HCM Slide 1 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT ĐH Bỏch Khoa Tp.HCM Slide 2 1
- 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 3 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 4 2
- Tư lờp trũnh co cờ́u truc ₫ù́n OOP 1. May tủnh sử́ la thiù́t bị co thù̉ thưc hiùn 1 sử́ hưu han cac chưc năng cơ ban (tờp lùnh), cơ 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. 2. 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 hơn. 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 hơn cung co thù̉ ₫ươc chia nho nưa, ⇒ cửng viùc ngoai ₫ơi la 1 trũnh tư cac lùnh may (chương trũnh). 3. 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 con ngươi (vơi sư trơ giup ngay cang nhiù̀u cua may tủnh). 4. 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 5 Tư lờp trũnh co cờ́u truc ₫ù́n OOP 5. Dư liùu cua 1 chương trũnh co thù̉ rờ́t nhiù̀u va ₫a dang. Đù̉ truy xuờ́t ₫ung 1 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ờ́tdư liùu. 6. Chương trũnh cử̉ ₫iù̉n = giai thuờt + dư liùu. 7. Chương trũnh con (function, subroutine, ) cho phep cờ́u truc chương trũnh, sư dung lai code 8. Chương trũnh cử̉ ₫iù̉n co cờ́u truc phờn cờ́p như sau : Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 6 3
- 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 global data (package) local data entry 'start' of module local data of function Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 7 Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương trũnh = tờp cac ₫ử́i tương tương tac nhau ₫ử́i tương (object) local data entry of object local data of operation Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 8 4
- Tử̉ng quat vù̀ hương ₫ử́i tương Mử hũnh hương ₫ử́i tương giơi thiùu 1 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 trong 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 nay ta co 1 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 9 Đử́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 nhau. ~ Đử́i tương bao gử̀m : thuửc tủnh (dư liùu) : mang 1 gia trị nhờ́t ₫ịnh tai tưng thơi ₫iù̉m. tac vu (operation) : thưc hiùn 1 cửng viùc nao ₫o. Implementation (class) Interface (abstract type) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 10 5
- 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 3 thuửc tủnh : tùn, type va chiù̀u chuyù̉n ₫ửng (IN, OUT, INOUT). ₫ăc ta chưc năng 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 11 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, trong 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 12 6
- 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 } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 13 Tủnh bao ₫ong (encapsulation) z 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 1 thuửc tủnh dư liùu, ta tao 2 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 trong. 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 14 7
- 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 chỉ ₫ị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 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 khửng ₫ung. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 15 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 16 8
- Tủnh bao gửp (aggregation) 1 ₫ử́i tương co thù̉ chưa nhiù̀u ₫ử́i tương khac tao nùn mử́i quan hù bao gửp 1 cach ₫ù qui giưa cac ₫ử́i tương. Co 2 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 O O1 2 O1 O3 O3 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 17 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; }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 18 9
- Thửng ₫iùp (Message) ~ Thửng ₫iùp la 1 phep goi tac vu ₫ù́n 1 ₫ử́i tương tư 1 tham khao. ~ Thửng ₫iùp bao gử̀m 3 phờ̀n : tham khao ₫ù́n ₫ử́i tương ₫ủch. tùn tac vu muử́n goi. danh sach tham sử́ thưc cờ̀n truyù̀n theo (hay nhờn vù̀ tư) tac vu. vủ du : aCircle.SetRadius (3); aCircle.Draw (pWnd); ~ Thửng ₫iùp la phương tiùn giao tiù́p (hay tương tac) duy nhờ́t giưa cac ₫ử́i tương. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 19 Tủnh ₫a xa (Polymorphism) ~ Cung 1 lùnh gơi thửng ₫iùp ₫ù́n ₫ử́i tương thửng qua cung 1 tham khao nhưng ơ vị trủ/thơi ₫iù̉m khac nhau co thù̉ gờy ra viùc thưc thi method khac nhau cua cac ₫ử́i tương khac nhau. T1 p1; // C1 va C2 la 2 class hiùn thưc T1 p1 = New C1; // tao ₫ử́i tương C1, gan tham khaovaop1 p1.meth1( ); p1 = New C2; // tao ₫ử́i tương C2, gan tham khao vao p1 p1.meth1( ); Lùnh p1.meth1( ); ơ 2 vị trủ khac nhau kủch hoat 2 method khac nhau cua 2 class khac nhau. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 20 10
- Kiù̉m tra kiù̉u (type check) ~ Chăt va dung mử́i quan hù 'conformity' (tương thủch tử̉ng quat). Type A tương thủch vơi type B ⇔ Achưa moi method cua B va ưng vơi tưng method cua B : tử̀n tai 1 method cung tùn trong A. danh sach ₫ử́i sử́ cua 2 method tương ưng phai băng nhau. kiù̉u ₫ử́i sử́ OUT hay gia trị return cua method trong A phai tương thủch vơi kiù̉u cua ₫ử́i sử́ tương ưng trong B. kiù̉u ₫ử́i sử́ IN cua method trong B phai tương thủch vơi kiù̉u cua ₫ử́i sử́ tương ưng trong A. kiù̉u ₫ử́i sử́ INOUT cua method trong A phai trung vơi kiù̉u cua ₫ử́i sử́ tương ưng trong B. ệ quan hù so trung hay quan hù con/cha (sub/super) la trương hơp ₫ăc biùt cua quan hù tương thủch tử̉ng quat. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 21 Tủnh tử̉ng quat hoa (Generalization) ~ Co 2 ngư nghĩa khac nhau cua tủnh tử̉ng quat hoa : class tử̉ng quat hoa cho phep san sinh tư ₫ửng cac class bũnh thương, cac class bũnh thương tư no chỉ co thù̉ tao ra ₫ử́i tương. Thương dung ngư nghĩa nay trong giai ₫oan lờp trũnh. ngươc vơi tủnh thưa kù́ : supertype/superclass la type/class tử̉ng quat hoa cua cac con cua no. Thương dung ngư nghĩa nay trong giai ₫oan phờn tủch/thiù́t kù́ phờ̀n mù̀m. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 22 11
- Tủnh thương tru (persistence) ~ ₫ơi sử́ng cua 1 ₫ử́i tương ₫ửc lờp vơi ₫ơi sử́ng cua phờ̀n tư tao ra no. ₫ử́i tương phai tử̀n tai khi con ủt nhờ́t 1 tham khao ₫ù́n no trong hù thử́ng. ₫ử́i tương phai bị xoa khi khửng con tham khao nao ₫ù́n no, vũ tai thơi ₫iù̉m nay ₫ử́i tương la rac. Viùc xac ₫ịnh chủnh xac 1 ₫ử́i tương co phai la rac hay khửng la 1 viùc phưc tap code ưng dung khửng ₫ươc phep lam, ₫ờy la cửng viùc cua hù thử́ng thửng qua module 'garbage collection'. vưng bù̀n khửng phai la vĩnh hăng, mưc ₫ử co thù̉ la 1 session cua may ao (JVM) hay lùu dai (thửng qua ₫ĩa cưng, CDROM). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 23 Tử̉ng kù́t ~ Mử hũnh hương ₫ử́i tương quan niùm thù́ giơi (hay chương trũnh) bao gử̀m cac ₫ử́i tương sử́ng chung va tương tac vơi nhau. ~ Cac ₫ăc ₫iù̉m chủnh cua hương ₫ử́i tương : Bao ₫ong : mử̃i ₫ử́i tương bao gử̀m dư liùu va tac vu. Cac tac vu thiù́t lờp nùn hanh vi cua ₫ử́i tương. Cac ₫ử́i tương ₫ươc phờn loai băng class. Cac ₫ử́i tương tương tac vơi nhau băng cach gơi thửng ₫iùp. giưa cac class/₫ử́i tương co thù̉ tử̀n tai quan hù bao gửp, thưa kù́, tử̉ng quat hoa. Tủnh ₫a hũnh : kù́t qua cua sư kiù̉m tra kiù̉u dưa vao mử́i quan hù 'conformity'. Tủnh vưng bù̀n : ₫ử́i tương tử̀n tai khi con ủt nhờ́t 1 tham khao ₫ù́n no. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 24 12
- 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 25 2.1 Ngửn ngư Visual C++ 1. Chỉ hử̃ trơ khai niùm class. 2. Cho phep Đa thưa kù́. 3. Dung 'abstract class' ₫ù̉ ₫ịnh nghĩa interface. 4. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n. 5. Đa hũnh co chon loc nhơ 'virtual function' 6. Chỉ hử̃ trơ cac ₫ử́i tương tam. 7. Override method khi thưa kù́. 8. Co thù̉ ₫ịnh nghĩa function overloaded. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 26 13
- Chỉ hử̃ trơ khai niùm class 1. Dung class ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh ⇒ ₫ử́i tương co thù̉ chưa vờt ly₫ử́i tương khac hay chưa tham khao ₫ù́n ₫ử́i tương khac. 2. Đa thưa kù́ trong ₫ịnh nghĩa class ⇒ 1 class co thù̉ chưa nhiù̀u class con trung nhau ⇒ dung "virtual base class" ₫ù̉ tử́i ưu hoa bử nhơ ₫ử́i tương. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 27 Class trưu tương (Abstract class) 3. Hử̃ trơ khai niùm "abstract class" ₫ù̉ ₫ịnh nghĩa class chỉ chưa thửng tin interface nhưng khửng cho phep dung class nay ₫ù̉ ₫ịnh nghĩa kiù̉u cho biù́n hay thuửc tủnh. 1 abstract class la 1 class chưa ủt nhờ́t 1 "pure virtual funtion". class Geometry { // abstract class public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ) = 0; // pure virtual function protected: int xPos, yPos; double xScale, yScale; COLORREF color; }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 28 14
- Tờ̀m vưc truy xuờ́t thanh viùn 4. Tờ̀m vưc truy xuờ́t thửng tin trong ₫ử́i tương : private : thửng tin bị che dờ́u hoan toan. protected : chỉ che dờ́u bùn ngoai nhưng cho phep cac ₫ử́i tương con, chau, chăt truy xuờ́t. public : cho phep tờ́t ca moi nơi truy xuờ́t. Friend class : la class ma mử̃i function cua no ₫ù̀u co thù̉ truy xuờ́t tư do mử̃i thanh phờ̀n cua class hiùn tai. Friend function : la function co thù̉ truy xuờ́t tư do mử̃i thanh phờ̀n cua class hiùn tai. Co thù̉ han chù́ tờ̀m vưc cua thanh viùn cua class cha khi thưa kù́. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 29 Hử̃ trơ tủnh ₫a hũnh co chon loc 5. Định nghĩa 'virtual function' nù́u muử́n ap dung tủnh ₫a hũnh trong viùc gơi thửng bao yùu cờ̀u function nay thưc thi. Tờ́t ca cac 'virtual function' ₫ươc quan ly trong 1 danh sach "virtual 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 30 15
- Cac ₫ử́i tương ₫ù̀u tam thơi 6. Cac ₫ử́i tương chỉ tử̀n tai tam thơi trong khửng gian process. Tham khao ₫ù́n ₫ử́i tương thưc chờ́t la pointer cuc bử. chương trũnh phai tư viù́t code cho hoat ₫ửng save/restore ₫ử́i tương nù́u muử́n lưu giư/dung lai ₫ử́i tương. VC++ hử̃ trơ hoat ₫ửng save/restore ₫ử́i tương nhơ kha năng 'Serialization'. 7. Co quyù̀n 'override' bờ́t ky toan tư hay function nao cua class cha. 8. Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung tùn nhưng 'signature' khac nhau. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 31 Skeleton ₫ịnh nghĩa class class Geometry : Object { // == class Geometry : public Object { public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ); // virtual method BOOL IsDisplayed(void); protected: COLORREF color; private : int xPos, yPos; double xScale, yScale; }; class Point : Geometry {}; class Line : Geometry { }; class Polygon : Geometry { }; class Rectangle : Geometry { }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 32 16
- 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 33 Cờ́u truc 1 chương trũnh SDI ₫ơn gian InitInstance() CMainFrame CProgramView CProgramDoc CSingleDocTemplate CProgramApp Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 34 17
- 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 35 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 class' ₫ù̉ ₫ịnh nghĩa interface. 4. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n. 5. Hử̃ trơ package 6. Đa hũnh ₫ờ̀y ₫u. 7. Chỉ hử̃ trơ ₫ử́i tương tam trong session JVM 8. Override function khi thưa kù́. 9. Co thù̉ ₫ịnh nghĩa function overloaded. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 36 18
- Hử̃ trơ Class va Interface 1. Chu yù́u dung class ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh. Co thù̉ dung interface ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh. Đử́itương chỉ co thù̉ chưa tham khao ₫ù́n ₫ử́i tương khac. 2. Phai goi ham tao ₫ử́i tương 1 cach tương minh, nhưng khửng ₫ươc xoa ₫ử́i tương. class C1 extends RootClass { } C1 o1; // o1 chưa tham khao ₫ù́n ₫ử́i tương C1 o1 = New C1; 3. Interface chỉ ₫ươc dung trong trương hơp ₫ăc biùt va khửng tương ₫ương vơi abstract type. 4. Đơn thưa kù́ trong ₫ịnh nghĩa class ⇒ mử́i quan hù thưa kù́ giưa cac class kha ₫ơn gian. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 37 Hử̃ trơ abstract class 5. Hử̃ trơ khai niùm "abstract class" ₫ù̉ ₫ịnh nghĩa class chưa thửng tin interface va khửng cho phep 'instanciate' ₫ử́i tương. Ban chỉ co thù̉ dung class 'abstract class' ₫ù̉ ₫ăc ta kiù̉u cho cac biù́n hoăc ₫ịnh nghĩa cac class con. class abstract Geometry { // abstract class protected int xPos, yPos; protected double xScale, yScale; protected COLORREF color; public abstract Draw(Graphics g); // abstract function }; Abstract class co thù̉ chưa ₫ờ̀y ₫u cac hiùn thưc bùn trong, nhưng thương chỉ co chưa cac 'abstract function'. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 38 19
- Tờ̀m vưc truy xuờ́t cac thanh phờ̀n 6. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n trong ₫ử́i tương : private : thanh phờ̀n bị che dờ́u hoan toan. protected : che dờ́u bùn ngoai nhưng cho phep cac ₫ử́i tương con, chau, chăt truy xuờ́t. public : cho phep tờ́t ca moi nơi truy xuờ́t. friendly : cho phep moi phờ̀n tư trong package truy xuờ́t. Đờy la tờ̀m vưc default va khửng co tư khoa tờ̀m vưc tương minh. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 39 Hử̃ trơ package 7. Package la ₫ơn vị quan ly tờ̀m vưc cua java, co thù̉ chưa nhiù̀u class. package graphics; public class Circle extends Graphic implements Draggable { . . . } Tờ́t ca moi phờ̀n tư ₫ươc ₫ịnh nghĩa trong 1 file source ₫ù̀u thuửc 1 package : tùn ₫ươc qui ₫ịnh bơi phat biù̉u package hay la package default. Nhiù̀u file source co thù̉ thuửc cung 1package (dung cung tùn trong phat biù̉u package). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 40 20
- 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 41 Cac ₫ử́i tương ₫ù̀u 'tam thơi' 9. Cac ₫ử́i tương chỉ tử̀n tai tam thơi trong 1session chay JVM. Ban co thù̉ tao ra cac ₫ử́i tương mơi ma khửng cờ̀n xoa no. Đử́i tương se tử̀n tai mửt khi con tham khao ₫ù́n no. Module Garbage Collection trong JVM se chịu trach nhiùm phat hiùn ₫ử́i tương 'rac' va xoa no ra khoi bử nhơ JVM. 10.Co quyù̀n 'override' bờ́t ky function nao cua class cha. 11.Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung tùn nhưng 'signature' khac nhau. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 42 21
- Thủ du vù̀ chương trũnh Java import java.net.*; public class getnet { public static void main(String args[]) { try { if(args.length!=1) { System.out.println("Usage: java AddrLookupApp "); return; } InetAddress host = InetAddress.getByName(args[0]); String hostName = host.getHostName(); System.out.println ("Host name : "+hostName); System.out.println ("IP address:"+host.getHostAddress()); } catch (UnknownHostException e) { } } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 43 Thủ du vù̀ chương trũnh Java GUIClock > AlarmClock 12.34.25 wakeup() Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 44 22
- Thủ du vù̀ cac class Java public class AlarmClock { private static final int MAX_CAPACITY = 10; private static final int UNUSED = -1; private static final int NOROOM = -1; private Sleeper[] sleepers = new Sleeper[MAX_CAPACITY]; private long[] sleepFor = new long[MAX_CAPACITY]; public AlarmClock () { for (int i = 0; i < MAX_CAPACITY; i++) sleepFor[i] = UNUSED; } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 45 Thủ du vù̀ cac class Java public synchronized boolean letMeSleepFor(Sleeper s, long time) { int index = findNextSlot(); if (index == NOROOM) { return false; } else { sleepers[index] = s; sleepFor[index] = time; new AlarmThread(index).start(); return true; } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 46 23
- Thủ du vù̀ cac class Java private synchronized int findNextSlot() { for (int i = 0; i < MAX_CAPACITY; i++) { if (sleepFor[i] == UNUSED) return i; } return NOROOM; } private synchronized void wakeUpSleeper(int sleeperIndex) { sleepers[sleeperIndex].wakeUp(); sleepers[sleeperIndex] = null; sleepFor[sleeperIndex] = UNUSED; } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 47 Thủ du vù̀ cac class Java private class AlarmThread extends Thread { int mySleeper; AlarmThread(int sleeperIndex) { super(); mySleeper = sleeperIndex; } public void run() { try { sleep(sleepFor[mySleeper]); } catch (InterruptedException e) {} wakeUpSleeper(mySleeper); } } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 48 24
- Thủ du vù̀ cac class Java public interface Sleeper { public void wakeUp(); public long ONE_SECOND = 1000;// in milliseconds public long ONE_MINUTE = 60000; // in milliseconds } import java.applet.Applet; import java.awt.Graphics; import java.util.*; import java.text.DateFormat; public class GUIClock extends Applet implements Sleeper { private AlarmClock clock; public void init() { clock = new AlarmClock(); } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 49 Thủ du vù̀ cac class Java public void start() { clock.letMeSleepFor(this, 1000); } public void paint(Graphics g) { Calendar cal = Calendar.getInstance(); Date date = cal.getTime(); DateFormat dateFormatter = DateFormat.getTimeInstance(); g.drawString(dateFormatter.format(date), 5, 10); } public void wakeUp() { repaint(); clock.letMeSleepFor(this, 1000); } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 50 25
- 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 51 Tử̉ng quat vù̀ vờ́n ₫ù̀ dịch OOP •Chương trũnh la 1tờp cac ₫ử́i tương sử́ng va tương tac lờ̃n nhau. •Cac ₫ử́i tương thuửc1sử́ loai nhờ́t ₫ịnh (n) •Mử̃i loai ₫ử́i tương ₫ươc miùu ta bơi 1 type + 1 class •Chương trũnh la tờpn₫ịnh nghĩa type + class •Dịch chương trũnh OOP la vong lăp dịch n type + n class. •Ta se miùu ta qui trũnh dịch 1 type va 1 class Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 52 26
- Dịch 1 abstract type • Abstract type chỉ chưa thửng tin trưu tương (interface), khửng miùu ta sư hiùn thưc → Kù́t qua viùc dịch 1 type chỉ dưng lai cờy ngư nghĩa cuatype tương ưng ₫ù̉ phuc vu viùc kiù̉m tra kiù̉u, chư khửng tao code ma may. •Chỉ cờ̀n3bươc:duyùt tư vưng, phờn tủch cu phap, phờn tủch ngư canh. • Nùn dung cửng cu hử̃ trơ như LEX, YACC. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 53 Dịch 1 class •Dịch class la cửng viùc chủnh cua chương trũnh dịch OOP. •Gử̀m 2 cửng viùc chủnh : dịch thuửc tủnh dư liùu va dịch cac method (hay cac internal function). •Cờ̀n ₫ờ̀y ₫u cac bươc : duyùt tư vưng, phờn tủch cu phap, phờn tủch ngư canh, tao ma. • Nùn dung cửng cu hử̃ trơ như LEX, YACC. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 54 27
- Dịch thuửc tủnh dư liùu typedef struct { • class → cờ́u truc record // import cacfieldtư cờ́u truc class C1 : C0 { // ₫ươc sinh ra tư C0 double d; int i ; // cac field tương ưng vơiC1 int C1_d; public : int C1_i; int proc4(int i); // cac field dư liùu ₫iù̀u khiù̉n void proc5 (double d); // tư tao bơi chương trũnh dịch void (*pvfaddr)() ; }; } C1; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 55 Dịch thuửc tủnh dư liùu(tt) •mử̃i class → 1 record cử̉ ₫iù̉n. • tùn class → tùn record. • copy cacfielddư liùu cua cờ́u truc sinh ra tư class cha. • chuyù̉n tưng thuửc tủnh cua class thanh tưng field cua record, 'tuyùt ₫ử́i hoa' tùn cua thuửc tủnh ₫ù̉ tranh nhăp nhăng. • thùm cacfielddư liùu ₫iù̀u khiù̉n phuc vu cho run-time : thủ du bang ₫ịa chỉ cac method cua ₫ử́i tương (pvftbl). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 56 28
- Dịch thuửc tủnh dư liùu(tt) •cờ́u trucrecord₫ươc dịch ra ma may thanh1vung nhơ liùn tuc co ₫ử dai băng ₫ử dai cua record. - field C1 o1; C1_o1 db dup (sizeof(C1)) • truy xuờ́t 1 thuửc tủnh dư liùu trơ thanh viùc truy xuờ́tửnhơ dung cach ₫ịnh ₫ịa chỉ chỉ sử́ : - o1.i = 5; mov bx, C1_o1 mov [bx+4], 5 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 57 Tao bang ₫ịa chỉ cacmethod pvftbl fname faddr class C1 : C0 { 0 "proc1" C0_proc1 int i ; double d; 1 "proc2" C1_proc2 2 "proc3" C0_proc3 public : int proc4(int i, double k); 3 "proc4" C1_proc4 void proc5 (double d); 4 "proc5" C1_proc5 }; 5 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 58 29
- Tao bang ₫ịa chỉ cac method (tt) •tao bang ₫ịa chỉ gử̀m C1METHCNT phờ̀n tư (C1METHCNT la sử́ method cua class hiùn hanh, kù̉ ca cac method thưa kù́. •mử̃i phờ̀n tư ₫ươc nhờn dang qua chỉ sử́ va gử̀m 2 thửng tin chủnh : tùn gơi nhơ cua method va ₫ịa chỉ cua method. • copy bang ₫ịa chỉ cua class cha ₫a co. •hiùu chỉnh lai cac ₫ịa chỉ cua cac method bị override. • thùm vao cac method mơi ₫ịnh nghĩa trong class hiùn hanh. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 59 Dịch 1 method int C1_proc1(C1* p, int i, double d) { int C1::proc1(int i,double k) { C2 o2; C2 *p2; C2 o2; // truy xuờ́t thuửc tủnh C2 *p2; p->C1_i = i; p->C1_d = d; C1::i = i; // goi ham d = k; C1_proc5(p,d); proc5(d); C2_proc2(&o2, i,d); o2.proc2(i,d); // gơi thửng bao : kiù̉m tra, load, p2 = New(C2); 1 // anh xa bang ₫ịa chỉ method p2->proc2(i,d); for (i = 0; i }; pvftbl[i].fname)==0) break; 3 (*pvftbl[i].faddr)(p2,i,d); }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 60 30
- Dịch 1 method (tt) • tùn method ₫ươc chuyù̉n tư dang 'tương ₫ử́i' sang 'tuyùt ₫ử́i' (nử́i kù́t tùn class vao). • thùm tham sử́ ₫ờ̀u tiùn cho ham sinh ra : miùu ta tham khao ₫ù́n ₫ử́i tương ma ham se truy xuờ́t cac thuửc tủnh dư liùu. • tùn thuửc tủnh ₫ươc chuyù̉n tư dang 'tương ₫ử́i' sang 'tuyùt ₫ử́i' (nử́i kù́t tùn class vao). •goi ham internal → goi ham nhưng thùm tham sử́ ₫ờ̀u tiùn. •gơi thửng bao3bươc: —kiù̉m tra, tũm, load va anh xa bang ₫ịa chỉ cac method cua ₫ử́i tương. — tũm chỉ sử́ cua method cờ̀n goi trong bang (i). —goi gian tiù́p method thửng qua ₫ịa chỉ phờ̀n tư thư i trong bang. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 61 Tử́i ưu hoacodetao ra •co 2vờ́n ₫ù̀ lơn trong qua trũnh dịch 1 class sang ngửn ngư cử̉ ₫iù̉n. —bang ₫ịa chỉ method chiù́m nhiù̀u chử̃. —tử́n thơi gian ₫ù̉ phuc vu lùnh gơi thửng bao : kiù̉m tra, load va anh xa bang ₫ịa chỉ, tũm chỉ sử́ method cờ̀n goi va goi gian tiù́pqua₫ịa chỉ trong bang. •1sử́ chương trũnh dịch tũm cach tử́i ưu hoa cac vờ́n ₫ù̀ nay. • slide sau la cac tử́i ưu hoa cua chương trũnh dịch C++ va cai gia phai tra. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 62 31
- Tử́i ưu hoacodetao ra (tt) • trong C++, tờ́t ca ₫ử́i tương ₫ù̀u tam thơi va găn chăt vao ưng dung → bang ₫ịa chỉ cac method cua cac ₫ử́i tương luửn năm săn trong khửng gian cua ưng dung. •mử̃i lờ̀n tao ₫ử́i tương, biù́n pvftbl trong ₫ử́i tương ₫ươc gan ngay ₫ịa chỉ ₫ờ̀u bang method → khửng cờ̀n lam bươc 1 cho mử̃i lờ̀n gơi thửng bao. •C++chỉ dung mử́i quan hù con/cha trong kiù̉m tra kiù̉u → cửng viùc2₫ươc lam tai thơi ₫iù̉m dịch thay vũ tai thơi ₫iù̉m gơi thửng bao trong luc chay. •cửt tùn gơi nhơ method khửng cờ̀n phai lưu trư trong bang ₫ịa chỉ cac method. •chỉ co cac virtual function mơi ₫ươc giai quyù́t theo cơ chù́ ₫a hũnh, con cac function khac ₫ươc dịch ra lơi goi trưc tiù́p. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 63 Tử́i ưu hoacodetao ra (tt) •cai gia phai tra cua viùc tử́i ưu hoa trong C++ : —ngươi lờp trũnh phai tư quyù́t ₫ịnh method nao cờ̀n xư ly theo cơ chù́ ₫a hũnh, ham nao khửng ? Nù́u sư quyù́t ₫ịnh nay sai thũ se gờy lử̃i khi chay, ma la ngươi thũ kho long quyù́t ₫ịnh chủnh xac. — tủnh ₫a hũnh chỉ ₫ung giưa cac ₫ử́i tương co mử́i quan hù con/cha, ơ ₫o thư tư cac ₫ịa chỉ method cua moi class con trong bang ₫ịa chỉ luửn giử́ng thư tư cac method tương ưng cua class cha, tuy nhiùn giưa2 classbờ́t ky thũ khửng thù̉ ₫am bao → kiù̉m tra kiù̉u trong C++ khửng thù̉ nờng cờ́p lùn băng cach dung mử́i quan hù "conformity". Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 64 32
- 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 65 What Is a Process? • Defines Who is doing What, When to do it, and How to reach a certain goal. New or changed New or changed Software Engineering requirements Process system Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 66 33
- Key concepts When does •Cycle product happen? When does • Phase, Iterations architecture happen? • Process Workflows What does happen? — Activity, steps happen? •Artifacts What is — models produced? — reports, documents Who does • Worker: Architect it? Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 67 Key concepts time Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle i Cycle n Phase Inception Elaboration Construction Transition Prelim Arch Dev Dev Trans Iteration Iteration Iteration Iteration Iteration Release Release Release Release Release Release Release Release Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 68 34
- Lifecycle Phases Inception Elaboration Construction Transition time • Inception Define the scope of the project and develop business case • Elaboration Plan project, specify features, and baseline the architecture • Construction Build the product • Transition Transition the product to its users Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 69 Major Milestones Inception Elaboration Construction Transition time Vision Baseline Initial Product Architecture Capability Release Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 70 35
- Phases and Iterations Inception Elaboration Construction Transition Prelim Arch Dev Dev Trans Iteration Iteration Iteration Iteration Iteration Release Release Release Release Release Release Release Release An iteration is a sequence of activities with an established plan and evaluation criteria, resulting in an executable release Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 71 Iterations and Workflow Phases Core Workflows Inception Elaboration Construction Transition Requirements An iteration in the elaboration phase Analysis Design Implementation Test Prelim inary iter. iter. iter. iter. ite r. iter. iter. Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1 Bộ mụn Cụng nghệ phần mềm Itera tio ns Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 72 36
- Workflows and Models UML diagrams provide views into each model Requirements Use Case Model Analysis Analysis Model Design Design Depl. Model Model Implementation Impl. Model Each workflow is associated with one or more models. Test Test Model Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 73 Use Case Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Deployment Design Diagrams Model Sequence Diagrams Depl. Model Collaboration Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 74 37
- Analysis & Design Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Incl. subsystems Deployment and packages Design Diagrams Model Sequence Diagrams Depl. Model Collaboration Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 75 Deployment and Implementation Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Deployment Design Diagrams Model Sequence Diagrams Incl. active classes and components Depl. Model Collaboration Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 76 38
- Test Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Deployment Design Diagrams Model Sequence Test model refers to Diagrams Depl. all other models and Model uses corresponding Collaboration diagrams Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 77 Overview of the Unified Process • The Unified Process is — Iterative and incremental — Use case driven — Architecture-centric — Risk confronting Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 78 39
- Use Case Driven Req.tsAnalysis Design Impl. Test Use Cases bind these workflows together Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 79 Use Cases Drive Iterations • Drive a number of development activities — Creation and validation of the system’s architecture — Definition of test cases and procedures — Planning of iterations — Creation of user documentation — Deployment of system • Synchronize the content of different models Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 80 40
- Architecture-Centric • Models are vehicles for visualizing, specifying, constructing, and documenting architecture • The Unified Process prescribes the successive refinement of an executable architecture Inception Elaboration Construction Transition time Architecture Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 81 Overview of the UML • The UML is a language for — visualizing — specifying — constructing — documenting the artifacts of a software-intensive system • There are 4 key elements : — Modeling elements — Relationships — Extensibility Mechanisms — Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 82 41
- Modeling Elements • Structural elements — class, interface, collaboration, use case, active class, component, node • Behavioral elements — interaction, state machine • Grouping elements — package, subsystem • Other elements — note Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 83 Relationships • Dependency • Association • Generalization • Realization Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 84 42
- Extensibility Mechanisms • Stereotype • Tagged value • Constraint Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 85 Models, Views, and Diagrams A model is a complete description of a system State State from a particular DiagramsClass perspective Use Case Diagrams Use Case Diagrams State DiagramsUse Case State Use Case Diagrams DiagramsObject DiagramsUse Case Diagrams Diagrams DiagramsSequence Diagrams Diagrams Scenario State DiagramsScenario DiagramsState CollaborationDiagrams Models DiagramsComponent Diagrams Diagrams Scenario Component Scenario DiagramsComponent DiagramsStatechart DeploymentDiagrams Diagrams Diagrams Diagrams Activity Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 86 43
- Diagrams • A diagram is a view into a model — Presented from the aspect of a particular stakeholder — Provides a partial representation of the system — Is semantically consistent with other views • In the UML, there are nine standard diagrams — Static views: use case, class, object, component, deployment — Dynamic views: sequence, collaboration, statechart, activity Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 87 Use Case Diagram • Captures system functionality as seen by users Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 88 44
- Use Case Diagram • Captures system functionality as seen by users • Built in early stages of development • Purpose — Specify the context of a system — Capture the requirements of a system — Validate a system’s architecture — Drive implementation and generate test cases • Developed by analysts and domain experts Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 89 Class Diagram • Captures the vocabulary of a system Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 90 45
- Class Diagram • Captures the vocabulary of a system • Built and refined throughout development • Purpose — Name and model concepts in the system — Specify collaborations — Specify logical database schemas • Developed by analysts, designers, and implementers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 91 Object Diagram • Captures instances and links Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 92 46
- Object Diagram • Shows instances and links • Built during analysis and design • Purpose — Illustrate data/object structures — Specify snapshots • Developed by analysts, designers, and implementers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 93 Component Diagram • Captures the physical structure of the implementation Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 94 47
- Component Diagram • Captures the physical structure of the implementation • Built as part of architectural specification • Purpose — Organize source code — Construct an executable release — Specify a physical database • Developed by architects and programmers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 95 Deployment Diagram • Captures the topology of a system’s hardware Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 96 48
- Deployment Diagram • Captures the topology of a system’s hardware • Built as part of architectural specification • Purpose — Specify the distribution of components — Identify performance bottlenecks • Developed by architects, networking engineers, and system engineers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 97 Sequence Diagram • Captures dynamic behavior (time- oriented) • Purpose — Model flow of control — Illustrate typical scenarios Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 98 49
- Collaboration Diagram • Captures dynamic behavior (message-oriented) • Purpose – Model flow of control – Illustrate coordination of object structure and control Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 99 Statechart Diagram • Captures dynamic behavior (event-oriented) • Purpose — Model object lifecycle — Model reactive objects (user interfaces, devices, etc.) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 100 50
- Activity Diagram • Captures dynamic behavior (activity- oriented) • Purpose — Model business workflows — Model operations Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 101 Architecture and the UML Design View Implementation View Classes, interfaces, Components collaborations Use cases Use Case View Process View Deployment View Active classes Nodes Organization Dynamics Package, subsystem Interaction State machine Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 102 51
- Architecture and Models Use Case Analysis Design Depl. Impl. Test Model Model Model Model Model Model Models Views Architecture embodies a collection of views of the models Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 103 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 5 NẶM BẶT YẽU CấU HĐT Cacartifactscờ̀n tao ra Cacworkerstham gia Qui trũnh phờn tủch Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 104 52
- Muc ₫ẩch cua hoat ₫ộng năm băt yóu cí̀u Muc ₫ủch cua hoat ₫ửng năm băt yùu cờ̀u la xờy dưng mử hũnh hù thử́ng ma se ₫ươc xờy dưng băng cach dung cac use-case. Cac ₫iù̉m băt ₫ờ̀u cho hoat ₫ửng nay kha ₫a dang : tư mử hũnh nghiùp vu (business model) cho cac ưng dung nghiùp vu. tư mử hũnh lĩnh vưc (domain model) cho cac ưng dung nhung (embeded). tư ₫ăc ta yùu cờ̀u cua hù thử́ng nhưng ₫ươc tao bơi nhom khac va/hoăc dung cac phương phap ₫ăc ta khac (thủ du như hương cờ́u truc). tư 1 ₫iù̉m nao ₫o năm giưa cac ₫iù̉m xuờ́t phat trùn. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 105 Cacartifactscí̀n tao ra trong năm băt yóu cí̀u Mử hũnh use-case : actor : ngươi/hù thử́ng ngoai/thiù́t bị ngoai tương tac vơi hù thử́ng use-case : cac chưc năng co nghĩa cua hù thử́ng cung cờ́p cho actor. — flow of events —cac yùu cờ̀u ₫ăc biùt cuause-case ₫ăc ta kiù́n truc (view of use-case model) bang thuờt ngư cac prototype giao diùn vơi user (user-interface prototype) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 106 53
- Cacartifactscí̀n tao ra trong năm băt yóu cí̀u 1 Use-Case Model Use-Case System * * Use - Case Actor Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 107 Cac workers trong năm băt yóu cí̀u System Use-case User-Interface Architect Analyst Specifier Designer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Use-Case Actor Glossary Use-Case User Interface Architecture Model Prototype Description Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 108 54
- Qui trẫnh năm băt yóu cí̀u Find Actors & Structure the System Analyst Use-Cases Use-Case Model Prioritize Architect Use-Cases Detail a Use-Case Specifier Use-Case Prototype User-Interface Designer User-Interface Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 109 Tẫm Actors & Use cases Muc ₫ủch nhờn dang actor va use-case la ₫ù̉ : Giơi han hù thử́ng vơi mửi trương bao quanh no. Phat hoa ai va cac gũ se tương tac vơi hù thử́ng va hù thử́ng cung cờ́p cac chưc năng gũ. Năm băt va ₫ịnh nghĩa danh sach cac thuờt ngư chung thiù́t yù́u cho viùc tao cac ₫ăc ta vù̀ cac chưc năng cua hù thử́ng. Hoat ₫ửng nay gử̀m4bươc: Tũm cac actor cua hù thử́ng. Tũm cac use cases cua hù thử́ng. Miùu ta văn tăt vù̀ tưng use-case. Miùu ta toan thù̉ mử hũnh use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 110 55
- Tẫm Actors Viùc tũm cac actor phu thuửc vao ₫iù̉m xuờ́t phat:nù́u xuờ́t phat tư mử hũnh nghiùp vu hay mử hũnh lĩnh vưc thũ viùc tũm actor rờ́t ₫ơn gian. Con nù́u xuờ́t phat tư cac y niùm mơ hử̀ thũ hay tra lơi cac cờu hoi sau : Ai la ngươi sư dung chưc năng chủnh cua hù thử́ng ? Ai cờ̀n sư hử̃ trơ tư hù thử́ng ₫ù̉ thưc hiùn cửng viùc thương nhờt cua ho ? Ai phai thưc hiùn cửng viùc bao dương, quan trị va giư cho hù thử́ng hoat ₫ửng ? Hù thử́ng se kiù̉m soat thiù́t bị phờ̀n cưng nao ? Hù thử́ng ₫ang xờy dưng cờ̀n tương tac vơi nhưng hù thử́ng khac khửng ? Hù thử́ng nao ? Ai hoăc vờt thù̉ nao quan tờm ₫ù́n hay chịu anh hương bơi kù́t qua ma hù thử́ng phờ̀n mù̀m tao ra ? Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 111 Tẫm Use-Cases Viùc tũm cac use-case phu thuửc vao ₫iù̉m xuờ́t phat:nù́u xuờ́t phat tư mử hũnh nghiùp vu hay mử hũnh lĩnh vưc thũ viùc tũm use-case rờ́t ₫ơn gian. Con nù́u xuờ́t phat tư cac y niùm mơ hử̀ thũ hay tra lơi cac cờu hoi sau : Actor yùu cờ̀u chưc năng gũ cua hù thử́ng ? Actor cờ̀n phai ₫oc, tao, xoa, sưa ₫ử̉i hoăc lưu trư thửng tin nao cua hù thử́ng ? Actor cờ̀n thiù́t phai ₫ươc canh bao vù̀ nhưng sư kiùn trong hù thử́ng, hay actor cờ̀n phai bao hiùu cho hù thử́ng vù̀ vờ́n ₫ù̀ nao ₫o khửng ? Hù thử́ng co thù̉ hử̃ trơ mửt sử́ cửng viùc thương nhờt cua actor nao ₫o khửng ? Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 112 56
- Mióu ta văn tăt tưng Use-Cases Mử̃i use-case sau khi tũm ₫ươc, nùn ₫ươc ₫ăt tùn, ₫ươc miùu ta băng vai cờu tử̉ng kù́t cac hoat ₫ửng rử̀i sau ₫o ₫ăc ta tưng bươc hù thử̀ng cờ̀n gũ ₫ù̉ tương tac vơiactor. Dung lươc ₫ử̀ va cac flow of events ₫ù̉ miùu ta mử hũnh use-case tử̉ng thù̉, ₫ăc biùt la cac mử́i quan hù giưa cacuse-caseva vơiactor. Quan hù giưa cac actors : tử̉ng quat hoa (generalization). Quan hù giưa actor va use-case : liùn kù́t (association). Quan hù giưa cac use-cases : tử̉ng quat hoa. include extend Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 113 Cac nộ́i quan hó giưa cacactorva use-cases Use-Case Z Actor A Actor B Use-Case X Use-Case Y > Use-Case D Use-Case A Use-Case B > Use-Case C Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 114 57
- Cac nộ́i quan hó giưa cacuse-casesva use-cases > User Maintenance POS Login Store Manager > > <<exten Edit User Information Add New User Remove User Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 115 Cac nộ́i quan hó giưa cacactorva actor Quan hù giưa cac actors : tử̉ng Customers quat hoa (generalization). Thủ du Customer la actor tử̉ng quat hoa cua cac actor Online Customer Customer, Telephone Customer, Retail Store Customer. Lưu y actor tử̉ng quat hoa thương khửng co thờt, no la phờ̀n tư trưu tương. Retail S tore Online Custom er Customer Telephone Customer Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 116 58
- Lươc ₫ộ̀ use-case Sales:From Order to Delivery Order Goods & Services In i tia t or Confirm Order Initiator Initiator Initiator Buyer Initiator Seller Invoice Buyer Send Reminders Pay Invoice > Accou nti ng Sys t em Perform Transaction Pay Overdraft Fee Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 117 Lươc ₫ộ̀ trang thai cua use-case Pay Invoice Browsing schedule reject Invoice Scheduled pay on due date Invoice Paid Invoice Cancelled Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 118 59
- Mióu ta tộ̉ng thó̉ mộ hẫnh Use-Cases Xờy dưng cac lươc ₫ử̀ use-case va cac ₫ăc ta giai thủch mử hũnh use- case, nhờ́t la cach thưc ma cac use-case quan hù vơi nhau hay vơi cac actor : lươc ₫ử̀ miùu ta cacuse-casephuc vu cho 1 actor hay 1 use-case nghiùp vu. ₫ù̉ ₫am bao tủnh nhờ́t quan khi miùu ta nhiù̀u use-case ₫ử̀ng thơi, nùn xờy dưng1bang thuờ ngư chung (glossary). mử hũnh use-case co thù̉ ₫ươc tử̉ chưc dang cờy thư bờc nhơ cac package use-case. xờy dưng ₫ăc ta "survey" cho mử hũnh use-case tử̉ng thù̉ va nhơ khach hang va ngươi dung kiù̉m tra, ₫anh gia lai. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 119 Săp thư tư ưu tión cacuse-case cac use-case tũm ₫ươc khửng phai thiù́t yù́u như nhau, do ₫o kiù́n truc sư cờ̀n săp xù́p thư tư ưu tiùn chung ₫ù̉ xac ₫ịnh use-case nao nùn ₫ươc phat triù̉n trươc, use-case nao ₫ươc phat triù̉n sau. kù́t qua cua hoat ₫ửng nay la xờy dưng ₫ươc goc nhũn kiù́n truc cua mử hũnh use-case, no ₫ươc dung ₫ù̉ hoach ₫ịnh cac bươc lăp cung vơi cac yù́u tử́ khac như nghiùp vu,kinh tù́ Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 120 60
- Chi tió́t hoaUse-Case Muc ₫ủch la ₫ăc ta "flow of events" cho tưng use-case : cờ́u truc ₫ăc ta use-case. ₫ăc ta use-case bao gử̀m nhưng gũ. hũnh thưc hoa ₫ăc ta use-case. Cờ́u truc ₫ăc ta use-case : gử̀m1luử̀ng cửng viùc cơ ban va cac luử̀ng phu. Cac luử̀ng phu co thù̉ xay ra vũ cac ly do : Actor co thù̉ chon thưc hiùn 1 trong nhiù̀u nhanh. Nù́u hơn1 actordung use-case, cac hoat ₫ửng cua ho co thù̉ anh hương lờ̃n nhau. Hù thử́ng co thù̉ phat hiùn lử̃i nhờp tư actor. 1sử́ tai nguyùn khửng hoat ₫ửng tử́t lam cho use-case khửng hoan tờ́t cửng viùc ₫ung cua no. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 121 Đăc ta use-case gộ̀m nhưng gẫ ? nùn ₫ịnh nghĩa trang thai băt ₫ờ̀u. khi nao va cach naouse-casebăt ₫ờ̀u. thư tư cac hoat ₫ửng ₫ươc thưc hiùn. khi nao va cach naouse-casekù́t thuc. nùn ₫ịnh nghĩa trang thai kù́t thuc. khửng cho phep nhiù̀u 'path' thưc thi. Co thù̉ miùu ta luử̀ng thi hanh phu trong ₫ăc ta luử̀ng cơ ban. Đăc ta luử̀ng phu ₫ươc rut trủch tư luử̀ng cơ ban. Tương tac giưa hù thử́ng va actor va chung trao ₫ử̉i nhưng gũ. Viùc dung cac ₫ử́i tương, gia trị,tai nguyùn trong hù thử́ng. Phai miùu ta ro rang hù thử́ng lam gũ va actor lam gũ. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 122 61
- Hẫnh thưc hoa use-case (Formalizing) Khi sư tương tac giưa actor va use-case gử̀m nhiù̀u trang thai phưc tap ta nùn dung ky thuờt mử hũnh trưc quan ₫ù̉ diù̃n ta use- case vũ no giup nha phờn tủch hiù̉u ro hơn vù̀ use-case : lươc ₫ử̀ trang thaiUMLco thù̉ ₫ươc dung ₫ù̉ miùu ta trang thai cuause-caseva sư chuyù̉n giưa cac trang thai. lươc ₫ử̀ hoat ₫ửng co thù̉ ₫ươc dung ₫ù̉ miùu ta sư chuyù̉n trang thaichitiù́t hơn dươi dang cac hoat ₫ửng. lươc ₫ử̀ tương tac co thù̉ ₫ươc dung ₫ù̉ miùu ta cac tương tac giưa ₫ử́i tương use-case va ₫ử́i tương actor. Khửng nùn lam dung cac lươc ₫ử̀ vũ ₫ờy la ngửn ngư cua nha phat triù̉n, cac khach hang va ngươi dung kho long hiù̉u nử̉i. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 123 Cí́u truc lai mộ hẫnh Use-Case Mử hũnh use-case ₫ươc cờ́u truc lai ₫ù̉ : rut trủch cac use-case tử̀ng quat va dung chung bơi cac use- case ₫ăc biùt hơn. rut trủch cac use-case nhiùm y va phu thùm ₫ù̉ nơi rửng use- case khac. Trươc khi hoat ₫ửng nay xay ra : nha phờn tủch ₫a nhờn diùn tương ₫ử́i ₫ờ̀y ₫u cac actor va use-case, miùu ta chung trong cac lươc ₫ử̀ ₫ù̉ cờ́u thanh mử hũnh use-case tử̉ng thù̉. ngươi ₫ăc ta use-case ₫a phat triù̉n ₫ăc ta chi tiù́t cho mử̃i use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 124 62
- Cí́u truc lai mộ hẫnh Use-Case Cac cửng viùc cu thù̉ : Nhờn dang cac use-case tử̉ng quat ₫ươc dung chung. Nhờn dang cac use-case co quan hù "extend". Nhờn dang cac use-case co quan hù "include". Mửt sử́ ₫iù̀u lưu y : Cờ́u truc cac use-case va mử́i quan hù giưa chung nùn phan anh cac chưc năng thưc tù́. Mử̃i use-case cờ̀n ₫ươc xư ly như 1 artifact riùng biùt, do ₫o khửng nùn chon use-case qua lơn hay qua nho. Tranh chia nho use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 125 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 6 PHấN TẹCH HƯƠNG ĐệI TƯƠNG Cacartifactscờ̀n tao ra Cacworkerstham gia Qui trũnh phờn tủch Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 126 63
- Muc ₫ẩch cua phín tẩch yóu cí̀u Muc ₫ủch cua hoat ₫ửng phờn tủch yùu cờ̀u la xờy dưng mử hũnh phờn tủch vơi cac ₫ăc ₫iù̉m sau : dung ngửn ngư cua nha phat triù̉n ₫ù̉ miùu ta mử hũnh. thù̉ hiùn goc nhũn tư bùn trong cua hù thử́ng. ₫ươc cờ́u truc tư cac class phờn tủch va cac package phờn tủch. ₫ươc dung chu yù́u bơi nha phat triù̉n ₫ù̉ hiù̉u cach thưc tao hũnh dang hù thử́ng. loai trư moichitiù́t dư thưa, khửng nhờ́t quan. phat hoa cac hiùn thưc cho cac chưc năng bùn trong hù thử́ng. ₫ịnh nghĩa cac dờ̃n xuờ́t use-case, mử̃i dờ̃n xuờ́tuse-casecờ́p phờn tủch miùu ta sư phờn tủch 1 use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 127 Cacartifactscí̀n tao ra trong phín tẩch yóu cí̀u Mử hũnh phờn tủch = hù thử́ng phờn tủch : cac class phờn tủch — boundary class — entity class. — control class cac dờ̃n xuờ́tuse-casecờ́p phờn tủch : —cac lươc ₫ử̀ class phờn tủch —cac lươc ₫ử̀ tương tac(cửng tac, ). — 'flow of events' ơ cờ́p phờn tủch —cac yùu cờ̀u ₫ăc biùt cuause-case cac package phờn tủch ₫ăc ta kiù́n truc (view of analysis model) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 128 64
- Cacartifactscí̀n tao ra trong phín tẩch yóu cí̀u * 1 * Analysis Analysis Analysis Package Model System * * * * Analysis Class Use-Case Realization - Analysis Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 129 Cac workers trong phín tẩch yóu cí̀u Component Architect Use-Case Engineer Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Analysis Architecture Use-Case Analysis Analysis Model Description Realization - class package Analysis Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 130 65
- Qui trẫnh phín tẩch yóu cí̀u Architect Architectural Analysis Use-Case Analyze a Engineer Use-Case Analyze a Component Analyze a Engineer Class Package Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 131 Phín tẩch kió́n truc:nhín dang cac package phín tẩch Muc ₫ủch cua phờn tủch kiù́n truc la phat hoa mử hũnh phờn tủch va kiù́n truc hù thử́ng băng cach nhờn dang cac package phờn tủch, cacclass phờn tủch dù̃ thờ́y va cac yùu cờ̀u ₫ăc biùt chung cho hù thử́ng. Cac package phờn tủch giup tử̉ chưc hù thử́ng thanh nhưng ₫ơn vị nho dù̃ quan ly.Mử̃i package chưa1sử́ use-case vơi tủnh chờ́t sau : cacuse-casehử̃ trơ cho cung 1 qui trũnh nghiùp vu. cacuse-casehử̃ trơ cho cung 1 actor. cacuse-caseco quan hù lờ̃n nhau : tử̉ng quat hoa, include va extend. Theo thơi gian, khi viùc phờn tủch tiù́n triù̉n, sư tinh chù́ cờ́u truc cac package se tiù́n triù̉n theo. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 132 66
- 3loaiclassphín tẩch Co 3loai (stereotype) class phờn tủch : class biùn (boundary class) mử hũnh sư tương tac giưa actor va hù thử́ng class thưc thù̉ (entity class) mử hũnh thửng tin cờ̀n cho hù thử́ng, loai thửng tin co tủnh bù̀n vưng, tử̀n tai lờu dai. class ₫iù̀u khiù̉n (control class) mử hũnh viùc xư ly,cửng tac, giao tac trong use-case. Boundary class Entity class Control class Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 133 Phín tẩch kió́n truc:nhín dang cacclassthưc thó̉ dó̃ thí́y Tư cacclasslĩnh vưchaycac class nghiùp vu trong bươc năm băt yùu cờ̀u, ₫ù̀ nghị 1sử́ class thưc thù̉ quan trong nhờ́t(tư 10-20). Cac class phờn tủch con lai se ₫ươc nhờn dang trong hoat ₫ửng phờn tủch use-case. Cac yùu cờ̀u ₫ăc biùt cung ₫ươc nhờn dang ₫ù̉ ₫ươc xư ly trong cac bươc sau, chung gử̀m: tủnh bù̀n vưng. sư phờn tan&₫ử̀ng thơi. cac tủnh chờ́tantoan dư liùu. ₫ù̀ khang vơi lử̃i. quan ly giao tac. Tủnh chờ́t cua mử̃i yùu cờ̀u ₫ăc biùt se ₫ươc cờn nhăc sau trong tưng class va tưng dờ̃n xuờ́t use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 134 67
- Phín tẩch use-case Phờn tủch use-case la ₫ù̉ : nhờn dang cac class phờn tủch co ₫ử́i tương cua chung tham gia vao viùc thưc hiùn 'flow of events' cua use-case. phờn phử́i hanh vi cuause-casebăng cach cho cac ₫ử́i tương phờn tủch tương tac nhau. năm băt1sử́ yùu cờ̀u ₫ăc biùt cho dờ̃n xuờ́t use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 135 Phín tẩch use-case : nhín dang cacclassphín tẩch Trong bươc nay ta nhờn dang cacclass₫iù̀u khiù̉n, biùn, thưc thù̉ cờ̀n thiù́t ₫ù̉ hiùn thưcuse-caseva phat hoa tùn, trach nhiùm, thuửc tủnh va cac mử́i quan hù giưa chung. Dung cac hương dờ̃n sau : nhờn dang cacclassthưc thù̉ băng cach chu y cac thửng tin trong ₫ăc ta use-case va trong mử hũnh lĩnh vưc. nhờn dang class biùn cơ sơ cho mử̃iclassthưc thù̉ vưa tũm ₫ươc. nhờn dang class biùn trung tờm cho mử̃iactorla con ngươi. nhờn dang class biùn trung tờm cho mử̃iactorla hù thử́ng ngoai hay thiù́t bị I/O. nhờn dang class ₫iù̀u khiù̉n co trach nhiùm xư ly trong dờ̃n xuờ́t use-case. Tờp hơp cac class phờn tủch tham gia vao dờ̃n xuờ́t use-case thanh 1 (hay nhiù̀u) lươc ₫ử̀ class. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 136 68
- Thẩ du vó̀ lươc ₫ộ̀ class phín tẩch cho use-case Pay Invoice Order Configmation Order Handler Invoice Buyer Payment Request UI (f rom Use-Case Model) Payment Scheduler Payment Request Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 137 Phín tẩch use-case : mióu ta sư tương tac giưa cac ₫ộ́i tương phín tẩch Cờ̀n chu y cac ₫iù̉m sau trong lươc ₫ử̀ cửng tac: p. tư actor gơi 1 thửng bao ₫ù́n class biùn ₫ù̉ kủch hoat use-case. mử̃i class phờn tủch nùn co ủt nhờ́t1₫ử́i tương tham gia vao lươc ₫ử̀ cửng tac. chưa vửi kù́t hơp tac vu cu thù̉ cho thửng bao. cac mử́i nử́i trong lươc ₫ử̀ cửng tac thương la 'instance' cua mử́i quan hù kù́t hơp giưa cacclasstương ưng. chưa tờp trung vao thư tư thơi gian cac thửng bao. Lươc ₫ử̀ cửng tac nùn xư ly tờ́t ca mử́i quan hù cuause-case ₫ươc hiùn thưc. cờ̀n bử̉ sung ₫ăc ta dang văn ban vao lươc ₫ử̀ cửng tac, ₫ăc ta nay nùn ₫ươc ₫ù̉ vao 'flow of events cờ́p phờn tủch". Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 138 69
- Lươc ₫ộ̀ cộng tac Cờ̀n chu y cac ₫iù̉m sau trong lươc ₫ử̀ cửng tac: cac thửng ₫iùp ₫ươc ₫anh sử́ theo kiù̉u phờn cờ́p. — 3.4.2 xay ra sau 3.4.1 va ca 2 ₫ươc lử̀ng trong 3.4 — 3.4.3a va 3.4.3b xay ra ₫ử̀ng thơi va ₫ươc lử̀ng trong 3.4 cu phap tử̉ng quat cua 1 thửng ₫iùp: precedessor guard-condition sequence-expression return-value := message-name argument-list Vủ du : — 2/ 1.3.1: p := find(specs) — 1.1, 4.2/ 3.2 *[i:=1 6]: invert(x, color) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 139 Lươc ₫ộ̀ cộng tac Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac: 5: Get : Order Confirmation 4: Get : Order Handler 3: Check Invoice 2: Browse : Invoice 6: Schedule InVoice for payment 9: setStatus(scheduled) 1: Browse Invoice 7: Schedule payment : Buyer : Payment Request UI 8: New : Payment Scheduler : Payment Request Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 140 70
- Phín tẩch class Muc ₫ủch cua viùc phờn tủch class la : nhờn dang va duy trũ cac nghĩa vu,trach nhiùm cua class phờn tủch dưa vao vai tro cua no trong dờ̃n xuờ́t use-case. nhờn dang va duy trũ cac thuửc tủnh va cac mử́i quan hù cuaclass phờn tủch. năm băt cac yùu cờ̀u ₫ăc biùt liùn quan ₫ù́n viùc hiùn thưcclass phờn tủch. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 141 Phín tẩch class : nhín dang cac nghĩa vu tử̉ hơp cac vai tro ma class ₫ong trong cac dờ̃n xuờ́tuse-case khac nhau se cho ta 1 sử́ nghĩa vu cua class. nghiùn cưu cac lươc ₫ử̀ class va lươc ₫ử̀ tương tac trong cac dờ̃n xuờ́tuse-caseco class tham gia. ₫ửi khi cờ̀n nghiùn cưu 'flow of events cờ́p phờn tủch' cua dờ̃n xuờ́t use-case ₫ù̉ tũm thùm cac nghĩa vu cac class. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 142 71
- Phín tẩch class : nhín dang cac thuộc tẩnh Mử̃i nghĩa vu thương cờ̀n1sử́ thuửc tủnh. Dung cac hương dờ̃n sau : tùn thuửc tủnh nùn la danh tư. kiù̉u thuửc tủnh ơ cờ́p phờn tủch nùn ơ cờ́p y niùm, chưa cờ̀n kiù̉u cu thù̉, nùn dung lai kiù̉u ₫a co khi ₫ăc ta kiù̉u cho thuửc tủnh mơi. nù́u class phờn tủch qua phưc tap, nùn tach1sử́ thuửc tủnh phưc tap ra thanh class riùng. thuửc tủnh cuaclassthưc thù̉ thương dù̃ thờ́y. thuửc tủnh cua class biùn giao tiù́p vơi ngươi thương miùu ta thửng tin ₫ươc xư ly bơiusernhư cac field text, thuửc tủnh cua class biùn giao tiù́p vơi hù thử́ng ngoai thương miùu ta cac tủnh chờ́t cua giao tiù́p. thuửc tủnh cuaclass₫iù̀u khiù̉n ủt khi co. ₫ửi khi khửng cờ̀n cac thuửc tủnh hũnh thưc. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 143 Phín tẩch class : nhín dang mộ́i quan hó giưa cacclass Cac ₫ử́i tương tương tac nhau thửng qua cac lươc ₫ử̀ cửng tac. Cac mử́i liùn kù́t nay thương la 'instance' cua mử́i quan hù kù́t hơp giưa cac class. Cac mử́i liùn kù́t nay cung co thù̉ am chỉ nhu cờ̀u vù̀ sư gửp nhiù̀u ₫ử́i tương. Mử́i quan hù gửp nùn ₫ươc dung khi cac ₫ử́i tương miùu ta : cac khai niùm chưa vờt ly khai niùm khac (xe chưa tai xù́ va khach) cac khai niùm ₫ươc xờy dưng tư cac khai niùm khac(xe gử̀m cac banh xe va ₫ửng cơ). cac khai niùm tao thanh tờp hơp y niùm nhiù̀u ₫ử́i tương (gia ₫ũnh gử̀m cha, me va con). Đù̉ rut trủch cac hanh vi chung cua nhiù̀u class phờn tủch, ta co thù̉ dung class tử̉ng quat hoa, nhưng chỉ nùn ơ cờ́p y niùm. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 144 72
- Phín tẩch package Muc ₫ủch cua phờn tủch package la : ₫am bao tưng package phờn tủch ₫ửc lờp vơi cac package khac nhiù̀u như co thù̉ co. ₫am bao package phờn tủch hoan thanh muc ₫ủch cua no la hiùn thưc1sử́ class lĩnh vưc hoăc1sử́ use-case. miùu ta cac phu thuửc sao cho co thù̉ ươc lương anh hương cua cac thay ₫ử̉i trong tương lai. Dung cac hương dờ̃n sau : ₫am bao package chưa cacclass₫ung, cử́ găng cho tủnh kù́t dủnh cao băng cach gửp cac class co mử́i quan hù chưc năng. han chù́ tử́i ₫a sư phu thuửc giưa cac package, phờn phử́i lai cac class qua phu thuửc vao package khac. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 145 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 7 THIẽT Kẽ HƯƠNG ĐệI TƯƠNG Cacartifactscờ̀n tao ra Cacworkerstham gia Qui trũnh thiù́t kù́ Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 146 73
- Muc ₫ẩch cua thió́t kó́ Muc ₫ủch cua cửng viùc thiù́t kù́ la : ₫at tơi sư hiù̉u biù́t sờu săc cac vờ̀n ₫ù̀ vù̀ cac rang buửc va cac yùu cờ̀u khửng chưc năng co liùn quan ₫ù́n ngửn ngư lờp trũnh, sư dung lai linh kiùn, HĐH, cửng nghù phờn tan, ₫ử̀ng thơi, database, giao diùn, quan ly giao tac. tao ra ₫ờ̀u vao cho hoat ₫ửng hiùn thưc băng cach năm băt cac hù thử́ng con, cac interface va cac class. chia cửng viùc hiùn thưc ra nhiù̀u phờ̀n dù̃ quan ly va xư ly bơi cac ₫ửi khac nhau (co thù̉ ₫ử̀ng thơi). năm băt cac interface chủnh giưa cac hù thử́ng con. co thù̉ hiù̉n thị trưc quan va xem xet bang thiù́t kù́ dung cac ky hiùu chung. tao ra mưc trưu tương cua sư hiùn thưc hù thử́ng. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 147 Cacartifactscí̀n tao ra trong thió́t kó́ Mử hũnh thiù́t kù́ =hù thử́ng thiù́t kù́ : cac hù thử́ng con cac class thiù́t kù́. cac interface cua hù thử́ng con va class. cac dờ̃n xuờ́tuse-casecờ́p thiù́t kù́ : —cac lươc ₫ử̀ class —cac lươc ₫ử̀ tương tac (trũnh tư,trang thai, ). — 'flow of events' ơ cờ́p thiù́t kù́. —cac yùu cờ̀u cờ́p hiùn thưc. ₫ăc ta kiù́n truc (view of design model) Mử hũnh bử́ trủ : ₫ăc ta kiù́n truc (view of deployment model) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 148 74
- Cacartifactscí̀n tao ra trong thió́t kó́ * 1 * Design Desgin Design Model System Subsystem * * * * * * Interface Use-Case Realization - Desgin Class Design Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 149 Đăc ₫ió̉m cua class thió́t kó́ Class thiù́t kù́ la sư trưu tương trưc tiù́p cuaclasshiùn thưc: dung ngửn ngư lờp trũnh ₫ù̉ miùu ta class thiù́t kù́. thương xac ₫ịnh tờ̀m vưc cua cac thanh phờ̀n. cac mử́i quan hù co y nghĩa trưc tiù́p tơi hiùn thưc:tử̉ng quat hoa → thưa kù́, quan hù gửp, kù́t hơp thanh thuửc tủnh tương ưng. method trong thiù́t kù́ → method trong hiùn thưc. co thù̉ delay viùc xư ly 1sử́ yùu cờ̀u tơi luc hiùn thưc. class thiù́t kù́ thương co stereotype tương ưng vơi ngửn ngư lờp trũnh : >, >, > class thiù́t kù́ hiùn thưc (hay cung cờ́p) 1 interface. co thù̀ co 1sử́ class active, nhưng nùn tử̀n tai trong mử hũnh process thay vũ trong mử hũnh thiù́t kù́. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 150 75
- Cac wokers trong hoat ₫ộng thió́t kó́ Architect Use-Case Component Engineer Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Desgin Deployment Architecture Use-Case Design Design Interface Model Model Description Realization - class Subsystem Desgin Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 151 Qui trẫnh thió́t kó́ Architect Architectural Design Use-Case Design a Engineer Use-Case Design a Component Design a Engineer Class Subsystem Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 152 76
- Thió́t kó́ kió́n truc:muc ₫ẩch Muc ₫ủch cua thiù́t kù́ kiù́n truc la phat hoa mử hũnh thiù́t kù́ va mử hũnh bử́ trủ cung kiù́n truc cua chung băng cach nhờn dang cac vờ́n ₫ù̀ sau : Cac nut tủnh toan va cac cờ́u hũnh mang cua chung. Cac hù thử́ng con va interface cua chung. Cac class thiù́t kù́ co y nghĩa kiù́n truc như cacclass chu ₫ửng. Cac cơ chù́ thiù́t kù́ tử̉ng quat xư ly cac yùu cờ̀u chung như tủnh bù̀n vưng, hiùu qua, (₫ươc năm băt trong cac class phờn tủch va cac dờ̃n xuờ́tuse-caseơ cờ́p phờn tủch. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 153 Thió́t kó́ kió́n truc:nhín dang nut va cí́u hẫnh mang Cờ́u hũnh mang vờt ly se anh hương ₫ù́n kiù́n truc phờ̀n mù̀m, gử̀m cac khủa canh : cac nut nao liùn quan, kha năng vù̀ bử nhơ va cửng suờ́t tủnh cua nut. kiù̉u nử́i kù́t va kiù̉u giao thưc nao giưa cac nut. cac tủnh chờ́t vù̀ sư nử́i kù́t va giao thưc như băng thửng, ₫ử săn sang, chờ́t lương cờ̀n kha năng tủnh dư thưa, chù́ ₫ử ₫ù̀ khang lử̃i, di cư process, sao lưu dư liùu, Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 154 77
- Thió́t kó́ kió́n truc:nhín dang hó thộ́ng con va interface cua chung Chia cửng viùc thiù́t kù́ tư ₫ờ̀u hay khi mử hũnh thiù́t kù́ phat triù̉n thanh phưc tap cờ̀n ₫ươc chia nho.Mửt sử́ hù thử́ng con ₫ươc dung lai tư cac project khac: nhờn dang cac hù thử́ng con cờ́p ưng dung nhờn dang cac hù thử́ng con cờ́p giưa va cờ́p hù thử́ng ₫ịnh nghĩa sư phu thuửc giưa cac hù thử́ng con. nhờn dang giao tiù́p cua cac hù thử́ng con. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 155 Thió́t kó́ kió́n truc:nhín dang cac class thió́t kó́ quan trong vó̀ kió́n truc Cờ̀n nhờn dang cac class thiù́t kù́ quan trong vù̀ măt kiù́n truc ₫ù̉ lam tiù̀n ₫ù̀ cho hoat ₫ửng thiù́t kù́,cac class khac se ₫ươc nhờn dang trong viùc thiù́t kù́ use-case. nhờn dang cacclassthiù́t kù́ tư cac class phờn tủch tương ưng nhờn dang cacclasschu ₫ửng khi chu y yùu cờ̀u ₫ử̀ng thơi trùn hù thử́ng : —cac yùu cờ̀u vù̀ hiùu qua, ₫ử săn sang, throughput cua hù thử́ng —sư phờn tan cua hù thử́ng trùn cac nut. —cac yùu cờ̀u khac như khơi ₫ửng, kù́t thuc, tranh deadlock, tranh bao hoa, cờ́u hũnh lai cac nut, kha năng nử́i kù́t. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 156 78
- Thió́t kó́ kió́n truc:nhín dang cac cơ chó́ thió́t kó́ tộ̉ng quat Tư cac yùu cờ̀u chung va ₫ăc biùt ₫a ₫ươc nhờn dang trong phờ̀n phờn tủch (trong cac class phờn tủch va cac dờ̃n xuờ́tuse-casecờ́p phờn tủch), quyù́t ₫ịnh cach xư ly chung dưa trùn cửng nghù hiùn thưc va thiù́t kù́ săn co.Kù́t qua la 1tờp cac cơ chù́ thiù́t kù́ tử̉ng quat. Cac yùu cờ̀u cờ̀n xư ly thương liùn quan ₫ù́n: tủnh bù̀n vưng. sư phờn tan&₫ử̀ng thơi. cac tủnh chờ́tantoan dư liùu. ₫ù̀ khang vơi lử̃i. quan ly giao tac. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 157 Thió́t kó́ Use-Case Muc ₫ủch cua thiù́t kù́ use-case la : Nhờn dang cac class thiù́t kù́ va cac hù thử́ng con co object cờ̀n cho viùc thưc hiùn 'flow of events-design' cuause-case. phờn tan hanh vi cuause-casebăng cach cho cac object thiù́t kù́ va hù thử́ng con tương tac nhau. ₫ịnh nghĩa yùu cờ̀u trùn cac tac vu cuaclassthiù́t kù́, hù thử́ng con va interface cua chung. năm băt cac yùu cờ̀u cờ́p hiùn thưc cho use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 158 79
- Thió́t kó́ Use-Case : nhín dang cac class thió́t kó́ Nhờn dang cacclassthiù́t kù́ như sau : nghiùn cưu cac class phờn tủch tham gia trong dờ̃n xuờ́t use- case cờ́p phờn tủch tương ưng, nhờn dang cacclassthiù́t kù́ nử́i vơi cac class phờn tủch nay. nghiùn cưu cac yùu cờ̀u ₫ăc biùt trong dờ̃n xuờ́t use-case cờ́p phờn tủch tương ưng, nhờn dang cacclassthiù́t kù́ hiùn thưc cac yùu cờ̀u ₫ăc biùt nay. gan nghĩa vu cho cac class thiù́t kù́ tũm ₫ươc. nù́u con thiù́u1vai class cờ̀n cho viùc thiù́t kù́ use-case ₫ăc biùt, ky sư use-case nùn liùn hù vơi kiù́n truc sư va ky sư linh kiùn ₫ù̉ ban bac. xờy dưng lươc ₫ử̀ class chưa cac class thiù́t kù́ tũm ₫ươc. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 159 Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cacobjectthió́t kó́ Dung lươc ₫ử̀ trũnh tư : lươc ₫ử̀ trũnh tư chưa cac phờ̀n tư actor, ₫ử́i tương thiù́t kù́ va cact.bao giưa chung. nù́u use-case co nhiù̀u luử̀ng ₫iù̀u khiù̉n khac nhau, nùn tao lươc ₫ử̀ trũnh tư cho tưng luử̀ng. nùn chuyù̉n lươc ₫ử̀ cửng tac ơ cờ́p phờn tủch thanh lươc ₫ử̀ trũnh tư ban ₫ờ̀u, tư ₫o phat triù̉n thùm chi tiù́t. dung 'flow of events', duyùt qua cac bươc trong no ₫ù̉ quyù́t ₫ịnh cac tương tac nao cờ̀n thiù́t giưa cac ₫ử́i tương thiù́t kù́ va phờ̀n tư actor. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 160 80
- Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cacobjectthió́t kó́ Nùn chu y cac ghi nhờn sau trong viùc xờy dưng lươc ₫ử̀ trũnh tư : nùn tờp trung vao trũnh tư trong lươc ₫ử̀. actor gơi thửng bao ₫ù́n1₫ử́i tương thiù́t kù́ ₫ù̉ yùu cờ̀u thưc hiùn use-case. mử̃i class thiù́t kù́ nùn co ủt nhờ́t1₫ử́i tương tham gia vao lươc ₫ử̀ trũnh tư. cac message ₫ươc gơi giưa cac ₫ương ₫ơi sử́ng ₫ử́i tương, co thù̉ co tùn tam va se trơ thanh tùn tac vu tương ưng. dung label va flow of events cờ́p thiù́t kù́ ₫ù̉ bử̉ sung lươc ₫ử̀ trũnh tư. lươc ₫ử̀ trũnh tư nùn xư ly tờ́t ca mử́i quan hù cua use-case cờ̀n hiùn thưc. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 161 Lươc ₫ộ̀ cộng tac Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac : (thủ du lươc ₫ử̀ cửng tac cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn chỉ thửng qua Web. 1: login(uname,pswd) : People 1.2 [succ = true]: welcome : LoginForm 1.1: succ := Verify(uname,pswd) : Database Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 162 81
- Lươc ₫ộ̀ trẫnh tư Cac thanh phờ̀n cua lươc ₫ử̀ trũnh tư : (thủ du lươc ₫ử̀ trũnh tư cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn chỉ thửng qua Web. : LoginForm : Database : People 1: submit(uname, psswd) 1.1: verify(uname, psswd) 1.2: welcome Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 163 Lươc ₫ộ̀ trang thai Cac thanh phờ̀n cua lươc ₫ử̀ trang thai: (thủ du lươc ₫ử̀ trang thai cho use-case Send/Read e-mail). hightlight Composed focus compose command entry/ assign ID exit/ fill date Read on char/ handle character re-fwd cmd / quote / append subject entry/ convert to rich text save command read command / recover( id ) send command[ recipents != null ] / parse unhightlight Sending sending done Stored logout do/ send( repc ) entry/ save into folder Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 164 82
- Lươc ₫ộ̀ hoat ₫ộng Cac thanh phờ̀n cua LoginForm Database lươc ₫ử̀ hoat ₫ửng : Show input for username (thủ du lươc ₫ử̀ hoat and password ₫ửng cho use-case Login cua hù thử́ng Verify ₫ăng ky mửn hoc hù tủn chỉ thửng qua [ psswd invalid ] [ psswd valid ] Web. Reject Welcome Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 165 Thió́t kó́ class Muc ₫ủch cua viùc thiù́t kù́ class la tao ra class thiù́t kù́ hoan thanh vai tro cua no trong dờ̃n xuờ́t use-case va cac yùu cờ̀u phu. Bao gử̀m viùc duy trũ class thiù́t kù́ va cac khủa canh sau cua no : cac tac vu cua class. cac thuửc tủnh cua class. cac mử́i quan hù ma class tham gia. cac method cua class (hiùn thưc tac vu tương ưng). cac trang thai cua ₫ử́i tương. cac phu thuửc tơi bờ́t ky cơ chù́ thiù́t kù́ tử̉ng quat nao. cac yùu cờ̀u co liùn quan ₫ù́n hiùn thưc cua class. sư hiùn thưc ₫ung cua bờ́t ky interface ma class phai cung cờ́p. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 166 83
- Thió́t kó́ class : Phat hoa class thió́t kó́ Bươc ₫ờ̀u ta phat hoa cac class thiù́t kù́ tư cac interface va class phờn tủch : 1 interface co 1 class thiù́t kù́,con class phờn tủch thũ : thiù́t kù́ class biùn phu thuửc vao cửng nghù tao interface : form, activeX control Đù̉ y dung cac prototype giao diùn vơi user trong bươc trươc. thiù́t kù́ class thưc thù̉ thương phu thuửc vao cửng nghù database. Viùc anh xa tư mử hũnh hương ₫ử́i tương sang mử hũnh dư liùu quan hù co thù̉ cờ̀n worker, mử hũnh va cửng viùc riùng. cờ̀n tờp trung thiù́t kù́ class ₫iù̀u khiù̉n, chu y cac nhu cờ̀u sau : —vờ̀n ₫ù̀ phờn tan:cờ̀n nhiù̀u class thiù́t kù́ trùn cac nut khac nhau ₫ù̉ hiùn thưc1 class₫iù̀u khiù̉n. —vờ́n ₫ù̀ hiùu qua : nùn dung 1 class thiù́t kù́ cho 1 class ₫iù̀u khiù̉n —vờ́n ₫ù̀ giao tac: class thiù́t kù́ cờ̀n tủch hơp cửng nghù quan ly giao tac. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 167 Thió́t kó́ class : Nhín dang cac tac vu Nhờn dang cac tac vu ma class thiù́t kù́ cờ̀n cung cờ́p va tờ̀m vưc cua chung (dung cu phap ngửn ngư lờp trũnh). Cac ₫ờ̀u vao cua bươc nay la : cac trach nhiùm cua bờ́t ky class phờn tủch ma dờ̃n tơiclass thiù́t kù́.1 trach nhiùm tương ưng 1 hay nhiù̀u tac vu,nhưng ơ ₫ờy mơi phat hoa thửng sử́ hũnh thưc cac tham sử́. cac yùu cờ̀u ₫ăc biùt cua bờ́t ky class phờn tủch ma dờ̃n tơi class thiù́t kù́. cac interface ma class thiù́t kù́ phai cung cờ́p. dờ̃n xuờ́t use-case cờ́p thiù́t kù́ ma class tham gia. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 168 84
- Thió́t kó́ class : Nhín dang cac thuộc tẩnh Tac vu thương ₫oi hoi thuửc tủnh, cờ̀n dưa vao cac hương dờ̃n sau : chu y thuửc tủnh cua bờ́t ky class phờn tủch ma dờ̃n tơiclass thiù́t kù́.1 thuửc tủnh nay am chỉ 1 hay nhiù̀u thuửc tủnh cua class thiù́t kù́. han chù́ dung kiù̉u cua ngửn ngư lờp trũnh cho thuửc tủnh. cử́ găng dung kiù̉u ₫a co. nù́uclassthiù́t kù́ qua phưc tap, 1 vai thuửc tủnh cua no co thù̉ tach ra thanh cac class riùng. nù́u co qua nhiù̀u thuửc tủnh hay thuửc tủnh qua phưc tap, nùn dung lươc ₫ử̀ class riùng ₫ù̉ miùu ta thuửc tủnh. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 169 Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp&gộp Cờ̀n theo cac hương dờ̃n sau : chu y cac mử́i quan hù kù́t hơp&gửp cua bờ́t ky class phờn tủch ma dờ̃n tơiclassthiù́t kù́. tinh chù́ sử́ phờ̀n tư tham gia, tùn vai tro, tủnh chờ́t cua vai tro, class kù́t hơp, kù́t hơp n-ary. tinh chù́ hương cua mử́i quan hù kù́t hơp tư lươc ₫ử̀ tương tac. Nhờn dang mử́i quan hù tử̉ng quat hoa dung cu phap ngửn ngư lờp trũnh, nù́u ngửn ngư lờp trũnh khửng hử̃ trơ,dung mử́i quan hù kù́t hơp, gửp ₫ù̉ thay thù́. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 170 85
- Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp&gộp Method ₫ăc ta cach tac vu ₫ươc hiùn thưc. Miùu ta cac method dung ngửn ngư tư nhiùn hay ngửn ngư pseudocode. Nù́u cung ky sư linh kiùn thưc hiùn 2 khờu thiù́t kù́ va hiùn thưc, ửng ta thương ủt khi ₫ăc ta method trong giai ₫oan thiù́t kù́. Mửt vai ₫ử́i tương thiù́t kù́ ₫ươc ₫iù̀u khiù̉n bơi trang thai:trang thai xac ₫ịnh hanh vi cua no khi nhờn 1 thửng bao tư ngoai → miùu ta trang thai dung lươc ₫ử̀ trang thai. Xư ly cac yùu cờ̀u ₫ăc biùt chưa ₫ươc chu y ơ cac bươc trươc. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 171 Thió́t kó́ hó thộ́ng con (Subsystem) Muc ₫ủch cua viùc thiù́t kù́ hù thử́ng con la : ₫am bao hù thử́ng con la ₫ửc lờp vơi nhau nhiù̀u như co thù̉ co. ₫am bao hù thử́ng con la ₫ửc lờp vơi interface cua no nhiù̀u như co thù̉ co. ₫am bao hù thử́ng con cung cờ́p ₫ươc interfcae ₫ung. ₫am bao hù thử́ng con hoan thanh muc ₫ủch, tao hiùn thưc ₫ung cho cac tac vu. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 172 86
- Thió́t kó́ hó thộ́ng con (Subsystem) Gử̀m cac cửng viùc sau : duy trũ sư phu thuửc giưa cac hù thử́ng con (nùn thửng qua interface), tử́i thiù̉u hoa sư phu thuửc băng cach bử́ trủ lai cac class qua phu thuửc vao hù thử́ng con khac. duy trũ interface cua cac hù thử́ng con. duy trũ nửi dung cua cac hù thử́ng con. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 173 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 8 HIẽNTHƯC HƯƠNG ĐệI TƯƠNG Cacartifactscờ̀n tao ra Cacworkerstham gia Qui trũnh hiùn thưc Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 174 87
- Muc ₫ẩch cua giai ₫oan hión thưc Muc ₫ủch cua hiùn thưc la : kù́ hoach cac bươc tủch hơp hù thử́ng cờ̀n thiù́t cho mử̃i bươc lăp theo cơ chù́ tăng dờ̀n(hù thử́ng ₫ươc hiùn thưc như chuử̃i cac bươc nho va dù̃ quan ly). phờn tan hù thử́ng băng cach anh xa cac thanh phờ̀n kha thi trùn cac nut trong mử hũnh bử́ trủ (dưa chu yù́u vao cacclass chu ₫ửng). hiùn thưc cac class va hù thử́ng con thiù́t kù́. kiù̉m tra ₫ơn vị trùn cac thanh phờ̀n, tủch hơp chung vao1 hay nhiù̀ufilekha thi trươc khi gơi ₫i kiù̉m tra tủch hơp va kiù̉m tra hù thử́ng. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 175 Cacartifactscí̀n tao ra trong hión thưc Mử hũnh hiùn thưc=hù thử́ng hiùn thưc: cac hù thử́ng con hiùn thưc cac component (executable, file, library, table, document, ) cac interface cua hù thử́ng con va component. kù́ hoach tủch hơp cac "build" ₫ăc ta kiù́n truc (view of Implementation model) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 176 88
- Stub, hó thộ́ng con Stub la 1thanh phờ̀n ma phờ̀n hiùn thưc chỉ ơ mưc ₫ử "template" ₫ù̉ phat triù̉n hoăc kiù̉m tra thanh phờ̀n khac phu thuửc va stub. Stub co thù̉ tử́i thiù̉u sử́ thanh phờ̀n mơi cờ̀n hiùn thưc cho mử̃i version cua hù thử́ng. co phờ̀n hiùn thưc, nhơ ₫o lam ₫ơn gian viùc tủch hơp va kiù̉m tra tủch hơp. Hù thử́ng con do cơ chù́ packaging trong mửi trương hiùn thưc tao ra : package trong java. project trong VB. thư muc cac file trong C++, Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 177 Build Phờ̀n mù̀m ₫ươc hiùn thưc theo tưng bươc nho dù̃ quan ly,mử̃i bươc ta xờy dưng 1 build. Build la 1 version kha thi cua hù thử́ng. Lơi ủch cua cach tiù́p cờn nay la : version kha thi co thù̉ tao ra kha sơm thay vũ phai chơ ₫ơi lờu, viùc kiù̉m tra tủch hơp nhơ ₫o ₫ươc băt ₫ờ̀u sơm ₫ù̉ co thù̉ demo cho cac thanh viùn nửi bử hay cac ngươi liùn quan. dù̃ dang phat hiùn ₫iù̉m yù́u va lử̃i vũ mử̃i lờ̀n chỉ co 1 phờ̀n mơi rờ́t nho ₫ươc thùm vao. kiù̉m tra tủch hơp thương nhanh hơn la kiù̉m tra toan bử hù thử́ng. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 178 89
- Kó́ hoach xíy dưng build tẩch hơp Kù́ hoach xờy dưng build tủch hơp miùu ta trũnh tư cac build cờ̀n thiù́t cho mử̃i bươc lăp, ưng vơi mử̃i build no miùu ta : chưc năng ky vong ₫ươc hiùn thưc trong build, ₫ờy la danh sach cac use-case va/hoăc cac kịch ban cua chung. Danh sach nay cung chỉ ra cac yùu cờ̀u phu kem theo. Cac phờ̀n nao cua mử hũnh hiùn thưc bị tac ₫ửng trong build, ₫ờy la danh sach cac hù thử́ng con va cac thanh phờ̀n ₫ươc ₫oi hoi ₫ù̉ hiùn thưc chưc năng ky vong cua build. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 179 Cacartifactscí̀n tao ra trong thió́t kó́ * 1 * Implementation Implementation Implementation Model System Subsystem * * * * Interface Component Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 180 90
- Cac workers trong hoat ₫ộng hión thưc Architect System Component Integrator Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Imple. Deployment Architecture Integration Component Imple. Interface Model Model Description Build Plan Subsystem Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 181 Qui trẫnh hión thưc Architect Architectural Implementation System Integrate Integrator System Implement Component a Class Perform Engineer Implement Unit Test a Subsystem Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 182 91
- Hión thưc kió́n truc Muc ₫ủch cua hiùn thưc kiù́n truc la phat hoa mử hũnh hiùn thưc va kiù́n truc cua no băng cach : nhờn dang cac thanh phờ̀n co y nghĩa kiù́n truc như cac thanh phờ̀n kha thi (exe). anh xa cac thanh phờ̀n tơi cac nut trong cờ́u hũnh mang liùn quan : 1 class chu ₫ửng ₫ươc hiùn thưc trong 1 thanh phờ̀n kha thi va trơ thanh 1 process chay ơ 1nut cu thù̉. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 183 Tẩch hơp hó thộ́ng Muc ₫ủch cua tủch hơp hù thử́ng la : tao1kù́ hoach tủch hơp cac build miùu ta build nao trong tưng bươc lăp va cac yùu cờ̀u trong mử̃i build. tủch hơp mử̃i build trươc khi kiù̉m tra tủch hơp. Mửt vai tiùu chuờ̉n cho 1 build kù́ tiù́p la : build nùn thùm 1 sử́ chưc năng vaobuildtrươc băng cach hiùn thưc hoan chỉnh use-case. build khửng nùn bao gử̀m qua nhiù̀u thanh phờ̀n mơi hay ₫ươc tinh chù́. build nùn dưa trùn build trươc theo cơ chù́ nơi rửng tư dươi lùn. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 184 92