Tài liệu môn Phân tích thiết kế hướng đối tượng

pdf 175 trang vanle 2460
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu môn Phân tích thiết kế hướng đối tượng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_mon_phan_tich_thiet_ke_huong_doi_tuong.pdf

Nội dung text: Tài liệu môn Phân tích thiết kế hướng đối tượng

  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 Mửn TK. Hương ₫ử́i tương Khoa CNTT ĐH Bỏch Khoa Tp.HCM Slide 1 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT ĐH Bỏch Khoa Tp.HCM Slide 2 1
  2. 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ẽMCƠ BAN CUA Mệ HềNH HƯƠNG ĐệI TƯƠNG Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 3 Nửi dung 1.1 Tư lờp trũnh co cờ́u 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ưakù́ va cơ chù́ 'override'. 1.6 Tủnh bao gửp. 1.7 Thửng ₫iùp, tủnh ₫a hũnh va kiù̉m tra kiù̉u. 1.8 Tủnh tử̉ng quat hoa. 1.9 Tủnh vưng bù̀n. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 4 2
  3. Tư lờp trũnh co cờ́u truc ₫ù́n OOP 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). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 5 Tư lờp trũnh co cờ́u truc ₫ù́n OOP 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ờ́tdư 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 : Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 6 3
  4. Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương trũnh = cờ́u truc dư liùu + giai thuờt module global data (package) local data entry 'start' of module local data of function Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 7 Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương trũnh = tờp cac ₫ử́i tương tương tac nhau ₫ử́i tương (object) local data entry of object local data of operation Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 8 4
  5. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 9 Đử́i tương (Object) ~ Mử hũnh ₫ử́i tương quan niùm chương trũnh bao gử̀m 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. Implementation (class) Interface (abstract type) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 10 5
  6. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 11 Class (Implementation) ~ Class ₫ịnh nghĩa chi tiù́t hiùn thưc ₫ử́i tương : ƒ ₫ịnh nghĩa 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 12 6
  7. Vủ du vù̀ class trong Java class abstract HTMLObject { protected static final int LEFT = 0; protected static final int MIDDLE = 1; protected static final int RIGHT = 2; private int alignment = LEFT; protected Vector objects = null; HTMLObject( ){ // constructor objects = new Vector (5); } public void setAlignment( int algnmt ) { alignment = algnmt; } public int getAlignment( ) { return alignment; } public abstract String toHTML( ); // abstract operation } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 13 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 14 7
  8. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 15 Vủ du vù̀ thưa kù́ va override - Java class Geometry { public Draw(Graphics g); protected int xPos, yPos; protected double xScale, yScale; protected COLORREF color; }; class Line extends Geometry { int xPos2, yPos2; // other attributes public Draw(Graphics g) { // cac lnh ve ₫oan thăng } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 16 8
  9. 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. Goc nhũn ngư nghĩa Goc nhũn hiùn thưc O2 O O1 2 O1 O3 O3 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 17 Vủ du vù̀ bao gửp - C++ class Geometry { // abstract base class public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ) = 0; // abstract operation protected: int xPos, yPos; double xScale, yScale; COLORREF color; }; class Group : public Geometry { public: Group( ); ~Group( ); virtual void Draw( Window *pWnd ); // override private: Geometry ppGeo; // pointer container int geoCount; }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 18 9
  10. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 19 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ovaop1 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 20 10
  11. 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 ⇔ Achư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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 21 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 22 11
  12. 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). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 23 Tử̉ng kù́t ~ Mử hũnh hương ₫ử́i tương quan niùm thù́ giơi (hay chương trũnh) bao gử̀m 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 1: Cac khai niùm cơ ban cua mử hũnh hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 24 12
  13. Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh Khoa Cửng Nghù Thửng Tin Chương 2 THẹ DU Vẽ NGệN NGƯ OOP ) Visual C++ ) Java Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 25 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 26 13
  14. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 27 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; }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 28 14
  15. 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ù́. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 29 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 30 15
  16. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 31 Skeleton ₫ịnh nghĩa class class Geometry : Object { // == class Geometry : public Object { public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ); // virtual method BOOL IsDisplayed(void); protected: COLORREF color; private : int xPos, yPos; double xScale, yScale; }; class Point : Geometry {}; class Line : Geometry { }; class Polygon : Geometry { }; class Rectangle : Geometry { }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 32 16
  17. Cờ́u truc 1 chương trũnh Dialog based ₫ơn gian InitInstance() DoModal() CProgramDlg CProgramApp Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 33 Cờ́u truc 1 chương trũnh SDI ₫ơn gian InitInstance() CMainFrame CProgramView CProgramDoc CSingleDocTemplate CProgramApp Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 34 17
  18. Cờ́u truc 1 chương trũnh MDI ₫ơn gian InitInstance() CChildFrame CProgramView CProgramDoc CMultiDocTemplate CProgramApp Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 35 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 36 18
  19. Hử̃ trơ Class va Interface 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. Đử́itươ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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 37 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'. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 38 19
  20. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 39 Hử̃ trơ package 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). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 40 20
  21. 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 41 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 42 21
  22. Thủ du vù̀ chương trũnh Java import java.net.*; public class getnet { public static void main(String args[]) { try { if(args.length!=1) { System.out.println("Usage: java AddrLookupApp "); return; } InetAddress host = InetAddress.getByName(args[0]); String hostName = host.getHostName(); System.out.println ("Host name : "+hostName); System.out.println ("IP address:"+host.getHostAddress()); } catch (UnknownHostException e) { } } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 43 Thủ du vù̀ chương trũnh Java GUIClock > AlarmClock 12.34.25 wakeup() Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 44 22
  23. 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; } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 45 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; } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 46 23
  24. 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; } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 47 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); } } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 48 24
  25. 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(); } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 49 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); } } Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 2: Thủ du vù̀ cac ngửn ngư OOP ĐH Bỏch Khoa Tp.HCM Slide 50 25
  26. 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 51 Tử̉ng quat vù̀ vờ́n ₫ù̀ dịch OOP •Chương trũnh la 1tờp cac ₫ử́i tương sử́ng va tương tac lờ̃n nhau. •Cac ₫ử́i tương thuửc1sử́ 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ờpn₫ị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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 52 26
  27. Dịch 1 abstract type • Abstract type chỉ chưa thửng tin trưu tương (interface), khửng miùu ta sư hiùn thưc → Kù́t qua viùc dịch 1 type chỉ dưng lai cờy ngư nghĩa cuatype tương ưng ₫ù̉ phuc vu viùc kiù̉m tra kiù̉u, chư khửng tao code ma may. •Chỉ cờ̀n3bươ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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 53 Dịch 1 class •Dịch class la cửng viùc chủnh 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 54 27
  28. Dịch thuửc tủnh dư liùu typedef struct { • class → cờ́u truc record // import cacfieldtư cờ́u truc class C1 : C0 { // ₫ươc sinh ra tư C0 double d; int i ; // cac field tương ưng vơiC1 int C1_d; public : int C1_i; int proc4(int i); // cac field dư liùu ₫iù̀u khiù̉n void proc5 (double d); // tư tao bơi chương trũnh dịch void (*pvfaddr)() ; }; } C1; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 55 Dịch thuửc tủnh dư liùu(tt) •mử̃i class → 1 record cử̉ ₫iù̉n. • tùn class → tùn record. • copy cacfielddư 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cfielddư 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). Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 56 28
  29. Dịch thuửc tủnh dư liùu(tt) •cờ́u trucrecord₫ươc dịch ra ma may thanh1vu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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 57 Tao bang ₫ịa chỉ cacmethod pvftbl fname faddr class C1 : C0 { 0 "proc1" C0_proc1 int i ; double d; 1 "proc2" C1_proc2 2 "proc3" C0_proc3 public : int proc4(int i, double k); 3 "proc4" C1_proc4 void proc5 (double d); 4 "proc5" C1_proc5 }; 5 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 58 29
  30. 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 59 Dịch 1 method int C1_proc1(C1* p, int i, double d) { int C1::proc1(int i,double k) { C2 o2; C2 *p2; C2 o2; // truy xuờ́t thuửc tủnh C2 *p2; p->C1_i = i; p->C1_d = d; C1::i = i; // goi ham d = k; C1_proc5(p,d); proc5(d); C2_proc2(&o2, i,d); o2.proc2(i,d); // gơi thửng bao : kiù̉m tra, load, p2 = New(C2); 1 // anh xa bang ₫ịa chỉ method p2->proc2(i,d); for (i = 0; i }; pvftbl[i].fname)==0) break; 3 (*pvftbl[i].faddr)(p2,i,d); }; Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 60 30
  31. 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o3bươ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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 61 Tử́i ưu hoacodetao ra •co 2vờ́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ù́pqua₫ịa chỉ trong bang. •1sử́ 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 62 31
  32. Tử́i ưu hoacodeta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ùc2₫ươ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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 63 Tử́i ưu hoacodeta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ưa2 classbờ́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". Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 3: Nguyùn tăc dịch OOP ĐH Bỏch Khoa Tp.HCM Slide 64 32
  33. 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 65 What Is a Process? • Defines Who is doing What, When to do it, and How to reach a certain goal. New or changed New or changed Software Engineering requirements Process system Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 66 33
  34. Key concepts When does •Cycle product happen? When does • Phase, Iterations architecture happen? • Process Workflows What does happen? — Activity, steps happen? •Artifacts What is — models produced? — reports, documents Who does • Worker: Architect it? Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 67 Key concepts time Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle i Cycle n Phase Inception Elaboration Construction Transition Prelim Arch Dev Dev Trans Iteration Iteration Iteration Iteration Iteration Release Release Release Release Release Release Release Release Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 68 34
  35. Lifecycle Phases Inception Elaboration Construction Transition time • Inception Define the scope of the project and develop business case • Elaboration Plan project, specify features, and baseline the architecture • Construction Build the product • Transition Transition the product to its users Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 69 Major Milestones Inception Elaboration Construction Transition time Vision Baseline Initial Product Architecture Capability Release Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 70 35
  36. Phases and Iterations Inception Elaboration Construction Transition Prelim Arch Dev Dev Trans Iteration Iteration Iteration Iteration Iteration Release Release Release Release Release Release Release Release An iteration is a sequence of activities with an established plan and evaluation criteria, resulting in an executable release Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 71 Iterations and Workflow Phases Core Workflows Inception Elaboration Construction Transition Requirements An iteration in the elaboration phase Analysis Design Implementation Test Prelim inary iter. iter. iter. iter. ite r. iter. iter. Iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1 Bộ mụn Cụng nghệ phần mềm Itera tio ns Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 72 36
  37. Workflows and Models UML diagrams provide views into each model Requirements Use Case Model Analysis Analysis Model Design Design Depl. Model Model Implementation Impl. Model Each workflow is associated with one or more models. Test Test Model Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 73 Use Case Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Deployment Design Diagrams Model Sequence Diagrams Depl. Model Collaboration Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 74 37
  38. Analysis & Design Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Incl. subsystems Deployment and packages Design Diagrams Model Sequence Diagrams Depl. Model Collaboration Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 75 Deployment and Implementation Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Deployment Design Diagrams Model Sequence Diagrams Incl. active classes and components Depl. Model Collaboration Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 76 38
  39. Test Model Use Case Use Case Diagrams Model Class Object Diagrams Diagrams Analysis Component Model Diagrams Deployment Design Diagrams Model Sequence Test model refers to Diagrams Depl. all other models and Model uses corresponding Collaboration diagrams Diagrams Impl. Statechart Model Diagrams Activity Test Model Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 77 Overview of the Unified Process • The Unified Process is — Iterative and incremental — Use case driven — Architecture-centric — Risk confronting Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 78 39
  40. Use Case Driven Req.tsAnalysis Design Impl. Test Use Cases bind these workflows together Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 79 Use Cases Drive Iterations • Drive a number of development activities — Creation and validation of the system’s architecture — Definition of test cases and procedures — Planning of iterations — Creation of user documentation — Deployment of system • Synchronize the content of different models Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 80 40
  41. Architecture-Centric • Models are vehicles for visualizing, specifying, constructing, and documenting architecture • The Unified Process prescribes the successive refinement of an executable architecture Inception Elaboration Construction Transition time Architecture Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 81 Overview of the UML • The UML is a language for — visualizing — specifying — constructing — documenting the artifacts of a software-intensive system • There are 4 key elements : — Modeling elements — Relationships — Extensibility Mechanisms — Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 82 41
  42. Modeling Elements • Structural elements — class, interface, collaboration, use case, active class, component, node • Behavioral elements — interaction, state machine • Grouping elements — package, subsystem • Other elements — note Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 83 Relationships • Dependency • Association • Generalization • Realization Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 84 42
  43. Extensibility Mechanisms • Stereotype • Tagged value • Constraint Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 85 Models, Views, and Diagrams A model is a complete description of a system State State from a particular DiagramsClass perspective Use Case Diagrams Use Case Diagrams State DiagramsUse Case State Use Case Diagrams DiagramsObject DiagramsUse Case Diagrams Diagrams DiagramsSequence Diagrams Diagrams Scenario State DiagramsScenario DiagramsState CollaborationDiagrams Models DiagramsComponent Diagrams Diagrams Scenario Component Scenario DiagramsComponent DiagramsStatechart DeploymentDiagrams Diagrams Diagrams Diagrams Activity Diagrams Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 86 43
  44. Diagrams • A diagram is a view into a model — Presented from the aspect of a particular stakeholder — Provides a partial representation of the system — Is semantically consistent with other views • In the UML, there are nine standard diagrams — Static views: use case, class, object, component, deployment — Dynamic views: sequence, collaboration, statechart, activity Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 87 Use Case Diagram • Captures system functionality as seen by users Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 88 44
  45. Use Case Diagram • Captures system functionality as seen by users • Built in early stages of development • Purpose — Specify the context of a system — Capture the requirements of a system — Validate a system’s architecture — Drive implementation and generate test cases • Developed by analysts and domain experts Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 89 Class Diagram • Captures the vocabulary of a system Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 90 45
  46. Class Diagram • Captures the vocabulary of a system • Built and refined throughout development • Purpose — Name and model concepts in the system — Specify collaborations — Specify logical database schemas • Developed by analysts, designers, and implementers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 91 Object Diagram • Captures instances and links Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 92 46
  47. Object Diagram • Shows instances and links • Built during analysis and design • Purpose — Illustrate data/object structures — Specify snapshots • Developed by analysts, designers, and implementers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 93 Component Diagram • Captures the physical structure of the implementation Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 94 47
  48. Component Diagram • Captures the physical structure of the implementation • Built as part of architectural specification • Purpose — Organize source code — Construct an executable release — Specify a physical database • Developed by architects and programmers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 95 Deployment Diagram • Captures the topology of a system’s hardware Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 96 48
  49. Deployment Diagram • Captures the topology of a system’s hardware • Built as part of architectural specification • Purpose — Specify the distribution of components — Identify performance bottlenecks • Developed by architects, networking engineers, and system engineers Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 97 Sequence Diagram • Captures dynamic behavior (time- oriented) • Purpose — Model flow of control — Illustrate typical scenarios Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 98 49
  50. Collaboration Diagram • Captures dynamic behavior (message-oriented) • Purpose – Model flow of control – Illustrate coordination of object structure and control Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 99 Statechart Diagram • Captures dynamic behavior (event-oriented) • Purpose — Model object lifecycle — Model reactive objects (user interfaces, devices, etc.) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 100 50
  51. Activity Diagram • Captures dynamic behavior (activity- oriented) • Purpose — Model business workflows — Model operations Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 101 Architecture and the UML Design View Implementation View Classes, interfaces, Components collaborations Use cases Use Case View Process View Deployment View Active classes Nodes Organization Dynamics Package, subsystem Interaction State machine Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 102 51
  52. Architecture and Models Use Case Analysis Design Depl. Impl. Test Model Model Model Model Model Model Models Views Architecture embodies a collection of views of the models Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 4: UML & Qui trũnh hơp nhờ́t ĐH Bỏch Khoa Tp.HCM Slide 103 Trương Đ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cartifactscờ̀n tao ra ƒ Cacworkerstham gia ƒ Qui trũnh phờn tủch Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 104 52
  53. Muc ₫ẩch cua hoat ₫ộng năm băt yóu cí̀u 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 105 Cacartifactscí̀n tao ra trong năm băt yóu cí̀u  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ause-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) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 106 53
  54. Cacartifactscí̀n tao ra trong năm băt yóu cí̀u 1 Use-Case Model Use-Case System * * Use - Case Actor Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 107 Cac workers trong năm băt yóu cí̀u System Use-case User-Interface Architect Analyst Specifier Designer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Use-Case Actor Glossary Use-Case User Interface Architecture Model Prototype Description Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 108 54
  55. Qui trẫnh năm băt yóu cí̀u Find Actors & Structure the System Analyst Use-Cases Use-Case Model Prioritize Architect Use-Cases Detail a Use-Case Specifier Use-Case Prototype User-Interface Designer User-Interface Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 109 Tẫm Actors & Use cases 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ử̀m4bươ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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 110 55
  56. Tẫm Actors 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 ? Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 111 Tẫm Use-Cases Viùc tũm 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 ? Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 112 56
  57. Mióu ta văn tăt tưng Use-Cases Mử̃i use-case sau khi tũm ₫ươc, nùn ₫ươc ₫ăt tùn, ₫ươc miùu ta băng 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ơiactor. 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cuse-caseva vơiactor. 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 Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 113 Cac nộ́i quan hó giưa cacactorva use-cases Use-Case Z Actor A Actor B Use-Case X Use-Case Y > Use-Case D Use-Case A Use-Case B > Use-Case C Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 114 57
  58. Cac nộ́i quan hó giưa cacuse-casesva use-cases > User Maintenance POS Login Store Manager > > <<exten Edit User Information Add New User Remove User Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 115 Cac nộ́i quan hó giưa cacactorva actor Quan hù giưa cac actors : tử̉ng Customers quat hoa (generalization). Thủ du Customer la actor tử̉ng quat hoa cua cac actor Online Customer 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. Retail S tore Online Custom er Customer Telephone Customer Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 116 58
  59. Lươc ₫ộ̀ use-case Sales:From Order to Delivery Order Goods & Services In i tia t or Confirm Order Initiator Initiator Initiator Buyer Initiator Seller Invoice Buyer Send Reminders Pay Invoice > Accou nti ng Sys t em Perform Transaction Pay Overdraft Fee Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 117 Lươc ₫ộ̀ trang thai cua use-case Pay Invoice Browsing schedule reject Invoice Scheduled pay on due date Invoice Paid Invoice Cancelled Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 118 59
  60. Mióu ta tộ̉ng thó̉ mộ hẫnh Use-Cases 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cuse-casephu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ưng1ba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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 119 Săp thư tư ưu tión cacuse-case ƒ 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ù́ Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 120 60
  61. Chi tió́t hoaUse-Case 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ử̀m1luử̀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ơn1 actordu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. ƒ 1sử́ 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 121 Đăc ta use-case gộ̀m nhưng gẫ ? ƒ nùn ₫ịnh nghĩa trang thai băt ₫ờ̀u. ƒ khi nao va cach naouse-casebăt ₫ờ̀u. ƒ thư tư cac hoat ₫ửng ₫ươc thưc hiùn. ƒ khi nao va cach naouse-casekù́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ũ. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 122 61
  62. Hẫnh thưc hoa use-case (Formalizing) 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iUMLco thù̉ ₫ươc dung ₫ù̉ miùu ta trang thai cuause-caseva 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ichitiù́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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 123 Cí́u truc lai mộ hẫnh Use-Case 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 124 62
  63. Cí́u truc lai mộ hẫnh Use-Case 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 5: Năm băt yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 125 Trương Đ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cartifactscờ̀n tao ra ƒ Cacworkerstham gia ƒ Qui trũnh phờn tủch Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 126 63
  64. Muc ₫ẩch cua phín tẩch yóu cí̀u 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ichitiù́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ờ́tuse-casecờ́p phờn tủch miùu ta sư phờn tủch 1 use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 127 Cacartifactscí̀n tao ra trong phín tẩch yóu cí̀u  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ờ́tuse-casecờ́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ause-case ƒ cac package phờn tủch ƒ ₫ăc ta kiù́n truc (view of analysis model) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 128 64
  65. Cacartifactscí̀n tao ra trong phín tẩch yóu cí̀u * 1 * Analysis Analysis Analysis Package Model System * * * * Analysis Class Use-Case Realization - Analysis Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 129 Cac workers trong phín tẩch yóu cí̀u Component Architect Use-Case Engineer Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Analysis Architecture Use-Case Analysis Analysis Model Description Realization - class package Analysis Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 130 65
  66. Qui trẫnh phín tẩch yóu cí̀u Architect Architectural Analysis Use-Case Analyze a Engineer Use-Case Analyze a Component Analyze a Engineer Class Package Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 131 Phín tẩch kió́n truc:nhín dang cac package phín tẩch 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cclass 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ưa1sử́ use-case vơi tủnh chờ́t sau : ƒ cacuse-casehử̃ trơ cho cung 1 qui trũnh nghiùp vu. ƒ cacuse-casehử̃ trơ cho cung 1 actor. ƒ cacuse-caseco 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 132 66
  67. 3loaiclassphín tẩch Co 3loa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. Boundary class Entity class Control class Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 133 Phín tẩch kió́n truc:nhín dang cacclassthưc thó̉ dó̃ thí́y Tư cacclasslĩnh vưchaycac class nghiùp vu trong bươc năm băt yùu cờ̀u, ₫ù̀ nghị 1sử́ 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ờ́tantoa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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 134 67
  68. Phín tẩch use-case 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ause-casebăng cach cho cac ₫ử́i tương phờn tủch tương tac nhau. ƒ năm băt1sử́ yùu cờ̀u ₫ăc biùt cho dờ̃n xuờ́t use-case. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 135 Phín tẩch use-case : nhín dang cacclassphín tẩch Trong bươc nay ta nhờn dang cacclass₫iù̀u khiù̉n, biùn, thưc thù̉ cờ̀n thiù́t ₫ù̉ hiùn thưcuse-caseva 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cclassthư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ử̃iclassthưc thù̉ vưa tũm ₫ươc. ƒ nhờn dang class biùn trung tờm cho mử̃iactorla con ngươi. ƒ nhờn dang class biùn trung tờm cho mử̃iactorla 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 136 68
  69. Thẩ du vó̀ lươc ₫ộ̀ class phín tẩch cho use-case Pay Invoice Order Configmation Order Handler Invoice Buyer Payment Request UI (f rom Use-Case Model) Payment Scheduler Payment Request Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 137 Phín tẩch use-case : mióu ta sư tương tac giưa cac ₫ộ́i tương phín tẩch 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ờ́t1₫ử́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cclasstươ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ause-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". Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 138 69
  70. Lươc ₫ộ̀ cộng tac 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) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 139 Lươc ₫ộ̀ cộng tac Cac thanh phờ̀n cua lươc ₫ử̀ cửng tac: 5: Get : Order Confirmation 4: Get : Order Handler 3: Check Invoice 2: Browse : Invoice 6: Schedule InVoice for payment 9: setStatus(scheduled) 1: Browse Invoice 7: Schedule payment : Buyer : Payment Request UI 8: New : Payment Scheduler : Payment Request Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 140 70
  71. Phín tẩch class 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aclass 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ưcclass phờn tủch. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 141 Phín tẩch class : nhín dang cac nghĩa vu ƒ tử̉ hơp cac vai tro ma class ₫ong trong cac dờ̃n xuờ́tuse-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ờ́tuse-caseco 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 142 71
  72. Phín tẩch class : nhín dang cac thuộc tẩnh Mử̃i nghĩa vu thương cờ̀n1sử́ 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ch1sử́ thuửc tủnh phưc tap ra thanh class riùng. ƒ thuửc tủnh cuaclassthư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ơiusernhư 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aclass₫iù̀u khiù̉n ủt khi co. ƒ ₫ửi khi khửng cờ̀n cac thuửc tủnh hũnh thưc. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 143 Phín tẩch class : nhín dang mộ́i quan hó giưa cacclass 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 144 72
  73. Phín tẩch package 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ưc1sử́ class lĩnh vưc hoăc1sử́ 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cclass₫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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 6: Phờn tủch yùu cờ̀u hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 145 Trương Đ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cartifactscờ̀n tao ra ƒ Cacworkerstham gia ƒ Qui trũnh thiù́t kù́ Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 146 73
  74. Muc ₫ẩch cua thió́t kó́ 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 147 Cacartifactscí̀n tao ra trong thió́t kó́  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ờ́tuse-casecờ́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) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 148 74
  75. Cacartifactscí̀n tao ra trong thió́t kó́ * 1 * Design Desgin Design Model System Subsystem * * * * * * Interface Use-Case Realization - Desgin Class Design Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 149 Đăc ₫ió̉m cua class thió́t kó́ Class thiù́t kù́ la sư trưu tương trưc tiù́p cuaclasshiù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 1sử́ 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 1sử́ class active, nhưng nùn tử̀n tai trong mử hũnh process thay vũ trong mử hũnh thiù́t kù́. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 150 75
  76. Cac wokers trong hoat ₫ộng thió́t kó́ Architect Use-Case Component Engineer Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Desgin Deployment Architecture Use-Case Design Design Interface Model Model Description Realization - class Subsystem Desgin Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 151 Qui trẫnh thió́t kó́ Architect Architectural Design Use-Case Design a Engineer Use-Case Design a Component Design a Engineer Class Subsystem Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 152 76
  77. Thió́t kó́ kió́n truc:muc ₫ẩch 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cclass 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ờ́tuse-caseơ cờ́p phờn tủch. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 153 Thió́t kó́ kió́n truc:nhín dang nut va cí́u hẫnh ma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, Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 154 77
  78. Thió́t kó́ kió́n truc:nhín dang hó thộ́ng con va interface cua chu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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 155 Thió́t kó́ kió́n truc:nhín dang cac class thió́t kó́ quan trong vó̀ kió́n truc 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cclassthiù́t kù́ tư cac class phờn tủch tương ưng ƒ nhờn dang cacclasschu ₫ử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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 156 78
  79. Thió́t kó́ kió́n truc:nhín dang cac cơ chó́ thió́t kó́ tộ̉ng quat 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ờ́tuse-casecờ́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 1tờ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ờ́tantoan dư liùu. ƒ ₫ù̀ khang vơi lử̃i. ƒ quan ly giao tac. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 157 Thió́t kó́ Use-Case 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ause-case. ƒ phờn tan hanh vi cuause-casebă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aclassthiù́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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 158 79
  80. Thió́t kó́ Use-Case : nhín dang cac class thió́t kó́ Nhờn dang cacclassthiù́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cclassthiù́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cclassthiù́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ù́u1va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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 159 Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cacobjectthió́t kó́ 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ct.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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 160 80
  81. Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cacobjectthió́t kó́ 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 ₫ù́n1₫ử́i tương thiù́t kù́ ₫ù̉ yùu cờ̀u thưc hiùn use-case. ƒ mử̃i class thiù́t kù́ nùn co ủt nhờ́t1₫ử́i tương tham gia 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 Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 161 Lươc ₫ộ̀ cộng 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. 1: login(uname,pswd) : People 1.2 [succ = true]: welcome : LoginForm 1.1: succ := Verify(uname,pswd) : Database Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 162 81
  82. 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. : LoginForm : Database : People 1: submit(uname, psswd) 1.1: verify(uname, psswd) 1.2: welcome Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 163 Lươc ₫ộ̀ 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). hightlight Composed focus compose command entry/ assign ID exit/ fill date Read on char/ handle character re-fwd cmd / quote / append subject entry/ convert to rich text save command read command / recover( id ) send command[ recipents != null ] / parse unhightlight Sending sending done Stored logout do/ send( repc ) entry/ save into folder Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 164 82
  83. Lươc ₫ộ̀ hoat ₫ộng Cac thanh phờ̀n cua LoginForm Database lươc ₫ử̀ hoat ₫ửng : Show input for username (thủ du lươc ₫ử̀ hoat and password ₫ửng cho use-case Login cua hù thử́ng Verify ₫ăng ky mửn hoc hù tủn chỉ thửng qua [ psswd invalid ] [ psswd valid ] Web. Reject Welcome Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 165 Thió́t kó́ class 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 166 83
  84. Thió́t kó́ class : Phat hoa class thió́t kó́ 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ưc1 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 167 Thió́t kó́ class : Nhín dang cac tac vu 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ơiclass 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 168 84
  85. Thió́t kó́ class : Nhín dang cac thuộc tẩnh 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ơiclass 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ù́uclassthiù́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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 169 Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp&gộp 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ơiclassthiù́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ù́. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 170 85
  86. Thió́t kó́ class : Nhín dang cac mộ́i quan hó kó́t hơp&gộp 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 171 Thió́t kó́ hó thộ́ng con (Subsystem) 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 172 86
  87. Thió́t kó́ hó thộ́ng con (Subsystem) 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 7: Thiù́t kù́ hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 173 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 8 HIẽNTHƯC HƯƠNG ĐệI TƯƠNG ƒ Cacartifactscờ̀n tao ra ƒ Cacworkerstham gia ƒ Qui trũnh hiùn thưc Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 174 87
  88. Muc ₫ẩch cua giai ₫oan hión thưc 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cclass 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o1 hay nhiù̀ufilekha thi trươc khi gơi ₫i kiù̉m tra tủch hơp va kiù̉m tra hù thử́ng. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 175 Cacartifactscí̀n tao ra trong hión thưc  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) Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 176 88
  89. Stub, hó thộ́ng con Stub la 1tha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++, Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 177 Build Phờ̀n mù̀m ₫ươc hiùn thưc theo tưng bươc nho dù̃ 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 178 89
  90. Kó́ hoach xíy dưng build tẩch hơp 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. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 179 Cacartifactscí̀n tao ra trong thió́t kó́ * 1 * Implementation Implementation Implementation Model System Subsystem * * * * Interface Component Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 180 90
  91. Cac workers trong hoat ₫ộng hión thưc Architect System Component Integrator Engineer chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ chịu trach nhiùm vù̀ Imple. Deployment Architecture Integration Component Imple. Interface Model Model Description Build Plan Subsystem Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 181 Qui trẫnh hión thưc Architect Architectural Implementation System Integrate Integrator System Implement Component a Class Perform Engineer Implement Unit Test a Subsystem Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 182 91
  92. Hión thưc kió́n truc Muc ₫ủch cua hiùn thưc kiù́n truc la phat hoa mử hũnh hiùn thưc va kiù́n truc cua no băng cach : ƒ nhờn dang cac thanh phờ̀n co y nghĩa kiù́n truc như cac thanh phờ̀n kha thi (exe). ƒ anh xa cac thanh phờ̀n tơi cac nut trong cờ́u hũnh mang liùn quan : 1 class chu ₫ửng ₫ươc hiùn thưc trong 1 thanh phờ̀n kha thi va trơ thanh 1 process chay ơ 1nut cu thù̉. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 183 Tẩch hơp hó thộ́ng Muc ₫ủch cua tủch hơp hù thử́ng la : ƒ tao1kù́ hoach tủch hơp cac build miùu ta build nao trong tưng bươc lăp va cac yùu cờ̀u trong mử̃i build. ƒ tủch hơp mử̃i build trươc khi kiù̉m tra tủch hơp. Mửt vai tiùu chuờ̉n cho 1 build kù́ tiù́p la : ƒ build nùn thùm 1 sử́ chưc năng vaobuildtrươc băng cach hiùn thưc hoan chỉnh use-case. ƒ build khửng nùn bao gử̀m qua nhiù̀u thanh phờ̀n mơi hay ₫ươc tinh chù́. ƒ build nùn dưa trùn build trươc theo cơ chù́ nơi rửng tư dươi lùn. Bộ mụn Cụng nghệ phần mềm Mửn TK. Hương ₫ử́i tương Khoa CNTT Chương 8: Hiùn thưc hương ₫ử́i tương ĐH Bỏch Khoa Tp.HCM Slide 184 92