Phân tích và thiết kế hướng đối tượng

Tài liệu Phân tích và thiết kế hướng đối tượng: 1Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 1 Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh Khoa Cửng Nghù Thửng Tin Mửn hoc PHấN TẹCH & THIẽT Kẽ HƯƠNG ĐệI TƯƠNG Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 2 Tai liùu tham khao chủnh [1] The Unified Software Development Process, Ivar Jacabson, Grady Booch, James Rumbaugh, Addison-Wesley, 1999. [2] Software Engineering - A practitioner's approach, R.S. Pressman, McGraw-Hill, 1997 [3] Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1998. [4] OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999 [5] UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998 [6] Object-Oriented Software Engineering, A Use-Case Driven Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992 [7] Object-Oriented Analysis and Design with Applicat...

pdf175 trang | Chia sẻ: Khủng Long | Lượt xem: 768 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Phân tích và 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
1Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 1 Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh Khoa Cửng Nghù Thửng Tin Mửn hoc PHấN TẹCH & THIẽT Kẽ HƯƠNG ĐệI TƯƠNG Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 2 Tai liùu tham khao chủnh [1] The Unified Software Development Process, Ivar Jacabson, Grady Booch, James Rumbaugh, Addison-Wesley, 1999. [2] Software Engineering - A practitioner's approach, R.S. Pressman, McGraw-Hill, 1997 [3] Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1998. [4] OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999 [5] UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998 [6] Object-Oriented Software Engineering, A Use-Case Driven Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992 [7] Object-Oriented Analysis and Design with Applications, G. Booch, The Benjamin Cummings Publishing Company, 1994 2Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 3 Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh Khoa Cửng Nghù Thửng Tin Chương 1 CAC KHAI NIẽM CƠ BAN CUA Mệ HềNH HƯƠNG ĐệI TƯƠNG Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 4 Nửi dung 1.1 Tư lờp trũnh co cờ́u truc ₫ù́n OOP 1.2 Đử́i tương, thuửc tủnh, tac vu. 1.3 Abstract type va class. 1.4 Tủnh bao ₫ong. 1.5 Tủnh thưa kù́ va 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 quat hoa. 1.9 Tủnh vưng bù̀n. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 3Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 5 1. May tủnh sử́ la thiù́t bị co thù̉ thưc hiùn 1 sử́ hưu han cac chưc năng cơ ban (tờp lùnh), cơ chù́ thưc hiùn cac lùnh la tư ₫ửng tư lùnh ₫ờ̀u cho ₫ù́n lùnh cuử́i cung. Danh sach cac lùnh ₫ươc thưc hiùn nay ₫ươc goi la chương trũnh. 2. bờ́t ky cửng viùc ngoai ₫ơi nao cung co thù̉ ₫ươc chia thanh trũnh tư nhiù̀u cửng viùc nho hơn. Trũnh tư cac cửng viùc nho nay ₫ươc goi la giai thuờt giai quyù́t cửng viùc ngoai ₫ơi. Mử̃i cửng viùc nho hơn cung co thù̉ ₫ươc chia nho nưa,... ⇒ cửng viùc ngoai ₫ơi la 1 trũnh tư cac lùnh may (chương trũnh). 3. vờ́n ₫ù̀ mờ́u chử́t cua viùc dung may tủnh giai quyù́t vờ́n ₫ù̀ ngoai ₫ơi la lờp trũnh. Cho ₫ù́n nay, lờp trũnh la cửng viùc cua con ngươi (vơi sư trơ giup ngay cang nhiù̀u cua may tủnh). 4. cac lùnh cua chương trũnh (code) phai tham khao hoăc xư ly (truy xuờ́t) thửng tin (dư liùu). Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 6 Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 5. Dư liùu cua 1 chương trũnh co thù̉ rờ́t nhiù̀u va ₫a dang. Đù̉ truy xuờ́t ₫ung 1 dư liùu ta cờ̀n : - tùn nhờn dang. - kiù̉u dư liùu miùu ta cờ́u truc dư liùu. - tờ̀m vưc truy xuờ́t miùu ta giơi han khach hang truy xuờ́t dư liùu. 6. Chương trũnh cử̉ ₫iù̉n = giai thuờt + dư liùu. 7. Chương trũnh con (function, subroutine,...) cho phep cờ́u truc chương trũnh, sư dung lai code... 8. Chương trũnh cử̉ ₫iù̉n co cờ́u truc phờn cờ́p như sau : 4Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 7 Chương trũnh = cờ́u truc dư liùu + giai thuờt entry 'start' global datamodule (package) local data of module local data of function Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Tư lờp trũnh co cờ́u truc ₫ù́n OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 8 Chương trũnh = tờp cac ₫ử́i tương tương tac nhau entry ₫ử́i tương (object) local data of object local data of operation Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Tư lờp trũnh co cờ́u truc ₫ù́n OOP 5Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 9 Tử̉ng quat 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ù́) khac hăn so vơi trương phai cử̉ ₫iù̉n (co cờ́u truc). ƒ Băt ₫ờ̀u nhen nhom vao nhưng năm cuử́i 60s va ₫ù́n ₫ờ̀u 90s thũ trơ nùn rờ́t phử̉ biù́n 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 thanh cac phương phap phờn tủch/thiù́t kù́ hương ₫ử́i tương. ƒ Va hiùn nay ta co 1 qui trũnh phat triù̉n phờ̀n mù̀m hơp nhờ́t dưa trùn ngửn ngư UML. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 10 Đử́i tương (Object) ~ Mử hũnh ₫ử́i tương quan niùm chương trũnh bao gử̀m cac ₫ử́i tương sinh sử́ng va tương tac vơi nhau. ~ Đử́i tương bao gử̀m : ƒ thuửc tủnh (dư liùu) : mang 1 gia trị nhờ́t ₫ịnh tai tưng thơi ₫iù̉m. ƒ tac vu (operation) : thưc hiùn 1 cửng viùc nao ₫o. Interface (abstract type) Implementation (class) Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 6Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 11 Kiù̉u trưu tương (Abstract type) ~ Abstract type (type) ₫ịnh nghĩa interface sư dung ₫ử́i tương. ~ Interface la tờp cac entry ma bùn ngoai co thù̉ giao tiù́p vơi ₫ử́i tương. ~ Dung signature ₫ù̉ ₫ịnh nghĩa mử̃i entry, Signature gử̀m : ƒ tùn method (operation) ƒ danh sach ₫ử́i sử́ hũnh thưc, mử̃i ₫ử́i sử́ ₫ươc ₫ăc ta bơi 3 thuửc tủnh : tùn, type va chiù̀u chuyù̉n ₫ửng (IN, OUT, INOUT). ƒ ₫ăc ta chưc năng cua method (thương la chu thủch). ~ Dung abstract type (chư khửng phai class) ₫ù̉ ₫ăc ta kiù̉u cho biù́n, thuửc tủnh, tham sử́ hũnh thưc. ~ User khửng cờ̀n quan tờm ₫ù́n class (hiùn thưc cu thù̉) cua ₫ử́i tương. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 12 Class (Implementation) ~ Class ₫ịnh nghĩa chi tiù́t hiùn thưc ₫ử́i tương : ƒ ₫ịnh nghĩa cac thuửc tủnh dư liùu : gia trị cua tờ́t ca thuửc tủnh xac ₫ịnh trang thai cua ₫ử́i tương. ƒ kiù̉u cua thuửc tủnh co thù̉ la type cử̉ ₫iù̉n hay abstract type, trong trương hơp sau thuửc tủnh chưa tham khao ₫ù́n ₫ử́i tương khac. ƒ coding cac method va cac internal function. ~ Định nghĩa cac method tao va xoa ₫ử́i tương. ~ Định nghĩa cac method constructor va destructor. ~ User khửng cờ̀n quan tờn ₫ù́n class cua ₫ử́i tương. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 7Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 13 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: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 14 Tủnh bao ₫ong (encapsulation) z Bao ₫ong : che dờ́u moi chi tiù́t hiùn thưc cua ₫ử́i tương, khửng cho bùn ngoai thờ́y va truy xuờ́t ⇒ tủnh ₫ửc lờp cao giưa cac ₫ử́i tương (hay tủnh kù́t dủnh - cohesion giưa cac ₫ử́i tương rờ́t thờ́p). ƒ che dờ́u cac thuửc tủnh dư liùu : nù́u cờ̀n cho phep truy xuờ́t 1 thuửc tủnh dư liùu, ta tao 2 method get/set tương ưng ₫ù̉ giam sat viùc truy xuờ́t va che dờ́u chi tiù́t hiùn thưc bùn trong. ƒ che dờ́u chi tiù́t hiùn thưc cac method. ƒ che dờ́u cac internal function va sư hiùn thưc cua chung. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 8Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 15 Tủnh thưa kù́ (inheritance) ~ Tủnh thưa kù́ cho phep giam nhe cửng sưc ₫ịnh nghĩa type/class : ta co thù̉ ₫ịnh nghĩa cac type/class khửng phai tư ₫ờ̀u ma băng cach kù́ thưa type/class co săn, ta chỉ ₫ịnh nghĩa thùm cac chi tiù́t mơi ma thửi (thương kha ủt). ƒ Đa thưa kù́ hay ₫ơn thưa kù́. ƒ Mử́i quan hù supertype/subtype va superclass/subclass. ƒ co thù̉ override cac method cua class cha, kù́t qua override chỉ co nghĩa trong ₫ử́i tương class con. ƒ Đử́i tương cua class con co thù̉ ₫ong vai tro cua ₫ử́i tương cha nhưng ngươc lai thương khửng ₫ung. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 16 Vủ du vù̀ thưa kù́ va override - Java class Geometry { public Draw(Graphics g); protected int xPos, yPos; protected double xScale, yScale; protected COLORREF color; }; class Line extends Geometry { int xPos2, yPos2; // other attributes... public Draw(Graphics g) { // cac lứnh ve ₫oan thăng } } Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 9Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 17 Tủnh bao gửp (aggregation) ƒ 1 ₫ử́i tương co thù̉ chưa nhiù̀u ₫ử́i tương khac tao nùn mử́i quan hù bao gửp 1 cach ₫ù qui giưa cac ₫ử́i tương. ƒ Co 2 goc nhũn vù̀ tủnh bao gửp : ngư nghĩa va hiùn thưc. O1 O2 O3 Goc nhũn ngư nghĩa Goc nhũn hiùn thưc O1 O2 O3 Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 18 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: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 10 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 19 Thửng ₫iùp (Message) ~ Thửng ₫iùp la 1 phep goi tac vu ₫ù́n 1 ₫ử́i tương tư 1 tham khao. ~ Thửng ₫iùp bao gử̀m 3 phờ̀n : ƒ tham khao ₫ù́n ₫ử́i tương ₫ủch. ƒ tùn tac vu muử́n goi. ƒ danh sach tham sử́ thưc cờ̀n truyù̀n theo (hay nhờn vù̀ tư) tac vu. ƒ vủ du : aCircle.SetRadius (3); aCircle.Draw (pWnd); ~ Thửng ₫iùp la phương tiùn giao tiù́p (hay tương tac) duy nhờ́t giưa cac ₫ử́i tương. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 20 Tủnh ₫a xa (Polymorphism) ~ Cung 1 lùnh gơi thửng ₫iùp ₫ù́n ₫ử́i tương thửng qua cung 1 tham khao nhưng ơ vị trủ/thơi ₫iù̉m khac nhau co thù̉ gờy ra viùc thưc thi method khac nhau cua cac ₫ử́i tương khac nhau. T1 p1; // C1 va C2 la 2 class hiùn thưc T1 ... p1 = New C1; // tao ₫ử́i tương C1, gan tham khao vao p1 p1.meth1(...); ... p1 = New C2; // tao ₫ử́i tương C2, gan tham khao vao p1 p1.meth1(...); Lùnh p1.meth1(...); ơ 2 vị trủ khac nhau kủch hoat 2 method khac nhau cua 2 class khac nhau. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 11 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 21 Kiù̉m tra kiù̉u (type check) ~ Chăt va dung mử́i quan hù 'conformity' (tương thủch tử̉ng quat). Type A tương thủch vơi type B ⇔ A chưa moi method cua B va ưng vơi tưng method cua B : ƒ tử̀n tai 1 method cung tùn trong A. ƒ danh sach ₫ử́i sử́ cua 2 method tương ưng phai băng nhau. ƒ kiù̉u ₫ử́i sử́ OUT hay gia trị return cua method trong A phai tương thủch vơi kiù̉u cua ₫ử́i sử́ tương ưng trong B. ƒ kiù̉u ₫ử́i sử́ IN cua method trong B phai tương thủch vơi kiù̉u cua ₫ử́i sử́ tương ưng trong A. ƒ kiù̉u ₫ử́i sử́ INOUT cua method trong A phai trung vơi kiù̉u cua ₫ử́i sử́ tương ưng trong B. ệ quan hù so trung hay quan hù con/cha (sub/super) la trương hơp ₫ăc biùt cua quan hù tương thủch tử̉ng quat. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 22 Tủnh tử̉ng quat hoa (Generalization) ~ Co 2 ngư nghĩa khac nhau cua tủnh tử̉ng quat hoa : ƒ class tử̉ng quat hoa cho phep san sinh tư ₫ửng cac class bũnh thương, cac class bũnh thương tư no chỉ co thù̉ tao ra ₫ử́i tương. Thương dung ngư nghĩa nay trong giai ₫oan lờp trũnh. ƒ ngươc vơi tủnh thưa kù́ : supertype/superclass la type/class tử̉ng quat hoa cua cac con cua no. Thương dung ngư nghĩa nay trong giai ₫oan phờn tủch/thiù́t kù́ phờ̀n mù̀m. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 12 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 23 Tủnh thương tru (persistence) ~ ₫ơi sử́ng cua 1 ₫ử́i tương ₫ửc lờp vơi ₫ơi sử́ng cua phờ̀n tư tao ra no. ƒ ₫ử́i tương phai tử̀n tai khi con ủt nhờ́t 1 tham khao ₫ù́n no trong hù thử́ng. ƒ ₫ử́i tương phai bị xoa khi khửng con tham khao nao ₫ù́n no, vũ tai thơi ₫iù̉m nay ₫ử́i tương la rac. Viùc xac ₫ịnh chủnh xac 1 ₫ử́i tương co phai la rac hay khửng la 1 viùc phưc tap code ưng dung khửng ₫ươc phep lam, ₫ờy la cửng viùc cua hù thử́ng thửng qua module 'garbage collection'. ƒ vưng bù̀n khửng phai la vĩnh hăng, mưc ₫ử co thù̉ la 1 session cua may ao (JVM) hay lùu dai (thửng qua ₫ĩa cưng, CDROM). Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 24 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 cac ₫ử́i tương sử́ng chung va tương tac vơi nhau. ~ Cac ₫ăc ₫iù̉m chủnh cua hương ₫ử́i tương : ƒ Bao ₫ong : mử̃i ₫ử́i tương bao gử̀m dư liùu va tac vu. Cac tac vu thiù́t lờp nùn hanh vi cua ₫ử́i tương. Cac ₫ử́i tương ₫ươc phờn loai băng class. ƒ Cac ₫ử́i tương tương tac vơi nhau băng cach gơi thửng ₫iùp. ƒ giưa cac class/₫ử́i tương co thù̉ tử̀n tai quan hù bao gửp, thưa kù́, tử̉ng quat hoa. ƒ Tủnh ₫a hũnh : kù́t qua cua sư kiù̉m tra kiù̉u dưa vao mử́i quan hù 'conformity'. ƒ Tủnh vưng bù̀n : ₫ử́i tương tử̀n tai khi con ủt nhờ́t 1 tham khao ₫ù́n no. Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương 13 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 25 Chương 2 THẹ DU Vẽ NGệN NGƯ OOP ) Visual C++ ) Java Chương 2: Thủ du vù̀ cac ngửn ngư OOP Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh Khoa Cửng Nghù Thửng Tin Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 26 2.1 Ngửn ngư Visual C++ 1. Chỉ hử̃ trơ khai niùm class. 2. Cho phep Đa thưa kù́. 3. Dung 'abstract class' ₫ù̉ ₫ịnh nghĩa interface. 4. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n. 5. Đa hũnh co chon loc nhơ 'virtual function' 6. Chỉ hử̃ trơ cac ₫ử́i tương tam. 7. Override method khi thưa kù́. 8. Co thù̉ ₫ịnh nghĩa function overloaded. Chương 2: Thủ du vù̀ cac ngửn ngư OOP 14 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 27 Chỉ hử̃ trơ khai niùm class 1. Dung class ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh ⇒ ₫ử́i tương co thù̉ chưa vờt ly ₫ử́i tương khac hay chưa tham khao ₫ù́n ₫ử́i tương khac. 2. Đa thưa kù́ trong ₫ịnh nghĩa class ⇒ 1 class co thù̉ chưa nhiù̀u class con trung nhau ⇒ dung "virtual base class" ₫ù̉ tử́i ưu hoa bử nhơ ₫ử́i tương. Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 28 Class trưu tương (Abstract class) 3. Hử̃ trơ khai niùm "abstract class" ₫ù̉ ₫ịnh nghĩa class chỉ chưa thửng tin interface nhưng khửng cho phep dung class nay ₫ù̉ ₫ị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; }; Chương 2: Thủ du vù̀ cac ngửn ngư OOP 15 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 29 Tờ̀m vưc truy xuờ́t thanh 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 hoan toan. protected : chỉ che dờ́u bùn ngoai nhưng cho phep cac ₫ử́i tương con, chau, chăt... truy xuờ́t. public : cho phep tờ́t ca moi nơi truy xuờ́t. Friend class : la class ma mử̃i function cua no ₫ù̀u co thù̉ truy xuờ́t tư do mử̃i thanh phờ̀n cua class hiùn tai. Friend function : la function co thù̉ truy xuờ́t tư do mử̃i thanh phờ̀n cua class hiùn tai. Co thù̉ han chù́ tờ̀m vưc cua thanh viùn cua class cha khi thưa kù́. Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 30 Hử̃ trơ tủnh ₫a hũnh co chon loc 5. Định nghĩa 'virtual function' nù́u muử́n ap dung tủnh ₫a hũnh trong viùc gơi thửng bao yùu cờ̀u function nay thưc thi. Tờ́t ca cac 'virtual function' ₫ươc quan ly trong 1 danh sach "virtual function table". ₫ịa chỉ function 1 ₫ịa chỉ function 2 ₫ịa chỉ function 3 ₫ịa chỉ function i ₫ịa chỉ function n Chương 2: Thủ du vù̀ cac ngửn ngư OOP 16 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 31 Cac ₫ử́i tương ₫ù̀u tam thơi 6. Cac ₫ử́i tương chỉ tử̀n tai tam thơi trong khửng gian process. Tham khao ₫ù́n ₫ử́i tương thưc chờ́t la pointer cuc bử. chương trũnh phai tư viù́t code cho hoat ₫ửng save/restore ₫ử́i tương nù́u muử́n lưu giư/dung lai ₫ử́i tương. VC++ hử̃ trơ hoat ₫ửng save/restore ₫ử́i tương nhơ kha năng 'Serialization'. 7. Co quyù̀n 'override' bờ́t ky toan tư hay function nao cua class cha. 8. Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung tùn nhưng 'signature' khac nhau. Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 32 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 {....}; .... Chương 2: Thủ du vù̀ cac ngửn ngư OOP 17 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 33 Cờ́u truc 1 chương trũnh Dialog based ₫ơn gian InitInstance() DoModal() CProgramApp CProgramDlg Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 34 Cờ́u truc 1 chương trũnh SDI ₫ơn gian InitInstance() CProgramApp CSingleDocTemplate CMainFrame CProgramView CProgramDoc Chương 2: Thủ du vù̀ cac ngửn ngư OOP 18 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 35 Cờ́u truc 1 chương trũnh MDI ₫ơn gian InitInstance() CProgramApp CMultiDocTemplate CChildFrame CProgramView CProgramDoc Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 36 2.2 Ngửn ngư Java 1. Hử̃ trơ 'interface' (1 dang cua type) va class. 2. Hử̃ trơ Đơn thưa kù́. 3. Dung 'abstract class' ₫ù̉ ₫ịnh nghĩa interface. 4. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n. 5. Hử̃ trơ package 6. Đa hũnh ₫ờ̀y ₫u. 7. Chỉ hử̃ trơ ₫ử́i tương tam trong session JVM 8. Override function khi thưa kù́. 9. Co thù̉ ₫ịnh nghĩa function overloaded. Chương 2: Thủ du vù̀ cac ngửn ngư OOP 19 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 37 1. Chu yù́u dung class ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh. Co thù̉ dung interface ₫ù̉ ₫ịnh nghĩa kiù̉u cho cac biù́n, thuửc tủnh. Đử́i tương chỉ co thù̉ chưa tham khao ₫ù́n ₫ử́i tương khac. 2. Phai goi ham tao ₫ử́i tương 1 cach tương minh, nhưng khửng ₫ươc xoa ₫ử́i tương. class C1 extends RootClass {...} C1 o1; // o1 chưa tham khao ₫ù́n ₫ử́i tương C1 o1 = New C1; 3. Interface chỉ ₫ươc dung 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 cac class kha ₫ơn gian. Hử̃ trơ Class va Interface Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 38 Hử̃ trơ abstract class 5. Hử̃ trơ khai niùm "abstract class" ₫ù̉ ₫ịnh nghĩa class chưa thửng tin interface va khửng cho phep 'instanciate' ₫ử́i tương. Ban chỉ co thù̉ dung class 'abstract class' ₫ù̉ ₫ăc ta kiù̉u cho cac biù́n hoăc ₫ịnh nghĩa cac 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 cac hiùn thưc bùn trong, nhưng thương chỉ co chưa cac 'abstract function'. Chương 2: Thủ du vù̀ cac ngửn ngư OOP 20 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 39 Tờ̀m vưc truy xuờ́t cac thanh phờ̀n 6. Tờ̀m vưc truy xuờ́t cac thanh phờ̀n trong ₫ử́i tương : private : thanh phờ̀n bị che dờ́u hoan toan. protected : che dờ́u bùn ngoai nhưng cho phep cac ₫ử́i tương con, chau, chăt... truy xuờ́t. public : cho phep tờ́t ca moi nơi truy xuờ́t. friendly : cho phep moi phờ̀n tư trong package truy xuờ́t. Đờy la tờ̀m vưc default va khửng co tư khoa tờ̀m vưc tương minh. Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 40 7. Package la ₫ơn vị quan ly tờ̀m vưc cua java, co thù̉ chưa nhiù̀u class. package graphics; public class Circle extends Graphic implements Draggable { . . . } Tờ́t ca moi phờ̀n tư ₫ươc ₫ịnh nghĩa trong 1 file source ₫ù̀u thuửc 1 package : tùn ₫ươc qui ₫ịnh bơi phat biù̉u package hay la package default. Nhiù̀u file source co thù̉ thuửc cung 1package (dung cung tùn trong phat biù̉u package). Hử̃ trơ package Chương 2: Thủ du vù̀ cac ngửn ngư OOP 21 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 41 Hử̃ trơ ₫ờ̀y ₫u tủnh ₫a hũnh 8. Tờ́t ca cac public function ₫ươc quan ly trong 1 danh sach "public function table". ₫ịa chỉ function 1 ₫ịa chỉ function 2 ₫ịa chỉ function 3 ₫ịa chỉ function i ₫ịa chỉ function n Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 42 Cac ₫ử́i tương ₫ù̀u 'tam thơi' 9. Cac ₫ử́i tương chỉ tử̀n tai tam thơi trong 1session chay JVM. Ban co thù̉ tao ra cac ₫ử́i tương mơi ma khửng cờ̀n xoa no. Đử́i tương se tử̀n tai mửt khi con tham khao ₫ù́n no. Module Garbage Collection trong JVM se chịu trach nhiùm phat hiùn ₫ử́i tương 'rac' va xoa no ra khoi bử nhơ JVM. 10.Co quyù̀n 'override' bờ́t ky function nao cua class cha. 11.Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung tùn nhưng 'signature' khac nhau. Chương 2: Thủ du vù̀ cac ngửn ngư OOP 22 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 43 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) {...} } } Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 44 Thủ du vù̀ chương trũnh Java Chương 2: Thủ du vù̀ cac ngửn ngư OOP 12.34.25 AlarmClock GUIClock wakeup() > 23 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 45 Thủ du vù̀ cac 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; } Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 46 Thủ du vù̀ cac 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; } } Chương 2: Thủ du vù̀ cac ngửn ngư OOP 24 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 47 Thủ du vù̀ cac 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; } Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 48 Thủ du vù̀ cac 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); } } } Chương 2: Thủ du vù̀ cac ngửn ngư OOP 25 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 49 Thủ du vù̀ cac 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(); } Chương 2: Thủ du vù̀ cac ngửn ngư OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 50 Thủ du vù̀ cac 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); } } Chương 2: Thủ du vù̀ cac ngửn ngư OOP 26 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 51 Trương Đai Hoc Bach 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 Chương 3: Nguyùn tăc dịch OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 52 • Chương trũnh la 1 tờp cac ₫ử́i tương sử́ng va tương tac lờ̃n nhau. • Cac ₫ử́i tương thuửc 1 sử́ loai nhờ́t ₫ịnh (n) • Mử̃i loai ₫ử́i tương ₫ươc miùu ta bơi 1 type + 1 class • Chương trũnh la tờp n ₫ịnh nghĩa type + class • Dịch chương trũnh OOP la vong lăp dịch n type + n class. • Ta se miùu ta qui trũnh dịch 1 type va 1 class Tử̉ng quat vù̀ vờ́n ₫ù̀ dịch OOP Chương 3: Nguyùn tăc dịch OOP 27 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 53 • 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 lai cờy ngư nghĩa cua type tương ưng ₫ù̉ phuc vu viùc kiù̉m tra kiù̉u, chư khửng tao code ma may. • Chỉ cờ̀n 3 bươc : duyùt tư vưng, phờn tủch cu phap, phờn tủch ngư canh. • Nùn dung cửng cu hử̃ trơ như LEX, YACC. Dịch 1 abstract type Chương 3: Nguyùn tăc dịch OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 54 Chương 3: Nguyùn tăc dịch OOP • Dịch class la cửng viùc chủnh cua 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 cac method (hay cac internal function). • Cờ̀n ₫ờ̀y ₫u cac bươc : duyùt tư vưng, phờn tủch cu phap, phờn tủch ngư canh, tao ma. • Nùn dung cửng cu hử̃ trơ như LEX, YACC. Dịch 1 class 28 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 55 Chương 3: Nguyùn tăc dịch OOP • class → cờ́u truc record class C1 : C0 { double d; int i ; ... public : int proc4(int i); void proc5 (double d); ... }; Dịch thuửc tủnh dư liùu typedef struct { // import cac field tư cờ́u truc // ₫ươc sinh ra tư C0 // cac field tương ưng vơi C1 int C1_d; int C1_i; ... // cac field dư liùu ₫iù̀u khiù̉n // tư tao bơi chương trũnh dịch void (*pvfaddr)() ; } C1; Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 56 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 cac field dư liùu cua cờ́u truc sinh ra tư class cha. • chuyù̉n tưng thuửc tủnh cua class thanh tưng field cua record, 'tuyùt ₫ử́i hoa' tùn cua thuửc tủnh ₫ù̉ tranh nhăp nhăng. • thùm cac field dư liùu ₫iù̀u khiù̉n phuc vu cho run-time : thủ du bang ₫ịa chỉ cac method cua ₫ử́i tương (pvftbl). Chương 3: Nguyùn tăc dịch OOP 29 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 57 Dịch thuửc tủnh dư liùu (tt) • cờ́u truc record ₫ươc dịch ra ma may thanh 1 vung nhơ liùn tuc co ₫ử dai băng ₫ử dai cua record. - field C1 o1; C1_o1 db dup (sizeof(C1)) • truy xuờ́t 1 thuửc tủnh dư liùu trơ thanh viùc truy xuờ́t ử nhơ dung cach ₫ịnh ₫ịa chỉ chỉ sử́ : - o1.i = 5; mov bx, C1_o1 mov [bx+4], 5 Chương 3: Nguyùn tăc dịch OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 58 class C1 : C0 { int i ; double d; ... public : int proc4(int i, double k); void proc5 (double d); ... }; Tao bang ₫ịa chỉ cac method 0 "proc1" C0_proc1 1 "proc2" C1_proc2 2 "proc3" C0_proc3 3 "proc4" C1_proc4 4 "proc5" C1_proc5 5 .... ... fname faddr pvftbl Chương 3: Nguyùn tăc dịch OOP 30 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 59 Tao bang ₫ịa chỉ cac method (tt) • tao bang ₫ịa chỉ gử̀m C1METHCNT phờ̀n tư (C1METHCNT la sử́ method cua class hiùn hanh, kù̉ ca cac method thưa kù́. • mử̃i phờ̀n tư ₫ươc nhờn dang qua chỉ sử́ va gử̀m 2 thửng tin chủnh : tùn gơi nhơ cua method va ₫ịa chỉ cua method. • copy bang ₫ịa chỉ cua class cha ₫a co. • hiùu chỉnh lai cac ₫ịa chỉ cua cac method bị override. • thùm vao cac method mơi ₫ịnh nghĩa trong class hiùn hanh. Chương 3: Nguyùn tăc dịch OOP Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 60 Chương 3: Nguyùn tăc dịch OOP int C1::proc1(int i,double k) { C2 o2; C2 *p2; C1::i = i; d = k; proc5(d); o2.proc2(i,d); p2 = New(C2); p2->proc2(i,d); .... }; Dịch 1 method int C1_proc1(C1* p, int i, double d) { C2 o2; C2 *p2; // truy xuờ́t thuửc tủnh p->C1_i = i; p->C1_d = d; // goi ham C1_proc5(p,d); C2_proc2(&o2, i,d); // gơi thửng bao : kiù̉m tra, load, // anh xa bang ₫ịa chỉ method for (i = 0; i <C1METHCNT; i ++) if (strcmp ("proc2", p2-> pvftbl[i].fname)==0) break; (*pvftbl[i].faddr)(p2,i,d); }; 1 2 3 31 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 61 Chương 3: Nguyùn tăc dịch OOP Dịch 1 method (tt) • tùn method ₫ươc chuyù̉n tư dang 'tương ₫ử́i' sang 'tuyùt ₫ử́i' (nử́i kù́t tùn class vao). • thùm tham sử́ ₫ờ̀u tiùn cho ham sinh ra : miùu ta tham khao ₫ù́n ₫ử́i tương ma ham se truy xuờ́t cac thuửc tủnh dư liùu. • tùn thuửc tủnh ₫ươc chuyù̉n tư dang 'tương ₫ử́i' sang 'tuyùt ₫ử́i' (nử́i kù́t tùn class vao). • goi ham internal → goi ham nhưng thùm tham sử́ ₫ờ̀u tiùn. • gơi thửng bao 3 bươc : — kiù̉m tra, tũm, load va anh xa bang ₫ịa chỉ cac method cua ₫ử́i tương. — tũm chỉ sử́ cua method cờ̀n goi trong bang (i). — goi gian tiù́p method thửng qua ₫ịa chỉ phờ̀n tư thư i trong bang. Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 62 Chương 3: Nguyùn tăc dịch OOP Tử́i ưu hoa code tao ra • co 2 vờ́n ₫ù̀ lơn trong qua trũnh dịch 1 class sang ngửn ngư cử̉ ₫iù̉n. — bang ₫ịa chỉ method chiù́m nhiù̀u chử̃. — tử́n thơi gian ₫ù̉ phuc vu lùnh gơi thửng bao : kiù̉m tra, load va anh xa bang ₫ịa chỉ, tũm chỉ sử́ method cờ̀n goi va goi gian tiù́p qua ₫ịa chỉ trong bang. • 1 sử́ chương trũnh dịch tũm cach tử́i ưu hoa cac vờ́n ₫ù̀ nay. • slide sau la cac tử́i ưu hoa cua chương trũnh dịch C++ va cai gia phai tra. 32 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 63 Chương 3: Nguyùn tăc dịch OOP Tử́i ưu hoa code tao ra (tt) • trong C++, tờ́t ca ₫ử́i tương ₫ù̀u tam thơi va găn chăt vao ưng dung→ bang ₫ịa chỉ cac method cua cac ₫ử́i tương luửn năm săn trong khửng gian cua ưng dung. • mử̃i lờ̀n tao ₫ử́i tương, biù́n pvftbl trong ₫ử́i tương ₫ươc gan ngay ₫ịa chỉ ₫ờ̀u bang method → khửng cờ̀n lam bươc 1 cho mử̃i lờ̀n gơi thửng bao. • C++ chỉ dung mử́i quan hù con/cha trong kiù̉m tra kiù̉u→ cửng viùc 2 ₫ươc lam tai thơi ₫iù̉m dịch thay vũ tai thơi ₫iù̉m gơi thửng bao trong luc chay. • cửt tùn gơi nhơ method khửng cờ̀n phai lưu trư trong bang ₫ịa chỉ cac method. • chỉ co cac virtual function mơi ₫ươc giai quyù́t theo cơ chù́ ₫a hũnh, con cac function khac ₫ươc dịch ra lơi goi trưc tiù́p. Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 64 Chương 3: Nguyùn tăc dịch OOP Tử́i ưu hoa code tao ra (tt) • cai gia phai tra cua viùc tử́i ưu hoa trong C++ : — ngươi lờp trũnh phai tư quyù́t ₫ịnh method nao cờ̀n xư ly theo cơ chù́ ₫a hũnh, ham nao khửng ? Nù́u sư quyù́t ₫ịnh nay sai thũ se gờy lử̃i khi chay, ma la ngươi thũ kho long quyù́t ₫ịnh chủnh xac. — tủnh ₫a hũnh chỉ ₫ung giưa cac ₫ử́i tương co mử́i quan hù con/cha, ơ ₫o thư tư cac ₫ịa chỉ method cua moi class con trong bang ₫ịa chỉ luửn giử́ng thư tư cac method tương ưng cua class cha, tuy nhiùn giưa 2 class bờ́t ky thũ khửng thù̉ ₫am bao→ kiù̉m tra kiù̉u trong C++ khửng thù̉ nờng cờ́p lùn băng cach dung mử́i quan hù "conformity". 33 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 65 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 4 QUI TRềNH HƠP NHấT & UML ) Qui trũnh phat triù̉n phờ̀n mù̀m hơp nhờ́t ) Tử̉ng quat vù̀ ngửn ngư mử hũnh UML Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 66 New or changed requirements New or changed system Software Engineering Process What Is a Process? • Defines Who is doing What, When to do it, and How to reach a certain goal. Chương 4: UML & Qui trũnh hơp nhờ́t 34 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 67 Key concepts • Cycle • Phase, Iterations • Process Workflows — Activity, steps • Artifacts — models — reports, documents • Worker: Architect What does happen? What is produced? Who does it? When does architecture happen? Chương 4: UML & Qui trũnh hơp nhờ́t When does product happen? Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 68 Key concepts Chương 4: UML & Qui trũnh hơp nhờ́t Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle i Cycle n time Phase Arch Iteration ... Dev Iteration Dev Iteration ... Trans Iteration ... Release Release Release Release Release Release Release Release Prelim Iteration ... Inception Elaboration Construction Transition 35 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 69 Lifecycle Phases time Inception Elaboration Construction Transition • 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 70 Major Milestones time Vision Baseline Architecture Initial Capability Product Release Inception Elaboration Construction Transition Chương 4: UML & Qui trũnh hơp nhờ́t 36 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 71 Phases and Iterations An iteration is a sequence of activities with an established plan and evaluation criteria, resulting in an executable release Arch Iteration ... Dev Iteration Dev Iteration ... Trans Iteration ... Release Release Release Release Release Release Release Release Prelim Iteration ... Inception Elaboration Construction Transition Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 72 Iterations and Workflow P re lim in a ry Ite ra tio n (s ) ite r. # 1 ite r. # 2 ite r. # n ite r. #n + 1 ite r. # n +2 ite r. # m ite r. #m +1 Inception Elaboration Construction Transition Ite ra t io n s Phases Core Workflows An iteration in the elaboration phase Requirements Design Implementation Test Analysis Chương 4: UML & Qui trũnh hơp nhờ́t 37 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 73 Workflows and Models Requirements Design Implementation Test Analysis Use Case Model Design Model Depl. Model Impl. Model Analysis Model Test Model UML diagrams provide views into each model Each workflow is associated with one or more models. Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 74 Use Case Model Use Case Diagrams Collaboration Diagrams Component Diagrams Deployment Diagrams Object Diagrams Statechart Diagrams Sequence Diagrams Class Diagrams Activity Diagrams Use Case Model Design Model Depl. Model Impl. Model Analysis Model Test Model Chương 4: UML & Qui trũnh hơp nhờ́t 38 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 75 Analysis & Design Model Use Case Diagrams Collaboration Diagrams Component Diagrams Deployment Diagrams Object Diagrams Statechart Diagrams Sequence Diagrams Class Diagrams Activity Diagrams Use Case Model Design Model Depl. Model Impl. Model Analysis Model Test Model Incl. subsystems and packages Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 76 Deployment and Implementation Model Use Case Diagrams Collaboration Diagrams Component Diagrams Deployment Diagrams Object Diagrams Statechart Diagrams Sequence Diagrams Class Diagrams Activity Diagrams Use Case Model Design Model Depl. Model Impl. Model Analysis Model Test Model Incl. active classes and components Chương 4: UML & Qui trũnh hơp nhờ́t 39 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 77 Test Model Use Case Diagrams Collaboration Diagrams Component Diagrams Deployment Diagrams Object Diagrams Statechart Diagrams Sequence Diagrams Class Diagrams Activity Diagrams Use Case Model Design Model Depl. Model Impl. Model Analysis Model Test Model Test model refers to all other models and uses corresponding diagrams Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 78 Overview of the Unified Process • The Unified Process is — Iterative and incremental — Use case driven — Architecture-centric — Risk confronting Chương 4: UML & Qui trũnh hơp nhờ́t 40 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 79 Use Case Driven Req.ts Impl. Test Use Cases bind these workflows together Analysis Design Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 80 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 Chương 4: UML & Qui trũnh hơp nhờ́t 41 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 81 Architecture-Centric • Models are vehicles for visualizing, specifying, constructing, and documenting architecture • The Unified Process prescribes the successive refinement of an executable architecture time Architecture Inception Elaboration Construction Transition Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 82 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 Chương 4: UML & Qui trũnh hơp nhờ́t 42 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 83 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 84 Relationships • Dependency • Association • Generalization • Realization Chương 4: UML & Qui trũnh hơp nhờ́t 43 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 85 Extensibility Mechanisms • Stereotype • Tagged value • Constraint Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 86 Models, Views, and Diagrams Use Case DiagramsUse CaseDiagramsUse CaseDiagrams Scenario DiagramsScenarioDiagramsCollaborationDiagrams State DiagramsStateDiagramsComponentDiagrams Component DiagramsComponent DiagramsDeployment Diagrams State DiagramsStateDiagramsObjectDiagrams Scenario DiagramsScenarioDiagramsStatechartDiagrams Use Case DiagramsUse CaseDiagramsSequenceDiagrams State DiagramsStateDiagramsClassDiagrams Activity Diagrams A model is a complete description of a system from a particular perspective Models Chương 4: UML & Qui trũnh hơp nhờ́t 44 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 87 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 88 Use Case Diagram • Captures system functionality as seen by users Chương 4: UML & Qui trũnh hơp nhờ́t 45 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 89 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 90 Class Diagram • Captures the vocabulary of a system Chương 4: UML & Qui trũnh hơp nhờ́t 46 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 91 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 92 Object Diagram • Captures instances and links Chương 4: UML & Qui trũnh hơp nhờ́t 47 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 93 Object Diagram • Shows instances and links • Built during analysis and design • Purpose — Illustrate data/object structures — Specify snapshots • Developed by analysts, designers, and implementers Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 94 Component Diagram • Captures the physical structure of the implementation Chương 4: UML & Qui trũnh hơp nhờ́t 48 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 95 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 96 Deployment Diagram • Captures the topology of a system’s hardware Chương 4: UML & Qui trũnh hơp nhờ́t 49 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 97 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 Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 98 Sequence Diagram • Captures dynamic behavior (time- oriented) • Purpose — Model flow of control — Illustrate typical scenarios Chương 4: UML & Qui trũnh hơp nhờ́t 50 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 99 Collaboration Diagram • Captures dynamic behavior (message-oriented) • Purpose – Model flow of control – Illustrate coordination of object structure and control Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 100 Statechart Diagram • Captures dynamic behavior (event-oriented) • Purpose — Model object lifecycle — Model reactive objects (user interfaces, devices, etc.) Chương 4: UML & Qui trũnh hơp nhờ́t 51 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 101 Activity Diagram • Captures dynamic behavior (activity- oriented) • Purpose — Model business workflows — Model operations Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 102 Architecture and the UML Organization Package, subsystem Dynamics Interaction State machine Design View Implementation View Process View Components Classes, interfaces, collaborations Active classes Deployment View Nodes Use Case View Use cases Chương 4: UML & Qui trũnh hơp nhờ́t 52 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 103 Architecture and Models Architecture embodies a collection of views of the models Views Models Use Case Model Design Model Depl. Model Impl. Model Test Model Analysis Model Chương 4: UML & Qui trũnh hơp nhờ́t Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 104 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 5 NẶM BẶT YẽU CấU HĐT ƒ Cac artifacts cờ̀n tao ra ƒ Cac workers tham gia ƒ Qui trũnh phờn tủch Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 53 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 105 Muc ₫ủch cua hoat ₫ử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 cach dung cac use-case. Cac ₫iù̉m băt ₫ờ̀u cho hoat ₫ửng nay kha ₫a dang : ƒ tư mử hũnh nghiùp vu (business model) cho cac ưng dung nghiùp vu. ƒ tư mử hũnh lĩnh vưc (domain model) cho cac ưng dung nhung (embeded). ƒ tư ₫ăc ta yùu cờ̀u cua hù thử́ng nhưng ₫ươc tao bơi nhom khac va/hoăc dung cac phương phap ₫ăc ta khac (thủ du như hương cờ́u truc). ƒ tư 1 ₫iù̉m nao ₫o năm giưa cac ₫iù̉m xuờ́t phat trùn. Muc ₫ẩch cua hoat ₫ộng năm băt yóu cí̀u Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 106  Mử hũnh use-case : ƒ actor : ngươi/hù thử́ng ngoai/thiù́t bị ngoai tương tac vơi hù thử́ng ƒ use-case : cac chưc năng co nghĩa cua hù thử́ng cung cờ́p cho actor. — flow of events — cac yùu cờ̀u ₫ăc biùt cua use-case ƒ ₫ăc ta kiù́n truc (view of use-case model) ƒ bang thuờt ngư ƒ cac prototype giao diùn vơi user (user-interface prototype) Cac artifacts cí̀n tao ra trong năm băt yóu cí̀u Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 54 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 107 Use-Case Model Actor Use-Case System Use - Case * 1 * Cac artifacts cí̀n tao ra trong năm băt yóu cí̀u Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 108 Use-Case Model System Analyst chịu trach nhiùm vù̀ Use-case Specifier User-Interface Designer Architect chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Architecture Description User Interface Prototype Use-CaseGlossaryActor Cac workers trong năm băt yóu cí̀u Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 55 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 109 Architect Use-Case Specifier Find Actors & Use-Cases Qui trẫnh năm băt yóu cí̀u User-Interface Designer System Analyst Structure the Use-Case Model Prioritize Use-Cases Detail a Use-Case Prototype User-Interface Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 110 Muc ₫ủch nhờn dang actor va use-case la ₫ù̉ : ƒ Giơi han hù thử́ng vơi mửi trương bao quanh no. ƒ Phat hoa ai va cac gũ se tương tac vơi hù thử́ng va hù thử́ng cung cờ́p cac chưc năng gũ. ƒ Năm băt va ₫ịnh nghĩa danh sach cac thuờt ngư chung thiù́t yù́u cho viùc tao cac ₫ăc ta vù̀ cac chưc năng cua hù thử́ng. Hoat ₫ửng nay gử̀m 4 bươc : ƒ Tũm cac actor cua hù thử́ng. ƒ Tũm cac use cases cua hù thử́ng. ƒ Miùu ta văn tăt vù̀ tưng use-case. ƒ Miùu ta toan thù̉ mử hũnh use-case. Tẫm Actors & Use cases Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 56 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 111 Viùc tũm cac actor phu thuửc vao ₫iù̉m xuờ́t phat : nù́u xuờ́t phat tư mử hũnh nghiùp vu hay mử hũnh lĩnh vưc thũ viùc tũm actor rờ́t ₫ơn gian. Con nù́u xuờ́t phat tư cac y niùm mơ hử̀ thũ hay tra lơi cac cờu hoi sau : ƒ Ai la ngươi sư dung chưc năng chủnh cua 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 cua ho ? ƒ Ai phai thưc hiùn cửng viùc bao dương, quan trị va giư cho hù thử́ng hoat ₫ửng ? ƒ Hù thử́ng se kiù̉m soat thiù́t bị phờ̀n cưng nao ? ƒ Hù thử́ng ₫ang xờy dưng cờ̀n tương tac vơi nhưng hù thử́ng khac khửng ? Hù thử́ng nao ? ƒ Ai hoăc vờt thù̉ nao quan tờm ₫ù́n hay chịu anh hương bơi kù́t qua ma hù thử́ng phờ̀n mù̀m tao ra ? Tẫm Actors Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 112 Viùc tũm cac use-case phu thuửc vao ₫iù̉m xuờ́t phat : nù́u xuờ́t phat 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 gian. Con nù́u xuờ́t phat tư cac y niùm mơ hử̀ thũ hay tra lơi cac cờu hoi sau : ƒ Actor yùu cờ̀u chưc năng gũ cua hù thử́ng ? ƒ Actor cờ̀n phai ₫oc, tao, xoa, sưa ₫ử̉i hoăc lưu trư thửng tin nao cua hù thử́ng ? ƒ Actor cờ̀n thiù́t phai ₫ươc canh bao vù̀ nhưng sư kiùn trong hù thử́ng, hay actor cờ̀n phai bao hiùu cho hù thử́ng vù̀ vờ́n ₫ù̀ nao ₫o khửng ? ƒ Hù thử́ng co thù̉ hử̃ trơ mửt sử́ cửng viùc thương nhờt cua actor nao ₫o khửng ? Tẫm Use-Cases Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 57 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 113 Mử̃i use-case sau khi tũm ₫ươc, nùn ₫ươc ₫ăt tùn, ₫ươc miùu ta băng vai cờu tử̉ng kù́t cac hoat ₫ửng rử̀i sau ₫o ₫ăc ta tưng bươc hù thử̀ng cờ̀n gũ ₫ù̉ tương tac vơi actor. Dung lươc ₫ử̀ va cac flow of events ₫ù̉ miùu ta mử hũnh use-case tử̉ng thù̉, ₫ăc biùt la cac mử́i quan hù giưa cac use-case va vơi actor. Quan hù giưa cac actors : tử̉ng quat hoa (generalization). Quan hù giưa actor va use-case : liùn kù́t (association). Quan hù giưa cac use-cases : ƒ tử̉ng quat hoa. ƒ include ƒ extend Mióu ta văn tăt tưng Use-Cases Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 114 Cac nộ́i quan hó giưa cac actor va use-cases Actor A Use-Case X Use-Case Y Actor B Use-Case Z Use-Case B Use-Case C Use-Case D Use-Case A > > Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 58 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 115 Store Manager Add New User Remove User Edit User Information POS LoginUser Maintenance <<exten... > > > Cac nộ́i quan hó giưa cac use-cases va use-cases Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 116 C ustom er R etail S tore Cu stom er Telephone C ustom er Online Custom er Cus tomers Cac nộ́i quan hó giưa cac actor va actor Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Quan hù giưa cac actors : tử̉ng quat hoa (generalization). Thủ du Customer la actor tử̉ng quat hoa cua cac actor Online Customer, Telephone Customer, Retail Store Customer. Lưu y actor tử̉ng quat hoa thương khửng co thờt, no la phờ̀n tư trưu tương. 59 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 117 Lươc ₫ộ̀ use-case Sales:From Order to Delivery Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Perform Transaction Buyer Order Goods & Services Confirm Order Invoice Buyer Send Reminders Seller Accounting System Pay Overdraft Fee Pay Invoice > Ini tiator Initiator Initiator Initiator Initiator Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 118 Lươc ₫ộ̀ trang thai cua use-case Pay Invoice Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Browsing Invoice Scheduled Invoice Paid Invoice Cancelled rejectschedule pay on due date 60 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 119 Xờy dưng cac lươc ₫ử̀ use-case va cac ₫ăc ta giai thủch mử hũnh use- case, nhờ́t la cach thưc ma cac use-case quan hù vơi nhau hay vơi cac actor : ƒ lươc ₫ử̀ miùu ta cac use-case phuc vu cho 1 actor hay 1 use-case nghiùp vu. ƒ ₫ù̉ ₫am bao tủnh nhờ́t quan khi miùu ta nhiù̀u use-case ₫ử̀ng thơi, nùn xờy dưng 1 bang thuờ ngư chung (glossary). ƒ mử hũnh use-case co thù̉ ₫ươc tử̉ chưc dang cờy thư bờc nhơ cac package use-case. ƒ xờy dưng ₫ăc ta "survey" cho mử hũnh use-case tử̉ng thù̉ va nhơ khach hang va ngươi dung kiù̉m tra, ₫anh gia lai. Mióu ta tộ̉ng thó̉ mộ hẫnh Use-Cases Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 120 ƒ cac use-case tũm ₫ươc khửng phai thiù́t yù́u như nhau, do ₫o kiù́n truc sư cờ̀n săp xù́p thư tư ưu tiùn chung ₫ù̉ xac ₫ịnh use-case nao nùn ₫ươc phat triù̉n trươc, use-case nao ₫ươc phat triù̉n sau. ƒ kù́t qua cua hoat ₫ửng nay la xờy dưng ₫ươc goc nhũn kiù́n truc cua mử hũnh use-case, no ₫ươc dung ₫ù̉ hoach ₫ịnh cac bươc lăp cung vơi cac yù́u tử́ khac như nghiùp vu, kinh tù́... Săp thư tư ưu tión cac use-case Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 61 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 121 Muc ₫ủch la ₫ăc ta "flow of events" cho tưng use-case : ƒ cờ́u truc ₫ăc ta use-case. ƒ ₫ăc ta use-case bao gử̀m nhưng gũ. ƒ hũnh thưc hoa ₫ăc ta use-case. Cờ́u truc ₫ăc ta use-case : ƒ gử̀m 1 luử̀ng cửng viùc cơ ban va cac luử̀ng phu. Cac luử̀ng phu co thù̉ xay ra vũ cac ly do : ƒ Actor co thù̉ chon thưc hiùn 1 trong nhiù̀u nhanh. ƒ Nù́u hơn 1 actor dung use-case, cac hoat ₫ửng cua ho co thù̉ anh hương lờ̃n nhau. ƒ Hù thử́ng co thù̉ phat hiùn lử̃i nhờp tư actor. ƒ 1 sử́ tai nguyùn khửng hoat ₫ửng tử́t lam cho use-case khửng hoan tờ́t cửng viùc ₫ung cua no. Chi tió́t hoa Use-Case Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 122 ƒ nùn ₫ịnh nghĩa trang thai băt ₫ờ̀u. ƒ khi nao va cach nao use-case băt ₫ờ̀u. ƒ thư tư cac hoat ₫ửng ₫ươc thưc hiùn. ƒ khi nao va cach nao use-case kù́t thuc. ƒ nùn ₫ịnh nghĩa trang thai kù́t thuc. ƒ khửng cho phep nhiù̀u 'path' thưc thi. ƒ Co thù̉ miùu ta luử̀ng thi hanh phu trong ₫ăc ta luử̀ng cơ ban. ƒ Đăc ta luử̀ng phu ₫ươc rut trủch tư luử̀ng cơ ban. ƒ Tương tac giưa hù thử́ng va actor va chung trao ₫ử̉i nhưng gũ. ƒ Viùc dung cac ₫ử́i tương, gia trị, tai nguyùn trong hù thử́ng. ƒ Phai miùu ta ro rang hù thử́ng lam gũ va actor lam gũ. Đăc ta use-case gộ̀m nhưng gẫ ? Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 62 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 123 Khi sư tương tac giưa actor va use-case gử̀m nhiù̀u trang thai phưc tap ta nùn dung ky thuờt mử hũnh trưc quan ₫ù̉ diù̃n ta use- case vũ no giup nha phờn tủch hiù̉u ro hơn vù̀ use-case : ƒ lươc ₫ử̀ trang thai UML co thù̉ ₫ươc dung ₫ù̉ miùu ta trang thai cua use-case va sư chuyù̉n giưa cac trang thai. ƒ lươc ₫ử̀ hoat ₫ửng co thù̉ ₫ươc dung ₫ù̉ miùu ta sư chuyù̉n trang thai chi tiù́t hơn dươi dang cac hoat ₫ửng. ƒ lươc ₫ử̀ tương tac co thù̉ ₫ươc dung ₫ù̉ miùu ta cac tương tac giưa ₫ử́i tương use-case va ₫ử́i tương actor. Khửng nùn lam dung cac lươc ₫ử̀ vũ ₫ờy la ngửn ngư cua nha phat triù̉n, cac khach hang va ngươi dung kho long hiù̉u nử̉i. Hẫnh thưc hoa use-case (Formalizing) Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 124 Mử hũnh use-case ₫ươc cờ́u truc lai ₫ù̉ : ƒ rut trủch cac use-case tử̀ng quat va dung chung bơi cac use- case ₫ăc biùt hơn. ƒ rut trủch cac use-case nhiùm y va phu thùm ₫ù̉ nơi rửng use- case khac. Trươc khi hoat ₫ửng nay xay ra : ƒ nha phờn tủch ₫a nhờn diùn tương ₫ử́i ₫ờ̀y ₫u cac actor va use-case, miùu ta chung trong cac lươc ₫ử̀ ₫ù̉ cờ́u thanh mử hũnh use-case tử̉ng thù̉. ƒ ngươi ₫ăc ta use-case ₫a phat triù̉n ₫ăc ta chi tiù́t cho mử̃i use-case. Cí́u truc lai mộ hẫnh Use-Case Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương 63 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 125 Cac cửng viùc cu thù̉ : ƒ Nhờn dang cac use-case tử̉ng quat ₫ươc dung chung. ƒ Nhờn dang cac use-case co quan hù "extend". ƒ Nhờn dang cac use-case co quan hù "include". Mửt sử́ ₫iù̀u lưu y : ƒ Cờ́u truc cac use-case va mử́i quan hù giưa chung nùn phan anh cac 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 chon use-case qua lơn hay qua nho. ƒ Tranh chia nho use-case. Cí́u truc lai mộ hẫnh Use-Case Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 126 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 6 PHấN TẹCH HƯƠNG ĐệI TƯƠNG ƒ Cac artifacts cờ̀n tao ra ƒ Cac workers tham gia ƒ Qui trũnh phờn tủch Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 64 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 127 Muc ₫ủch cua hoat ₫ửng phờn tủch yùu cờ̀u la xờy dưng mử hũnh phờn tủch vơi cac ₫ăc ₫iù̉m sau : ƒ dung ngửn ngư cua nha phat triù̉n ₫ù̉ miùu ta mử hũnh. ƒ thù̉ hiùn goc nhũn tư bùn trong cua hù thử́ng. ƒ ₫ươc cờ́u truc tư cac class phờn tủch va cac package phờn tủch. ƒ ₫ươc dung chu yù́u bơi nha phat triù̉n ₫ù̉ hiù̉u cach thưc tao hũnh dang hù thử́ng. ƒ loai trư moi chi tiù́t dư thưa, khửng nhờ́t quan. ƒ phat hoa cac hiùn thưc cho cac chưc năng bùn trong hù thử́ng. ƒ ₫ịnh nghĩa cac dờ̃n xuờ́t use-case, mử̃i dờ̃n xuờ́t use-case cờ́p phờn tủch miùu ta sư phờn tủch 1 use-case. Muc ₫ẩch cua phín tẩch yóu cí̀u Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 128  Mử hũnh phờn tủch = hù thử́ng phờn tủch : ƒ cac class phờn tủch — boundary class — entity class. — control class ƒ cac dờ̃n xuờ́t use-case cờ́p phờn tủch : — cac lươc ₫ử̀ class phờn tủch — cac lươc ₫ử̀ tương tac (cửng tac,...). — 'flow of events' ơ cờ́p phờn tủch — cac yùu cờ̀u ₫ăc biùt cua use-case ƒ cac package phờn tủch ƒ ₫ăc ta kiù́n truc (view of analysis model) Cac artifacts cí̀n tao ra trong phín tẩch yóu cí̀u Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 65 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 129 Analysis Model Analysis System Use-Case Realization - Analysis Analysis Class Analysis Package Cac artifacts cí̀n tao ra trong phín tẩch yóu cí̀u * * ** * *1 Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 130 Analysis Model Use-Case Engineer Component EngineerArchitect Architecture Description Use-Case Realization - Analysis Analysis class Analysis package chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Cac workers trong phín tẩch yóu cí̀u 66 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 131 Architect Use-Case Engineer Architectural Analysis Analyze a Use-Case Analyze a Class Analyze a Package Qui trẫnh phín tẩch yóu cí̀u Component Engineer Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 132 Muc ₫ủch cua phờn tủch kiù́n truc la phat hoa mử hũnh phờn tủch va kiù́n truc hù thử́ng băng cach nhờn dang cac package phờn tủch, cac class phờn tủch dù̃ thờ́y va cac yùu cờ̀u ₫ăc biùt chung cho hù thử́ng. Cac package phờn tủch giup tử̉ chưc hù thử́ng thanh nhưng ₫ơn vị nho dù̃ quan ly. Mử̃i package chưa 1 sử́ use-case vơi tủnh chờ́t sau : ƒ cac use-case hử̃ trơ cho cung 1 qui trũnh nghiùp vu. ƒ cac use-case hử̃ trơ cho cung 1 actor. ƒ cac use-case co quan hù lờ̃n nhau : tử̉ng quat hoa, include va extend. Theo thơi gian, khi viùc phờn tủch tiù́n triù̉n, sư tinh chù́ cờ́u truc cac package se tiù́n triù̉n theo. Phín tẩch kió́n truc : nhín dang cac package phín tẩch Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 67 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 133 Co 3 loai (stereotype) class phờn tủch : ƒ class biùn (boundary class) mử hũnh sư tương tac 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, loai thửng tin co tủnh bù̀n vưng, tử̀n tai lờu dai. ƒ class ₫iù̀u khiù̉n (control class) mử hũnh viùc xư ly, cửng tac, giao tac trong use-case. 3 loai class phín tẩch Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Boundary class Entity class Control class Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 134 Tư cac class lĩnh vưc hay cac class nghiùp vu trong bươc năm băt yùu cờ̀u, ₫ù̀ nghị 1 sử́ class thưc thù̉ quan trong nhờ́t (tư 10-20). Cac class phờn tủch con lai se ₫ươc nhờn dang trong hoat ₫ửng phờn tủch use-case. Cac yùu cờ̀u ₫ăc biùt cung ₫ươc nhờn dang ₫ù̉ ₫ươc xư ly trong cac bươc sau, chung gử̀m : ƒ tủnh bù̀n vưng. ƒ sư phờn tan & ₫ử̀ng thơi. ƒ cac tủnh chờ́t an toan dư liùu. ƒ ₫ù̀ khang vơi lử̃i. ƒ quan ly giao tac. Tủnh chờ́t cua 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. Phín tẩch kió́n truc : nhín dang cac class thưc thó̉ dó̃ thí́y Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 68 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 135 Phờn tủch use-case la ₫ù̉ : ƒ nhờn dang cac class phờn tủch co ₫ử́i tương cua chung tham gia vao viùc thưc hiùn 'flow of events' cua use-case. ƒ phờn phử́i hanh vi cua use-case băng cach cho cac ₫ử́i tương phờn tủch tương tac nhau. ƒ năm băt 1 sử́ yùu cờ̀u ₫ăc biùt cho dờ̃n xuờ́t use-case. Phín tẩch use-case Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 136 Trong bươc nay ta nhờn dang cac class ₫iù̀u khiù̉n, biùn, thưc thù̉ cờ̀n thiù́t ₫ù̉ hiùn thưc use-case va phat hoa tùn, trach nhiùm, thuửc tủnh va cac mử́i quan hù giưa chung. Dung cac hương dờ̃n sau : ƒ nhờn dang cac class thưc thù̉ băng cach chu y cac thửng tin trong ₫ăc ta use-case va trong mử hũnh lĩnh vưc. ƒ nhờn dang class biùn cơ sơ cho mử̃i class thưc thù̉ vưa tũm ₫ươc. ƒ nhờn dang class biùn trung tờm cho mử ̃i actor la con ngươi. ƒ nhờn dang class biùn trung tờm cho mử ̃i actor la hù thử́ng ngoai hay thiù́t bị I/O. ƒ nhờn dang class ₫iù̀u khiù̉n co trach nhiùm xư ly trong dờ̃n xuờ́t use-case. Tờp hơp cac class phờn tủch tham gia vao dờ̃n xuờ́t use-case thanh 1 (hay nhiù̀u) lươc ₫ử̀ class. Phín tẩch use-case : nhín dang cac class phín tẩch Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 69 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 137 Payment Request UI Order Configmation Order Handler Payment Request Payment Scheduler Invoice Buyer (f rom Use-Case Model) Thẩ du vó̀ lươc ₫ộ̀ class phín tẩch cho use-case Pay Invoice Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 138 Cờ̀n chu y cac ₫iù̉m sau trong lươc ₫ử̀ cửng tac : ƒ p. tư actor gơi 1 thửng bao ₫ù́n class biùn ₫ù̉ kủch hoat use-case. ƒ mử̃i class phờn tủch nùn co ủt nhờ́t 1 ₫ử́i tương tham gia vao lươc ₫ử̀ cửng tac. ƒ chưa vửi kù́t hơp tac vu cu thù̉ cho thửng bao. ƒ cac mử́i nử́i trong lươc ₫ử̀ cửng tac thương la 'instance' cua mử́i quan hù kù́t hơp giưa cac class tương ưng. ƒ chưa tờp trung vao thư tư thơi gian cac thửng bao. ƒ Lươc ₫ử̀ cửng tac nùn xư ly tờ́t ca mử́i quan hù cua use-case ₫ươc hiùn thưc. ƒ cờ̀n bử̉ sung ₫ăc ta dang văn ban vao lươc ₫ử̀ cửng tac, ₫ăc ta nay nùn ₫ươc ₫ù̉ vao 'flow of events cờ́p phờn tủch". Phín tẩch use-case : mióu ta sư tương tac giưa cac ₫ộ́i tương phín tẩch Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 70 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 139 Cờ̀n chu y cac ₫iù̉m sau trong lươc ₫ử̀ cửng tac : ƒ cac thửng ₫iùp ₫ươc ₫anh sử́ theo kiù̉u phờn cờ́p. — 3.4.2 xay ra sau 3.4.1 va ca 2 ₫ươc lử̀ng trong 3.4 — 3.4.3a va 3.4.3b xay ra ₫ử̀ng thơi va ₫ươc lử̀ng trong 3.4 ƒ cu phap tử̉ng quat cua 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) Lươc ₫ộ̀ cộng tac Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 140 Lươc ₫ộ̀ cộng tac Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac : Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương : Buyer : Payment Scheduler : Payment Request UI : Invoice : Order Confirmation : Order Handler : Payment Request 1: Browse Invoice 4: Get 5: Get 6: Schedule InVoice for payment 8: New 2: Browse 9: setStatus(scheduled) 7: Schedule payment 3: Check Invoice 71 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 141 Muc ₫ủch cua viùc phờn tủch class la : ƒ nhờn dang va duy trũ cac nghĩa vu, trach nhiùm cua class phờn tủch dưa vao vai tro cua no trong dờ̃n xuờ́t use-case. ƒ nhờn dang va duy trũ cac thuửc tủnh va cac mử́i quan hù cua class phờn tủch. ƒ năm băt cac yùu cờ̀u ₫ăc biùt liùn quan ₫ù́n viùc hiùn thưc class phờn tủch. Phín tẩch class Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 142 ƒ tử̉ hơp cac vai tro ma class ₫ong trong cac dờ̃n xuờ́t use-case khac nhau se cho ta 1 sử́ nghĩa vu cua class. ƒ nghiùn cưu cac lươc ₫ử̀ class va lươc ₫ử̀ tương tac trong cac dờ̃n xuờ́t use-case co class tham gia. ƒ ₫ửi khi cờ̀n nghiùn cưu 'flow of events cờ́p phờn tủch' cua dờ̃n xuờ́t use-case ₫ù̉ tũm thùm cac nghĩa vu cac class. Phín tẩch class : nhín dang cac nghĩa vu Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 72 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 143 Mử̃i nghĩa vu thương cờ̀n 1 sử́ thuửc tủnh. Dung cac 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 dung lai 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 tap, nùn tach 1 sử́ thuửc tủnh phưc tap ra thanh class riùng. ƒ thuửc tủnh cua class thưc thù̉ thương dù̃ thờ́y. ƒ thuửc tủnh cua class biùn giao tiù́p vơi ngươi thương miùu ta thửng tin ₫ươc xư ly bơi user như cac field text,... ƒ thuửc tủnh cua class biùn giao tiù́p vơi hù thử́ng ngoai thương miùu ta cac tủnh chờ́t cua giao tiù́p. ƒ thuửc tủnh cua class ₫iù̀u khiù̉n ủt khi co. ƒ ₫ửi khi khửng cờ̀n cac thuửc tủnh hũnh thưc. Phín tẩch class : nhín dang cac thuộc tẩnh Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 144 Cac ₫ử́i tương tương tac nhau thửng qua cac lươc ₫ử̀ cửng tac. Cac mử́i liùn kù́t nay thương la 'instance' cua mử́i quan hù kù́t hơp giưa cac class. Cac mử́i liùn kù́t nay cung co thù̉ am chỉ nhu cờ̀u vù̀ sư gửp nhiù̀u ₫ử́i tương. Mử́i quan hù gửp nùn ₫ươc dung khi cac ₫ử́i tương miùu ta : ƒ cac khai niùm chưa vờt ly khai niùm khac (xe chưa tai xù́ va khach) ƒ cac khai niùm ₫ươc xờy dưng tư cac khai niùm khac (xe gử̀m cac banh xe va ₫ửng cơ). ƒ cac khai niùm tao thanh tờp hơp y niùm nhiù̀u ₫ử́i tương (gia ₫ũnh gử̀m cha, me va con). Đù̉ rut trủch cac hanh vi chung cua nhiù̀u class phờn tủch, ta co thù̉ dung class tử̉ng quat hoa, nhưng chỉ nùn ơ cờ́p y niùm. Phín tẩch class : nhín dang mộ́i quan hó giưa cac class Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương 73 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 145 Muc ₫ủch cua phờn tủch package la : ƒ ₫am bao tưng package phờn tủch ₫ửc lờp vơi cac package khac nhiù̀u như co thù̉ co. ƒ ₫am bao package phờn tủch hoan thanh muc ₫ủch cua no la hiùn thưc 1 sử́ class lĩnh vưc hoăc 1 sử́ use-case. ƒ miùu ta cac phu thuửc sao cho co thù̉ ươc lương anh hương cua cac thay ₫ử̉i trong tương lai. Dung cac hương dờ̃n sau : ƒ ₫am bao package chưa cac class ₫ung, cử́ găng cho tủnh kù́t dủnh cao băng cach gửp cac class co mử́i quan hù chưc năng. ƒ han chù́ tử́i ₫a sư phu thuửc giưa cac package, phờn phử́i lai cac class qua phu thuửc vao package khac. Phín tẩch package Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 146 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 7 THIẽT Kẽ HƯƠNG ĐệI TƯƠNG ƒ Cac artifacts cờ̀n tao ra ƒ Cac workers tham gia ƒ Qui trũnh thiù́t kù́ Chương 7: Thiù́t kù́ hương ₫ử́i tương 74 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 147 Muc ₫ủch cua cửng viùc thiù́t kù́ la : ƒ ₫at tơi sư hiù̉u biù́t sờu săc cac vờ̀n ₫ù̀ vù̀ cac rang buửc va cac yùu cờ̀u khửng chưc năng co liùn quan ₫ù́n ngửn ngư lờp trũnh, sư dung lai linh kiùn, HĐH, cửng nghù phờn tan, ₫ử̀ng thơi, database, giao diùn, quan ly giao tac. ƒ tao ra ₫ờ̀u vao cho hoat ₫ửng hiùn thưc băng cach năm băt cac hù thử́ng con, cac interface va cac class. ƒ chia cửng viùc hiùn thưc ra nhiù̀u phờ̀n dù̃ quan ly va xư ly bơi cac ₫ửi khac nhau (co thù̉ ₫ử̀ng thơi). ƒ năm băt cac interface chủnh giưa cac hù thử́ng con. ƒ co thù̉ hiù̉n thị trưc quan va xem xet bang thiù́t kù́ dung cac ky hiùu chung. ƒ tao ra mưc trưu tương cua sư hiùn thưc hù thử́ng. Muc ₫ẩch cua thió́t kó́ Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 148 Chương 7: Thiù́t kù́ hương ₫ử́i tương  Mử hũnh thiù́t kù́ = hù thử́ng thiù́t kù́ : ƒ cac hù thử́ng con ƒ cac class thiù́t kù́. ƒ cac interface cua hù thử́ng con va class. ƒ cac dờ̃n xuờ́t use-case cờ́p thiù́t kù́ : — cac lươc ₫ử̀ class — cac lươc ₫ử̀ tương tac (trũnh tư, trang thai,...). — 'flow of events' ơ cờ́p thiù́t kù́. — cac yùu cờ̀u cờ́p hiùn thưc. ƒ ₫ăc ta kiù́n truc (view of design model)  Mử hũnh bử́ trủ : ƒ ₫ăc ta kiù́n truc (view of deployment model) Cac artifacts cí̀n tao ra trong thió́t kó́ 75 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 149 Desgin Class Design Model Desgin System Use-Case Realization - Design Interface Design Subsystem * * * * * * * *1 Chương 7: Thiù́t kù́ hương ₫ử́i tương Cac artifacts cí̀n tao ra trong thió́t kó́ Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 150 Class thiù́t kù́ la sư trưu tương trưc tiù́p cua class hiùn thưc : ƒ dung ngửn ngư lờp trũnh ₫ù̉ miùu ta class thiù́t kù́. ƒ thương xac ₫ịnh tờ̀m vưc cua cac thanh phờ̀n. ƒ cac mử́i quan hù co y nghĩa trưc tiù́p tơi hiùn thưc : tử̉ng quat hoa → thưa kù́, quan hù gửp, kù́t hơp thanh 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 1 sử́ yùu cờ̀u tơi luc 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 1 sử́ class active, nhưng nùn tử̀n tai trong mử hũnh process thay vũ trong mử hũnh thiù́t kù́. Đăc ₫ió̉m cua class thió́t kó́ Chương 7: Thiù́t kù́ hương ₫ử́i tương 76 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 151 Use-Case Engineer Component Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Desgin Model Deployment Model Architecture Description Use-Case Realization - Desgin Design class Design Subsystem Interface Chương 7: Thiù́t kù́ hương ₫ử́i tương Cac wokers trong hoat ₫ộng thió́t kó́ Architect Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 152 Architect Use-Case Engineer Architectural Design Design a Use-Case Design a Class Design a Subsystem Chương 7: Thiù́t kù́ hương ₫ử́i tương Qui trẫnh thió́t kó́ Component Engineer 77 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 153 Muc ₫ủch cua thiù́t kù́ kiù́n truc la phat hoa mử hũnh thiù́t kù́ va mử hũnh bử́ trủ cung kiù́n truc cua chung băng cach nhờn dang cac vờ́n ₫ù̀ sau : ƒ Cac nut tủnh toan va cac cờ́u hũnh mang cua chung. ƒ Cac hù thử́ng con va interface cua chung. ƒ Cac class thiù́t kù́ co y nghĩa kiù́n truc như cac class chu ₫ửng. ƒ Cac cơ chù́ thiù́t kù́ tử̉ng quat xư ly cac yùu cờ̀u chung như tủnh bù̀n vưng, hiùu qua,... (₫ươc năm băt trong cac class phờn tủch va cac dờ̃n xuờ́t use-case ơ cờ́p phờn tủch. Chương 7: Thiù́t kù́ hương ₫ử́i tương Thió́t kó́ kió́n truc : muc ₫ẩch Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 154 Chương 7: Thiù́t kù́ hương ₫ử́i tương Cờ́u hũnh mang vờt ly se anh hương ₫ù́n kiù́n truc phờ̀n mù̀m, gử̀m cac khủa canh : ƒ cac nut nao liùn quan, kha năng vù̀ bử nhơ va cửng suờ́t tủnh cua nut. ƒ kiù̉u nử́i kù́t va kiù̉u giao thưc nao giưa cac nut. ƒ cac tủnh chờ́t vù̀ sư nử́i kù́t va giao thưc như băng thửng, ₫ử săn sang, chờ́t lương... ƒ cờ̀n kha năng tủnh dư thưa, chù́ ₫ử ₫ù̀ khang lử̃i, di cư process, sao lưu dư liùu,... Thió́t kó́ kió́n truc : nhín dang nut va cí́u hẫnh mang 78 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 155 Chương 7: Thiù́t kù́ hương ₫ử́i tương Chia cửng viùc thiù́t kù́ tư ₫ờ̀u hay khi mử hũnh thiù́t kù́ phat triù̉n thanh phưc tap cờ̀n ₫ươc chia nho. Mửt sử́ hù thử́ng con ₫ươc dung lai tư cac project khac : ƒ nhờn dang cac hù thử́ng con cờ́p ưng dung ƒ nhờn dang cac hù thử́ng con cờ́p giưa va cờ́p hù thử́ng ƒ ₫ịnh nghĩa sư phu thuửc giưa cac hù thử́ng con. ƒ nhờn dang giao tiù́p cua cac hù thử́ng con. Thió́t kó́ kió́n truc : nhín dang hó thộ́ng con va interface cua chung Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 156 Chương 7: Thiù́t kù́ hương ₫ử́i tương Cờ̀n nhờn dang cac class thiù́t kù́ quan trong vù̀ măt kiù́n truc ₫ù̉ lam tiù̀n ₫ù̀ cho hoat ₫ửng thiù́t kù́, cac class khac se ₫ươc nhờn dang trong viùc thiù́t kù́ use-case. ƒ nhờn dang cac class thiù́t kù́ tư cac class phờn tủch tương ưng ƒ nhờn dang cac class chu ₫ửng khi chu y yùu cờ̀u ₫ử̀ng thơi trùn hù thử́ng : — cac yùu cờ̀u vù̀ hiùu qua, ₫ử săn sang, throughput cua hù thử́ng — sư phờn tan cua hù thử́ng trùn cac nut. — cac yùu cờ̀u khac như khơi ₫ửng, kù́t thuc, tranh deadlock, tranh bao hoa, cờ́u hũnh lai cac nut, kha năng nử́i kù́t. Thió́t kó́ kió́n truc : nhín dang cac class thió́t kó́ quan trong vó̀ kió́n truc 79 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 157 Chương 7: Thiù́t kù́ hương ₫ử́i tương Tư cac yùu cờ̀u chung va ₫ăc biùt ₫a ₫ươc nhờn dang trong phờ̀n phờn tủch (trong cac class phờn tủch va cac dờ̃n xuờ́t use-case cờ́p phờn tủch), quyù́t ₫ịnh cach xư ly chung dưa trùn cửng nghù hiùn thưc va thiù́t kù́ săn co. Kù́t qua la 1 tờp cac cơ chù́ thiù́t kù́ tử̉ng quat. Cac yùu cờ̀u cờ̀n xư ly thương liùn quan ₫ù́n : ƒ tủnh bù̀n vưng. ƒ sư phờn tan & ₫ử̀ng thơi. ƒ cac tủnh chờ́t an toan dư liùu. ƒ ₫ù̀ khang vơi lử̃i. ƒ quan ly giao tac. Thió́t kó́ kió́n truc : nhín dang cac cơ chó́ thió́t kó́ tộ̉ng quat Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 158 Muc ₫ủch cua thiù́t kù́ use-case la : ƒ Nhờn dang cac class thiù́t kù́ va cac hù thử́ng con co object cờ̀n cho viùc thưc hiùn 'flow of events-design' cua use-case. ƒ phờn tan hanh vi cua use-case băng cach cho cac object thiù́t kù́ va hù thử́ng con tương tac nhau. ƒ ₫ịnh nghĩa yùu cờ̀u trùn cac tac vu cua class thiù́t kù́, hù thử́ng con va interface cua chung. ƒ năm băt cac yùu cờ̀u cờ́p hiùn thưc cho use-case. Thió́t kó́ Use-Case Chương 7: Thiù́t kù́ hương ₫ử́i tương 80 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 159 Nhờn dang cac class thiù́t kù́ như sau : ƒ nghiùn cưu cac 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 dang cac class thiù́t kù́ nử́i vơi cac class phờn tủch nay. ƒ nghiùn cưu cac 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 dang cac class thiù́t kù́ hiùn thưc cac yùu cờ̀u ₫ăc biùt nay. ƒ gan nghĩa vu cho cac class thiù́t kù́ tũm ₫ươc. ƒ nù́u con thiù́u 1 vai 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 truc sư va ky sư linh kiùn ₫ù̉ ban bac. ƒ xờy dưng lươc ₫ử̀ class chưa cac class thiù́t kù́ tũm ₫ươc. Thió́t kó́ Use-Case : nhín dang cac class thió́t kó́ Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 160 Dung lươc ₫ử̀ trũnh tư : ƒ lươc ₫ử̀ trũnh tư chưa cac phờ̀n tư actor, ₫ử́i tương thiù́t kù́ va cac t.bao giưa chung. ƒ nù́u use-case co nhiù̀u luử̀ng ₫iù̀u khiù̉n khac nhau, nùn tao lươc ₫ử̀ trũnh tư cho tưng luử̀ng. ƒ nùn chuyù̉n lươc ₫ử̀ cửng tac ơ cờ́p phờn tủch thanh lươc ₫ử̀ trũnh tư ban ₫ờ̀u, tư ₫o phat triù̉n thùm chi tiù́t. ƒ dung 'flow of events', duyùt qua cac bươc trong no ₫ù̉ quyù́t ₫ịnh cac tương tac nao cờ̀n thiù́t giưa cac ₫ử́i tương thiù́t kù́ va phờ̀n tư actor. Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cac object thió́t kó́ Chương 7: Thiù́t kù́ hương ₫ử́i tương 81 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 161 Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cac object thió́t kó́ Chương 7: Thiù́t kù́ hương ₫ử́i tương Nùn chu y cac ghi nhờn sau trong viùc xờy dưng lươc ₫ử̀ trũnh tư : ƒ nùn tờp trung vao trũnh tư trong lươc ₫ử̀. ƒ actor gơi thửng bao ₫ù́n 1 ₫ử́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ờ́t 1 ₫ử́i tương tham gia vao lươc ₫ử̀ trũnh tư. ƒ cac message ₫ươc gơi giưa cac ₫ương ₫ơi sử́ng ₫ử́i tương, co thù̉ co tùn tam va se trơ thanh tùn tac vu tương ưng. ƒ dung 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ù cua use-case cờ̀n hiùn thưc. Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 162 : People : LoginForm : Database 1: login(uname,pswd) 1.2 [succ = true]: welcome 1.1: succ := Verify(uname,pswd) Lươc ₫ộ̀ cộng tac Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac : (thủ du lươc ₫ử̀ cửng tac cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn chỉ thửng qua Web. Chương 7: Thiù́t kù́ hương ₫ử́i tương 82 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 163 : Database: People : LoginForm 1: submit(uname, psswd) 1.1: verify(uname, psswd) 1.2: welcome Lươc ₫ộ̀ trẫnh tư Cac thanh phờ̀n cua lươc ₫ử̀ trũnh tư : (thủ du lươc ₫ử̀ trũnh tư cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn chỉ thửng qua Web. Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 164 Composed entry/ assign ID exit/ fill date on char/ handle character compose command Stored entry/ save into folder Read entry/ convert to rich text unhightlight focus hightlight read command / recover( id ) logout save command re-fwd cmd / quote / append subject Sending do/ send( repc ) send command[ recipents != null ] / parse sending done Lươc ₫ộ̀ trang thai Cac thanh phờ̀n cua lươc ₫ử̀ trang thai : (thủ du lươc ₫ử̀ trang thai cho use-case Send/Read e-mail). Chương 7: Thiù́t kù́ hương ₫ử́i tương 83 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 165 Show input for username and password Reject [ psswd invalid ] Welcome [ psswd valid ] Verify DatabaseLoginForm Lươc ₫ộ̀ hoat ₫ộng Cac thanh phờ̀n cua lươc ₫ử̀ hoat ₫ửng : (thủ du lươc ₫ử̀ hoat ₫ửng cho use-case Login cua hù thử́ng ₫ăng ky mửn hoc hù tủn chỉ thửng qua Web. Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 166 Muc ₫ủch cua viùc thiù́t kù́ class la tao ra class thiù́t kù́ hoan thanh vai tro cua no trong dờ̃n xuờ́t use-case va cac yùu cờ̀u phu. Bao gử̀m viùc duy trũ class thiù́t kù́ va cac khủa canh sau cua no : ƒ cac tac vu cua class. ƒ cac thuửc tủnh cua class. ƒ cac mử́i quan hù ma class tham gia. ƒ cac method cua class (hiùn thưc tac vu tương ưng). ƒ cac trang thai cua ₫ử́i tương. ƒ cac phu thuửc tơi bờ́t ky cơ chù́ thiù́t kù́ tử̉ng quat nao. ƒ cac yùu cờ̀u co liùn quan ₫ù́n hiùn thưc cua class. ƒ sư hiùn thưc ₫ung cua bờ́t ky interface ma class phai cung cờ́p. Thió́t kó́ class Chương 7: Thiù́t kù́ hương ₫ử́i tương 84 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 167 Bươc ₫ờ̀u ta phat hoa cac class thiù́t kù́ tư cac interface va class phờn tủch : 1 interface co 1 class thiù́t kù́, con class phờn tủch thũ : ƒ thiù́t kù́ class biùn phu thuửc vao cửng nghù tao interface : form, activeX control... Đù̉ y dung cac prototype giao diùn vơi user trong bươc trươc. ƒ thiù́t kù́ class thưc thù̉ thương phu thuửc vao cửng nghù database. Viùc anh 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 cac nhu cờ̀u sau : — vờ̀n ₫ù̀ phờn tan : cờ̀n nhiù̀u class thiù́t kù́ trùn cac nut khac nhau ₫ù̉ hiùn thưc 1 class ₫iù̀u khiù̉n. — vờ́n ₫ù̀ hiùu qua : nùn dung 1 class thiù́t kù́ cho 1 class ₫iù̀u khiù̉n — vờ́n ₫ù̀ giao tac: class thiù́t kù́ cờ̀n tủch hơp cửng nghù quan ly giao tac. Thió́t kó́ class : Phat hoa class thió́t kó́ Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 168 Nhờn dang cac tac vu ma class thiù́t kù́ cờ̀n cung cờ́p va tờ̀m vưc cua chung (dung cu phap ngửn ngư lờp trũnh). Cac ₫ờ̀u vao cua bươc nay la : ƒ cac trach nhiùm cua bờ́t ky class phờn tủch ma dờ̃n tơi class thiù́t kù́.1 trach nhiùm tương ưng 1 hay nhiù̀u tac vu, nhưng ơ ₫ờy mơi phat hoa thửng sử́ hũnh thưc cac tham sử́. ƒ cac yùu cờ̀u ₫ăc biùt cua bờ́t ky class phờn tủch ma dờ̃n tơi class thiù́t kù́. ƒ cac interface ma class thiù́t kù́ phai cung cờ́p. ƒ dờ̃n xuờ́t use-case cờ́p thiù́t kù́ ma class tham gia. Thió́t kó́ class : Nhín dang cac tac vu Chương 7: Thiù́t kù́ hương ₫ử́i tương 85 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 169 Tac vu thương ₫oi hoi thuửc tủnh, cờ̀n dưa vao cac hương dờ̃n sau : ƒ chu y thuửc tủnh cua bờ́t ky class phờn tủch ma dờ̃n tơi class thiù́t kù́.1 thuửc tủnh nay am chỉ 1 hay nhiù̀u thuửc tủnh cua class thiù́t kù́. ƒ han chù́ dung kiù̉u cua ngửn ngư lờp trũnh cho thuửc tủnh. ƒ cử́ găng dung kiù̉u ₫a co. ƒ nù́u class thiù́t kù́ qua phưc tap, 1 vai thuửc tủnh cua no co thù̉ tach ra thanh cac class riùng. ƒ nù́u co qua nhiù̀u thuửc tủnh hay thuửc tủnh qua phưc tap, nùn dung lươc ₫ử̀ class riùng ₫ù̉ miùu ta thuửc tủnh. Thió́t kó́ class : Nhín dang cac thuộc tẩnh Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 170 Cờ̀n theo cac hương dờ̃n sau : ƒ chu y cac mử́i quan hù kù́t hơp & gửp cua bờ́t ky class phờn tủch ma dờ̃n tơi class thiù́t kù́. ƒ tinh chù́ sử́ phờ̀n tư tham gia, tùn vai tro, tủnh chờ́t cua vai tro, class kù́t hơp, kù́t hơp n-ary. ƒ tinh chù́ hương cua mử́i quan hù kù́t hơp tư lươc ₫ử̀ tương tac. Nhờn dang mử́i quan hù tử̉ng quat hoa dung cu phap ngửn ngư lờp trũnh, nù́u ngửn ngư lờp trũnh khửng hử̃ trơ, dung mử́i quan hù kù́t hơp, gửp ₫ù̉ thay thù́. Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp & gộp Chương 7: Thiù́t kù́ hương ₫ử́i tương 86 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 171 Method ₫ăc ta cach tac vu ₫ươc hiùn thưc. Miùu ta cac method dung ngửn ngư tư nhiùn hay ngửn ngư pseudocode. Nù́u cung 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 ₫oan thiù́t kù́. Mửt vai ₫ử́i tương thiù́t kù́ ₫ươc ₫iù̀u khiù̉n bơi trang thai : trang thai xac ₫ịnh hanh vi cua no khi nhờn 1 thửng bao tư ngoai→ miùu ta trang thai dung lươc ₫ử̀ trang thai. Xư ly cac yùu cờ̀u ₫ăc biùt chưa ₫ươc chu y ơ cac bươc trươc. Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp & gộp Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 172 Muc ₫ủch cua viùc thiù́t kù́ hù thử́ng con la : ƒ ₫am bao hù thử́ng con la ₫ửc lờp vơi nhau nhiù̀u như co thù̉ co. ƒ ₫am bao hù thử́ng con la ₫ửc lờp vơi interface cua no nhiù̀u như co thù̉ co. ƒ ₫am bao hù thử́ng con cung cờ́p ₫ươc interfcae ₫ung. ƒ ₫am bao hù thử́ng con hoan thanh muc ₫ủch, tao hiùn thưc ₫ung cho cac tac vu. Thió́t kó́ hó thộ́ng con (Subsystem) Chương 7: Thiù́t kù́ hương ₫ử́i tương 87 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 173 Gử̀m cac cửng viùc sau : ƒ duy trũ sư phu thuửc giưa cac hù thử́ng con (nùn thửng qua interface), tử́i thiù̉u hoa sư phu thuửc băng cach bử́ trủ lai cac class qua phu thuửc vao hù thử́ng con khac. ƒ duy trũ interface cua cac hù thử́ng con. ƒ duy trũ nửi dung cua cac hù thử́ng con. Thió́t kó́ hó thộ́ng con (Subsystem) Chương 7: Thiù́t kù́ hương ₫ử́i tương Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 174 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 8 HIẽN THƯC HƯƠNG ĐệI TƯƠNG ƒ Cac artifacts cờ̀n tao ra ƒ Cac workers tham gia ƒ Qui trũnh hiùn thưc Chương 8: Hiùn thưc hương ₫ử́i tương 88 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 175 Chương 8: Hiùn thưc hương ₫ử́i tương Muc ₫ủch cua hiùn thưc la : ƒ kù́ hoach cac 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 cac bươc nho va dù̃ quan ly). ƒ phờn tan hù thử́ng băng cach anh xa cac thanh phờ̀n kha thi trùn cac nut trong mử hũnh bử́ trủ (dưa chu yù́u vao cac class chu ₫ửng). ƒ hiùn thưc cac class va hù thử́ng con thiù́t kù́. ƒ kiù̉m tra ₫ơn vị trùn cac thanh phờ̀n, tủch hơp chung vao 1 hay nhiù̀u file kha thi trươc khi gơi ₫i kiù̉m tra tủch hơp va kiù̉m tra hù thử́ng. Muc ₫ẩch cua giai ₫oan hión thưc Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 176  Mử hũnh hiùn thưc = hù thử́ng hiùn thưc : ƒ cac hù thử́ng con hiùn thưc ƒ cac component (executable, file, library, table, document,...) ƒ cac interface cua hù thử́ng con va component. ƒ kù́ hoach tủch hơp cac "build" ƒ ₫ăc ta kiù́n truc (view of Implementation model) Cac artifacts cí̀n tao ra trong hión thưc Chương 8: Hiùn thưc hương ₫ử́i tương 89 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 177 Chương 8: Hiùn thưc hương ₫ử́i tương Stub la 1 thanh phờ̀n ma phờ̀n hiùn thưc chỉ ơ mưc ₫ử "template" ₫ù̉ phat triù̉n hoăc kiù̉m tra thanh phờ̀n khac phu thuửc va stub. Stub co thù̉ tử́i thiù̉u sử́ thanh phờ̀n mơi cờ̀n hiùn thưc cho mử̃i version cua hù thử́ng. co phờ̀n hiùn thưc, nhơ ₫o lam ₫ơn gian 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 tao ra : ƒ package trong java. ƒ project trong VB. ƒ thư muc cac file trong C++,... Stub, hó thộ́ng con Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 178 Chương 8: Hiùn thưc hương ₫ử́i tương Phờ̀n mù̀m ₫ươc hiùn thưc theo tưng bươc nho dù̃ quan ly, mử̃i bươc ta xờy dưng 1 build. Build la 1 version kha thi cua hù thử́ng. Lơi ủch cua cach tiù́p cờn nay la : ƒ version kha thi co thù̉ tao ra kha sơm thay vũ phai 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 cac thanh viùn nửi bử hay cac ngươi liùn quan. ƒ dù̃ dang phat 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 vao. ƒ kiù̉m tra tủch hơp thương nhanh hơn la kiù̉m tra toan bử hù thử́ng. Build 90 Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử́i tương Slide 179 Chương 8: Hiùn thưc hương ₫ử́i tương Kù́ hoach xờy dưng build tủch hơp miùu ta trũnh tư cac 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 vong ₫ươc hiùn thưc trong build, ₫ờy la danh sach cac use-case va/hoăc cac kịch ban cua chung. Danh sach nay cung chỉ ra cac yùu cờ̀u phu kem theo. ƒ Cac phờ̀n nao cua mử hũnh hiùn thưc bị tac ₫ửng trong build, ₫ờy la danh sach cac hù thử́ng con va cac thanh phờ̀n ₫ươc ₫oi hoi ₫ù̉ hiùn thưc chưc năng ky vong cua build. Kó́ hoach xíy dưng build tẩch hơp Bộ mụn Cụng nghệ phần mềm Khoa CNTT ĐH Bỏch Khoa Tp.HCM Mửn TK. Hương ₫ử

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf
Tài liệu liên quan