Bài giảng Phân tích & Thiết kế hướng đối tượng dùng UML

pdf 176 trang phuongnguyen 2040
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phân tích & Thiết kế hướng đối tượng dùng UML", để 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:

  • pdfbai_giang_phan_tich_thiet_ke_huong_doi_tuong_dung_uml.pdf

Nội dung text: Bài giảng Phân tích & Thiết kế hướng đối tượng dùng UML

  1. SỐNG VỚI HỘI CHỨNG DOWN
  2. 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 DÙNG UML Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT ĐHBach Khoa Tp.HCM Slide 1 Nửi dung mửn hoc 1. n lai 1 ś khai nim cơ ban cua hương ₫́i tương, cac ngn ngư hương ₫́i tương thương dung, cơ ch́ dịch cac type/class sang ngn ngư c̉ ₫ỉn (ngn ngư may). 2. n lai qui trnh phat trỉn ph̀n m̀m hơp nh́t. 3. n lai ngn ngư UML ₫ươc dung ₫̉ miu ta cac artifacts cua qui trnh phat trỉn ph̀n m̀m hơp nh́t. 4. Giơi thiu cac m̃u thít ḱ hương ₫́i tương ₫ươc dung ph̉ bín trong cac ưng dung hin hanh va cac ưng dung tương lai. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT ĐHBach Khoa Tp.HCM Slide 2 1
  3. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT ĐHBach Khoa Tp.HCM Slide 3 Trương Đai hoc Bach Khoa Tp. Hử̀ Chủ Minh Khoa Cửng Nghù Thửng Tin Chương 1 CAC KHAI NIẽ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 4 2
  4. Nửi dung 1.1 Tư lờp trũnh co cờ́u truc ₫ù́n OOP 1.2 Đử́i tương, thuửc tủnh, tac vu. 1.3 Abstract type va class. 1.4 Tủnh bao ₫ong. 1.5 Tủnh thư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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 5 Tư lờp trũnh co cờ́u truc ₫ù́n OOP 1. May tnh ś la thít bị co th̉ thưc hin 1 ś 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 cúi cung. Danh sach cac lnh ₫ươc thưc hin nay ₫ươc goi la chương trnh. 2. b́t ky cng vic ngoai ₫ơi nao cung co th̉ ₫ươc chia thanh trnh tư nhìu cng vic nho hơn. Trnh tư cac cng vic nho nay ₫ươc goi la giai thut giai quýt cng vic ngoai ₫ơi. M̃i cng vic nho hơn cung co th̉ ₫ươc chia nho nưa, ⇒ cng vic ngoai ₫ơi la 1 trnh tư cac lnh may (chương trnh). 3. v́n ₫̀ ḿu ch́t cua vic dung may tnh giai quýt v́n ₫̀ ngoai ₫ơi la lp trnh. Cho ₫́n nay, lp trnh la cng vic cua con ngươi (vơi sư trơ giup ngay cang nhìu cua may tnh). 4. cac lnh cua chương trnh (code) phai tham khao hoăc xư ly (truy xút) thng tin (dư liu). Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 6 3
  5. Tư lờp trũnh co cờ́u truc ₫ù́n OOP 5. Dư liu cua 1 chương trnh co th̉ ŕt nhìu va ₫a dang. Đ̉ truy xút ₫ung 1 dư liu ta c̀n : -tn nhn dang. -kỉu dư liu miu ta ću truc dư liu. -t̀m vưc truy xút miu ta giơi han khach hang truy xútdư liu. 6. Chương trnh c̉ ₫ỉn = giai thut + dư liu. 7. Chương trnh con (function, subroutine, ) cho phep ću truc chương trnh, sư dung lai code 8. Chương trnh c̉ ₫ỉn co ću truc phn ćp như sau : Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 7 Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương trnh = ć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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 8 4
  6. Tư lờp trũnh co cờ́u truc ₫ù́n OOP Chương trnh = 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 9 Tử̉ng quat vù̀ hương ₫ử́i tương ƒ M hnh hương ₫́i tương giơi thiu 1 quan ₫ỉm lp trnh (va phn tch/thít ḱ) khac hăn so vơi trương phai c̉ ₫ỉn (co ću truc). ƒ Băt ₫̀u nhen nhom vao nhưng năm cúi 60s va ₫́n ₫̀u 90s th trơ nn ŕt ph̉ bín trong cng nghip ph̀n m̀m. ƒ Nhưng ngn ngư hương ₫́i tương ₫̀u tin : Smalltalk, Eiffel. Sau ₫o xút hin thm : Object Pascal, C++, Java, C#, ƒ Hnh thanh cac phương phap phn tch/thít ḱ hương ₫́i tương. ƒ Va hin nay ta co 1 qui trnh phat trỉn ph̀n m̀m hơp nh́t dưa trn ngn ngư UML. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 10 5
  7. Đử́i tương (Object) ~ M hnh ₫́i tương quan nim chương trnh bao g̀m cac ₫́i tương sinh śng va tương tac vơi nhau. ~ Đ́i tương bao g̀m : ƒ thuc tnh (dư liu) : mang 1 gia trị nh́t ₫ịnh tai tưng thơi ₫ỉm. ƒ tac vu (operation) : thưc hin 1 cng vic nao ₫o. Implementation (class) Interface (abstract type) Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 11 Kiù̉u trưu tương (Abstract type) ~ Abstract type (type) ₫ịnh nghĩa interface sư dung ₫́i tương. ~ Interface la tp cac entry ma bn ngoai co th̉ giao típ vơi ₫́i tương. ~ Dung signature ₫̉ ₫ịnh nghĩa m̃i entry, Signature g̀m : ƒ tn method (operation) ƒ danh sach ₫́i ś hnh thưc, m̃i ₫́i ś ₫ươc ₫ăc ta bơi 3 thuc tnh : tn, type va chìu chuỷn ₫ng (IN, OUT, INOUT). ƒ ₫ăc ta chưc năng cua method (thương la chu thch). ~ Dung abstract type (chư khng phai class) ₫̉ ₫ăc ta kỉu cho bín, thuc tnh, tham ś hnh thưc. ~ User khng c̀n quan tm ₫́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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 12 6
  8. Class (Implementation) ~ Class ₫ịnh nghĩa chi tít hin thưc ₫́i tương : ƒ ₫ịnh nghĩa cac thuc tnh dư liu : gia trị cua t́t ca thuc tnh xac ₫ịnh trang thai cua ₫́i tương. ƒ kỉu cua thuc tnh co th̉ la type c̉ ₫ỉn hay abstract type, trong trương hơp sau thuc tnh 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 khng c̀n quan tn ₫́n class cua ₫́i tương. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 13 Vủ du vù̀ class trong Java class abstract HTMLObject { protected static final int LEFT = 0; protected static final int MIDDLE = 1; protected static final int RIGHT = 2; private int alignment = LEFT; protected Vector objects = null; HTMLObject( ){ // constructor objects = new Vector (5); } public void setAlignment( int algnmt ) { alignment = algnmt; } public int getAlignment( ) { return alignment; } public abstract String toHTML( ); // abstract operation } Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 14 7
  9. Tủnh bao ₫ong (encapsulation) z Bao ₫ong : che d́u moi chi tít hin thưc cua ₫́i tương, khng cho bn ngoai th́y va truy xút ⇒ tnh ₫c lp cao giưa cac ₫́i tương (hay tnh ḱt dnh - cohesion giưa cac ₫́i tương ŕt th́p). ƒ che d́u cac thuc tnh dư liu : ńu c̀n cho phep truy xút 1 thuc tnh dư liu, ta tao 2 method get/set tương ưng ₫̉ giam sat vic truy xút va che d́u chi tít hin thưc bn trong. ƒ che d́u chi tí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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 15 Tủnh thưa kù́ (inheritance) ~ Tnh thưa ḱ cho phep giam nhe cng sưc ₫ịnh nghĩa type/class : ta co th̉ ₫ịnh nghĩa cac type/class khng phai tư ₫̀u ma băng cach ḱ thưa type/class co săn, ta chỉ ₫ịnh nghĩa thm cac chi tít mơi ma thi (thương kha t). ƒ Đa thưa ḱ hay ₫ơn thưa ḱ. ƒ Ḿi quan h supertype/subtype va superclass/subclass. ƒ co th̉ override cac method cua class cha, ḱ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 khng ₫ung. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 16 8
  10. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 17 Tủnh bao gửp (aggregation) ƒ 1 ₫́i tương co th̉ chưa nhìu ₫́i tương khac tao nn ḿi quan h bao gp 1 cach ₫ qui giưa cac ₫́i tương. ƒ Co 2 goc nhn v̀ tnh bao gp : ngư nghĩa va hin thưc. Goc nhn ngư nghĩa Goc nhn hin thưc O2 O O1 2 O1 O3 O3 Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 18 9
  11. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 19 Thửng ₫iùp (Message) ~ Thng ₫ip la 1 phep goi tac vu ₫́n 1 ₫́i tương tư 1 tham khao. ~ Thng ₫ip bao g̀m 3 ph̀n : ƒ tham khao ₫́n ₫́i tương ₫ch. ƒ tn tac vu mún goi. ƒ danh sach tham ś thưc c̀n truỳn theo (hay nhn v̀ tư) tac vu. ƒ v du : aCircle.SetRadius (3); aCircle.Draw (pWnd); ~ Thng ₫ip la phương tin giao tí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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 20 10
  12. Tủnh ₫a xa (Polymorphism) ~ Cung 1 lnh gơi thng ₫ip ₫́n ₫́i tương thng qua cung 1 tham khao nhưng ơ vị tr/thơi ₫ỉm khac nhau co th̉ gy 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 kch 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 21 Kiù̉m tra kiù̉u (type check) ~ Chăt va dung ḿi quan h 'conformity' (tương thch t̉ng quat). Type A tương thch 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 tn trong A. ƒ danh sach ₫́i ś cua 2 method tương ưng phai băng nhau. ƒ kỉu ₫́i ś OUT hay gia trị return cua method trong A phai tương thch vơi kỉu cua ₫́i ś tương ưng trong B. ƒ kỉu ₫́i ś IN cua method trong B phai tương thch vơi kỉu cua ₫́i ś tương ưng trong A. ƒ kỉu ₫́i ś INOUT cua method trong A phai trung vơi kỉu cua ₫́i ś 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 thch t̉ng quat. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 22 11
  13. Tủnh tử̉ng quat hoa (Generalization) ~ Co 2 ngư nghĩa khac nhau cua tnh t̉ng quat hoa : ƒ class t̉ng quat hoa cho phep san sinh tư ₫ng cac class bnh thương, cac class bnh 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 trnh. ƒ ngươc vơi tnh thưa ḱ : 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 phn tch/thít ḱ ph̀n m̀m. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 23 Tủnh thương tru (persistence) ~ ₫ơi śng cua 1 ₫́i tương ₫c lp vơi ₫ơi ś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 khng con tham khao nao ₫́n no, v tai thơi ₫ỉm nay ₫́i tương la rac. Vic xac ₫ịnh chnh xac 1 ₫́i tương co phai la rac hay khng la 1 vic phưc tap code ưng dung khng ₫ươc phep lam, ₫y la cng vic cua h th́ng thng qua module 'garbage collection'. ƒ vưng b̀n khng phai la vĩnh hăng, mưc ₫ co th̉ la 1 session cua may ao (JVM) hay lu dai (thng qua ₫ĩa cưng, CDROM). Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 24 12
  14. Tử̉ng kù́t ~ M hnh hương ₫́i tương quan nim th́ giơi (hay chương trnh) bao g̀m cac ₫́i tương śng chung va tương tac vơi nhau. ~ Cac ₫ăc ₫ỉm chnh 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 thít lp nn hanh vi cua ₫́i tương. Cac ₫́i tương ₫ươc phn loai băng class. ƒ Cac ₫́i tương tương tac vơi nhau băng cach gơi thng ₫ip. ƒ giưa cac class/₫́i tương co th̉ t̀n tai quan h bao gp, thưa ḱ, t̉ng quat hoa. ƒ Tnh ₫a hnh : ḱt qua cua sư kỉm tra kỉu dưa vao ḿi quan h 'conformity'. ƒ Tnh 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 1: Cac khai nim cơ ban cua m hnh hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 25 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 26 13
  15. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 27 Chỉ hử̃ trơ khai niùm class 1. Dung class ₫̉ ₫ịnh nghĩa kỉu cho cac bín, thuc tnh ⇒ ₫́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 ḱ trong ₫ịnh nghĩa class ⇒ 1 class co th̉ chưa nhì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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 28 14
  16. Class trưu tương (Abstract class) 3. H̃ trơ khai nim "abstract class" ₫̉ ₫ịnh nghĩa class chỉ chưa thng tin interface nhưng khng cho phep dung class nay ₫̉ ₫ịnh nghĩa kỉu cho bín hay thuc tnh. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 29 Tờ̀m vưc truy xuờ́t thanh viùn 4. T̀m vưc truy xút thng tin trong ₫́i tương : private : thng tin bị che d́u hoan toan. protected : chỉ che d́u bn ngoai nhưng cho phep cac ₫́i tương con, chau, chăt truy xút. public : cho phep t́t ca moi nơi truy xút. Friend class : la class ma m̃i function cua no ₫̀u co th̉ truy xút tư do m̃i thanh ph̀n cua class hin tai. Friend function : la function co th̉ truy xú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 vin cua class cha khi thưa ḱ. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 30 15
  17. Hử̃ trơ tủnh ₫a hũnh co chon loc 5. Định nghĩa 'virtual function' ńu mún ap dung tnh ₫a hnh trong vic gơi thng bao yu 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 31 Cac ₫ử́i tương ₫ù̀u tam thơi 6. Cac ₫́i tương chỉ t̀n tai tam thơi trong khng gian process. Tham khao ₫́n ₫́i tương thưc ch́t la pointer cuc b. chương trnh phai tư vít code cho hoat ₫ng save/restore ₫́i tương ńu mú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 quỳ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 tn nhưng 'signature' khac nhau. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 32 16
  18. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 33 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 34 17
  19. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 35 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 36 18
  20. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 37 Hử̃ trơ Class va Interface 1. Chu ýu dung class ₫̉ ₫ịnh nghĩa kỉu cho cac bín, thuc tnh. Co th̉ dung interface ₫̉ ₫ịnh nghĩa kỉu cho cac bín, thuc tnh. Đ́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 khng ₫ươ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 khng tương ₫ương vơi abstract type. 4. Đơn thưa ḱ trong ₫ịnh nghĩa class ⇒ ḿi quan h thưa ḱ giưa cac class kha ₫ơn gian. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 38 19
  21. Hử̃ trơ abstract class 5. H̃ trơ khai nim "abstract class" ₫̉ ₫ịnh nghĩa class chưa thng tin interface va khng cho phep 'instanciate' ₫́i tương. Ban chỉ co th̉ dung class 'abstract class' ₫̉ ₫ăc ta kỉu cho cac bí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 bn 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 39 Tờ̀m vưc truy xuờ́t cac thanh phờ̀n 6. T̀m vưc truy xú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 bn ngoai nhưng cho phep cac ₫́i tương con, chau, chăt truy xút. public : cho phep t́t ca moi nơi truy xút. friendly : cho phep moi ph̀n tư trong package truy xút. Đy la t̀m vưc default va khng co tư khoa t̀m vưc tương minh. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 40 20
  22. Hử̃ trơ package 7. Package la ₫ơn vị quan ly t̀m vưc cua java, co th̉ chưa nhì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 : tn ₫ươc qui ₫ịnh bơi phat bỉu package hay la package default. Nhìu file source co th̉ thuc cung 1package (dung cung tn trong phat bỉu package). Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 41 Hử̃ trơ ₫ờ̀y ₫u tủnh ₫a hũnh 8. T́t ca cac public function ₫ươc quan ly trong 1 danh sach "public function table". ₫ịa chỉ function 1 ₫ịa chỉ function 2 ₫ịa chỉ function 3 ₫ịa chỉ function i ₫ịa chỉ function n Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 42 21
  23. 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 khng 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 quỳ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 tn nhưng 'signature' khac nhau. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 43 Thủ du vù̀ chương trũnh Java import java.net.*; public class getnet { public static void main(String args[]) { try { if(args.length!=1) { System.out.println("Usage: java AddrLookupApp "); return; } InetAddress host = InetAddress.getByName(args[0]); String hostName = host.getHostName(); System.out.println ("Host name : "+hostName); System.out.println ("IP address:"+host.getHostAddress()); } catch (UnknownHostException e) { } } } Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 44 22
  24. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 45 Thủ du vù̀ cac class Java public class AlarmClock { private static final int MAX_CAPACITY = 10; private static final int UNUSED = -1; private static final int NOROOM = -1; private Sleeper[] sleepers = new Sleeper[MAX_CAPACITY]; private long[] sleepFor = new long[MAX_CAPACITY]; public AlarmClock () { for (int i = 0; i < MAX_CAPACITY; i++) sleepFor[i] = UNUSED; } Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 46 23
  25. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 47 Thủ du vù̀ cac class Java private synchronized int findNextSlot() { for (int i = 0; i < MAX_CAPACITY; i++) { if (sleepFor[i] == UNUSED) return i; } return NOROOM; } private synchronized void wakeUpSleeper(int sleeperIndex) { sleepers[sleeperIndex].wakeUp(); sleepers[sleeperIndex] = null; sleepFor[sleeperIndex] = UNUSED; } Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 48 24
  26. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 49 Thủ du vù̀ cac class Java public interface Sleeper { public void wakeUp(); public long ONE_SECOND = 1000;// in milliseconds public long ONE_MINUTE = 60000; // in milliseconds } import java.applet.Applet; import java.awt.Graphics; import java.util.*; import java.text.DateFormat; public class GUIClock extends Applet implements Sleeper { private AlarmClock clock; public void init() { clock = new AlarmClock(); } Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 50 25
  27. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 2: Th du v̀ cac ngn ngư OOP ĐHBach Khoa Tp.HCM Slide 51 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 3 NGUYẽN TẶC DỊCH OOP ) Dịch abstract type ) Dịch class Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 52 26
  28. Tử̉ng quat vù̀ vờ́n ₫ù̀ dịch OOP •Chương trnh la 1tp cac ₫́i tương śng va tương tac l̃n nhau. •Cac ₫́i tương thuc1ś loai nh́t ₫ịnh (n) •M̃i loai ₫́i tương ₫ươc miu ta bơi 1 type + 1 class •Chương trnh la tpn₫ịnh nghĩa type + class •Dịch chương trnh OOP la vong lăp dịch n type + n class. •Ta se miu ta qui trnh dịch 1 type va 1 class Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 53 Dịch 1 abstract type • Abstract type chỉ chưa thng tin trưu tương (interface), khng miu ta sư hin thưc → Ḱt qua vic dịch 1 type chỉ dưng lai cy ngư nghĩa cuatype tương ưng ₫̉ phuc vu vic kỉm tra kỉu, chư khng tao code ma may. •Chỉ c̀n3bươc:duyt tư vưng, phn tch cu phap, phn tch ngư canh. •Nn dung cng cu h̃ trơ như LEX, YACC. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 54 27
  29. Dịch 1 class •Dịch class la cng vic chnh cua chương trnh dịch OOP. •G̀m2cng vic chnh : dịch thuc tnh 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, phn tch cu phap, phn tch ngư canh, tao ma. •Nn dung cng cu h̃ trơ như LEX, YACC. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 55 Dịch thuửc tủnh dư liùu typedef struct { • class → ću truc record // import cacfieldtư ć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 ₫ìu khỉn void proc5 (double d); // tư tao bơi chương trnh dịch void (*pvfaddr)() ; }; } C1; Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 56 28
  30. Dịch thuửc tủnh dư liùu(tt) •m̃i class → 1 record c̉ ₫ỉn. •tn class → tn record. • copy cacfielddư liu cua ću truc sinh ra tư class cha. • chuỷn tưng thuc tnh cua class thanh tưng field cua record, 'tuyt ₫́i hoa' tn cua thuc tnh ₫̉ tranh nhăp nhăng. •thm cacfielddư liu ₫ìu khỉ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 57 Dịch thuửc tủnh dư liùu(tt) •ću trucrecord₫ươc dịch ra ma may thanh1vung nhơ lin tuc co ₫ dai băng ₫ dai cua record. - field C1 o1; C1_o1 db dup (sizeof(C1)) • truy xút1thuc tnh dư liu trơ thanh vic truy xút nhơ dung cach ₫ịnh ₫ịa chỉ chỉ ś : - o1.i = 5; mov bx, C1_o1 mov [bx+4], 5 Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 58 29
  31. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 59 Tao bang ₫ịa chỉ cac method (tt) •tao bang ₫ịa chỉ g̀m C1METHCNT ph̀n tư (C1METHCNT la ś method cuaclasshin hanh, k̉ ca cac method thưa ḱ. •m̃i ph̀n tư ₫ươc nhn dang qua chỉ ś va g̀m2thng tin chnh : tn 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. •thm 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 60 30
  32. 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 xút thuc tnh 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 thng bao:kỉ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 61 Dịch 1 method (tt) •tn method ₫ươc chuỷn tư dang 'tương ₫́i' sang 'tuyt ₫́i' (ńi ḱt tn class vao). •thm tham ś ₫̀u tin cho ham sinh ra : miu ta tham khao ₫́n ₫́i tương ma ham se truy xút cac thuc tnh dư liu. •tn thuc tnh ₫ươc chuỷn tư dang 'tương ₫́i' sang 'tuyt ₫́i' (ńi ḱt tn class vao). •goi ham internal → goi ham nhưng thm tham ś ₫̀u tin. •gơi thng bao3bươc: —kỉm tra, tm, load va anh xa bang ₫ịa chỉ cac method cua ₫́i tương. —tm chỉ ś cua method c̀n goi trong bang (i). —goi gian típ method thng qua ₫ịa chỉ ph̀n tư thư i trong bang. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 62 31
  33. Tử́i ưu hoacodetao ra •co 2v́n ₫̀ lơn trong qua trnh dịch 1 class sang ngn ngư c̉ ₫ỉn. —bang ₫ịa chỉ method chím nhìu ch̃. —t́n thơi gian ₫̉ phuc vu lnh gơi thng bao:kỉm tra, load va anh xa bang ₫ịa chỉ,tm chỉ ś method c̀n goi va goi gian típqua₫ịa chỉ trong bang. •1ś chương trnh dịch tm 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 trnh dịch C++ va cai gia phai tra. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 63 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 lun năm săn trong khng gian cua ưng dung. •m̃i l̀n tao ₫́i tương, bín pvftbl trong ₫́i tương ₫ươc gan ngay ₫ịa chỉ ₫̀u bang method → khng c̀n lam bươc 1 cho m̃i l̀n gơi thng bao. •C++chỉ dung ḿi quan h con/cha trong kỉm tra kỉu → cng vic2₫ươc lam tai thơi ₫ỉm dịch thay v tai thơi ₫ỉm gơi thng bao trong luc chay. •ct tn gơi nhơ method khng 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 quýt theo cơ ch́ ₫a hnh, con cac function khac ₫ươc dịch ra lơi goi trưc típ. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 64 32
  34. 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 trnh phai tư quýt ₫ịnh method nao c̀n xư ly theo cơ ch́ ₫a hnh, ham nao khng?Ńu sư quýt ₫ịnh nay sai th se gy l̃i khi chay, ma la ngươi th kho long quýt ₫ịnh chnh xac. —tnh ₫a hnh chỉ ₫ung giưa cac ₫́i tương co ḿi quan h con/cha, ơ ₫o thư tư cac ₫ịa chỉ method cua moi class con trong bang ₫ịa chỉ lun gíng thư tư cac method tương ưng cua class cha, tuy nhin giưa2 classb́t ky th khng th̉ ₫am bao → kỉm tra kỉu trong C++ khng th̉ nng ćp ln băng cach dung ḿi quan h "conformity". Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 3: Nguyn tăc dịch OOP ĐHBach Khoa Tp.HCM Slide 65 Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cửng nghù Thửng tin Chương 4 QUI TRềNH HƠP NHấT & UML ) Qui trũnh phat triù̉n phờ̀n mù̀m hơp nhờ́t ) Tử̉ng quat vù̀ ngửn ngư mử hũnh UML Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 66 33
  35. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 67 Key concepts When does •Cycle product happen? When does • Phase, Iterations architecture happen? • Process Workflows What does — 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 68 34
  36. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 69 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 70 35
  37. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 71 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 72 36
  38. 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 tioMửn ns Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 73 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 74 37
  39. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 75 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 76 38
  40. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 77 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 78 39
  41. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 79 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 80 40
  42. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 81 Architecture-Centric • Models are vehicles for visualizing, specifying, constructing, and documenting architecture • The Unified Process prescribes the successive refinement of an executable architecture Inception Elaboration Construction Transition time Architecture Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 82 41
  43. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 83 Modeling Elements • Structural elements — class, interface, collaboration, use case, active class, component, node • Behavioral elements — interaction, state machine • Grouping elements — package, subsystem • Other elements — note Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 84 42
  44. Relationships • Dependency • Association • Generalization • Realization Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 85 Extensibility Mechanisms • Stereotype • Tagged value • Constraint Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 86 43
  45. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 87 Diagrams • A diagram is a view into a model — Presented from the aspect of a particular stakeholder — Provides a partial representation of the system — Is semantically consistent with other views • In the UML, there are nine standard diagrams — Static views: use case, class, object, component, deployment — Dynamic views: sequence, collaboration, statechart, activity Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 88 44
  46. Use Case Diagram • Captures system functionality as seen by users Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 89 Use Case Diagram • Captures system functionality as seen by users • Built in early stages of development • Purpose — Specify the context of a system — Capture the requirements of a system — Validate a system’s architecture — Drive implementation and generate test cases • Developed by analysts and domain experts Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 90 45
  47. Class Diagram • Captures the vocabulary of a system Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 91 Class Diagram • Captures the vocabulary of a system • Built and refined throughout development • Purpose — Name and model concepts in the system — Specify collaborations — Specify logical database schemas • Developed by analysts, designers, and implementers Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 92 46
  48. Object Diagram • Captures instances and links Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 93 Object Diagram • Shows instances and links • Built during analysis and design • Purpose — Illustrate data/object structures — Specify snapshots • Developed by analysts, designers, and implementers Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 94 47
  49. Component Diagram • Captures the physical structure of the implementation Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 95 Component Diagram • Captures the physical structure of the implementation • Built as part of architectural specification • Purpose — Organize source code — Construct an executable release — Specify a physical database • Developed by architects and programmers Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 96 48
  50. Deployment Diagram • Captures the topology of a system’s hardware Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 97 Deployment Diagram • Captures the topology of a system’s hardware • Built as part of architectural specification • Purpose — Specify the distribution of components — Identify performance bottlenecks • Developed by architects, networking engineers, and system engineers Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 98 49
  51. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 99 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 100 50
  52. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 101 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 102 51
  53. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 103 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 4: UML & Qui trnh hơp nh́t ĐHBach Khoa Tp.HCM Slide 104 52
  54. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 105 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 yu c̀u la xy dưng m hnh h th́ng ma se ₫ươc xy dưng băng cach dung cac use-case. Cac ₫ỉm băt ₫̀u cho hoat ₫ng nay kha ₫a dang : ƒ tư m hnh nghip vu (business model) cho cac ưng dung nghip vu. ƒ tư m hnh lĩnh vưc (domain model) cho cac ưng dung nhung (embeded). ƒ tư ₫ăc ta yu 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 ću truc). ƒ tư 1 ₫ỉm nao ₫o năm giưa cac ₫ỉm xút phat trn. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 106 53
  55. Cacartifactscí̀ n ta  o ra trong năm băt yóu cí̀ u  M hnh use-case : ƒ actor : ngươi/h th́ng ngoai/thí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 ćp cho actor. — flow of events —cac yu c̀u ₫ăc bit cuause-case ƒ ₫ăc ta kí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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 107 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 108 54
  56. Cacworkerstrong 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 109 Quitrẫ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 110 55
  57. 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 mi 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 ć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 thít ý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: ƒ Tm cac actor cua h th́ng. ƒ Tm cac use cases cua h th́ng. ƒ Miu ta văn tăt v̀ tưng use-case. ƒ Miu ta toan th̉ m hnh use-case. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 111 Tẫm Actors Vic tm cac actor phu thuc vao ₫ỉm xút phat:ńu xút phat tư m hnh nghip vu hay m hnh lĩnh vưc th vic tmactorŕt ₫ơn gian. Con ńu xút phat tư cac y nim mơ h̀ th hay tra lơi cac cu hoi sau : ƒ Ai la ngươi sư dung chưc năng chnh cua h th́ng ? ƒ Ai c̀n sư h̃ trơ tư h th́ng ₫̉ thưc hin cng vic thương nht cua ho ? ƒ Ai phai thưc hin cng vic bao dương, quan trị va giư cho h th́ng hoat ₫ng ? ƒ H th́ng se kỉm soat thít bị ph̀n cưng nao ? ƒ H th́ng ₫ang xy dưng c̀n tương tac vơi nhưng h th́ng khac khng ? H th́ng nao ? ƒ Ai hoăc vt th̉ nao quan tm ₫́n hay chịu anh hương bơi ḱ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 112 56
  58. Tẫm Use-Cases Vic tm cac use-case phu thuc vao ₫ỉm xút phat:ńu xút phat tư m hnh nghip vu hay m hnh lĩnh vưc th vic tmuse-caseŕt ₫ơn gian. Con ńu xút phat tư cac y nim mơ h̀ th hay tra lơi cac cu hoi sau : ƒ Actor yu 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ư thng tin nao cua h th́ng ? ƒ Actor c̀n thí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 khng ? ƒ H th́ng co th̉ h̃ trơ mt ś cng vic thương nht cua actor nao ₫o khng ? Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 113 Mióu ta văn tăt tưng Use-Cases M̃i use-case sau khi tm ₫ươc, nn ₫ươc ₫ăt tn, ₫ươc miu ta băng vai cu t̉ng ḱ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 ₫̉ miu ta m hnh use-case t̉ng th̉, ₫ăc bit la cac ḿ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 : lin ḱ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 114 57
  59. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 115 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 116 58
  60. 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 khng 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 117 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 118 59
  61. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 119 Mióu ta tộ̉ng thó̉ mộ hẫnh Use-Cases Xy dưng cac lươc ₫̀ use-case va cac ₫ăc ta giai thch m hnh 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 ₫̀ miu ta cacuse-casephuc vu cho 1 actor hay 1 use-case nghip vu. ƒ ₫̉ ₫am bao tnh nh́t quan khi miu ta nhìu use-case ₫̀ng thơi, nn xy dưng1bang thu ngư chung (glossary). ƒ m hnh use-case co th̉ ₫ươc t̉ chưc dang cy thư bc nhơ cac package use-case. ƒ xy dưng ₫ăc ta "survey" cho m hnh use-case t̉ng th̉ va nhơ khach hang va ngươi dung kỉm tra, ₫anh gia lai. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 120 60
  62. Săp thư tư ưu tión cacuse-case ƒ cacuse-casetm ₫ươc khng phai thít ýu như nhau, do ₫o kín truc sư c̀n săp x́p thư tư ưu tin chung ₫̉ xac ₫ịnh use-case nao nn ₫ươc phat trỉn trươc, use-case nao ₫ươc phat trỉn sau. ƒ ḱt qua cua hoat ₫ng nay la xy dưng ₫ươc goc nhn kín truc cua m hnh use-case, no ₫ươc dung ₫̉ hoach ₫ịnh cac bươc lăp cung vơi cac ýu t́ khac như nghip vu,kinh t́ Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 121 Chi tió́t hoaUse-Case Muc ₫ch la ₫ăc ta "flow of events" cho tưng use-case : ƒ ću truc ₫ăc ta use-case. ƒ ₫ăc ta use-case bao g̀m nhưng g. ƒ hnh thưc hoa ₫ăc ta use-case. Ću truc ₫ăc ta use-case : ƒ g̀m1lùng cng vic cơ ban va cac lùng phu. Cac lùng phu co th̉ xay ra v cac ly do : ƒ Actor co th̉ chon thưc hin 1 trong nhìu nhanh. ƒ Ń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. ƒ 1ś tai nguyn khng hoat ₫ng t́t lam cho use-case khng hoan t́t cng vic ₫ung cua no. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 122 61
  63. Đăc ta use-case gộ̀m nhưng gẫ ? ƒ nn ₫ị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-caseḱt thuc. ƒ nn ₫ịnh nghĩa trang thai ḱt thuc. ƒ khng cho phep nhìu 'path' thưc thi. ƒ Co th̉ miu ta lùng thi hanh phu trong ₫ăc ta lùng cơ ban. ƒ Đăc ta lùng phu ₫ươc rut trch tư lù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 nguyn trong h th́ng. ƒ Phai miu 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 123 Hẫnh thưc hoa use-case (Formalizing) Khi sư tương tac giưa actor va use-case g̀m nhìu trang thai phưc tap ta nn dung ky thut m hnh trưc quan ₫̉ dĩn ta use- case v no giup nha phn tch hỉu ro hơn v̀ use-case : ƒ lươc ₫̀ trang thaiUMLco th̉ ₫ươc dung ₫̉ miu ta trang thai cuause-caseva sư chuỷn giưa cac trang thai. ƒ lươc ₫̀ hoat ₫ng co th̉ ₫ươc dung ₫̉ miu ta sư chuỷn trang thaichitít hơn dươi dang cac hoat ₫ng. ƒ lươc ₫̀ tương tac co th̉ ₫ươc dung ₫̉ miu ta cac tương tac giưa ₫́i tương use-case va ₫́i tương actor. Khng nn lam dung cac lươc ₫̀ v ₫y la ngn ngư cua nha phat trỉn, cac khach hang va ngươi dung kho long hỉu n̉i. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 124 62
  64. Cí́u truc lai mộ hẫnh Use-Case M hnh use-case ₫ươc ću truc lai ₫̉ : ƒ rut trch cacuse-caset̀ng quat va dung chung bơi cac use- case ₫ăc bit hơn. ƒ rut trch cacuse-casenhim y va phu thm ₫̉ nơi rng use- case khac. Trươc khi hoat ₫ng nay xay ra : ƒ nha phn tch ₫a nhn din tương ₫́i ₫̀y ₫u cac actor va use-case, miu ta chung trong cac lươc ₫̀ ₫̉ ću thanh m hnh use-case t̉ng th̉. ƒ ngươi ₫ăc ta use-case ₫a phat trỉn ₫ăc ta chi tít cho m̃i use-case. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 125 Cí́u truc lai mộ hẫnh Use-Case Cac cng vic cu th̉ : ƒ Nhn dang cacuse-caset̉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 ś ₫ìu lưu y : ƒ Ću truc cac use-case va ḿi quan h giưa chung nn phan anh cac chưc năng thưc t́. ƒ M̃iuse-casec̀n ₫ươc xư ly như 1 artifact ring bit, do ₫o khng nn 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 5: Năm băt yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 126 63
  65. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 127 Muc ₫ẩch cua phín tẩch yóu cí̀u Muc ₫ch cua hoat ₫ng phn tch yu c̀u la xy dưng m hnh phn tch vơi cac ₫ăc ₫ỉm sau : ƒ dung ngn ngư cua nha phat trỉn ₫̉ miu ta m hnh. ƒ th̉ hin goc nhn tư bn trong cua h th́ng. ƒ ₫ươc ću truc tư cacclassphn tch va cac package phn tch. ƒ ₫ươc dung chu ýu bơi nha phat trỉn ₫̉ hỉu cach thưc tao hnh dang h th́ng. ƒ loai trư moichitít dư thưa, khng nh́t quan. ƒ phat hoa cac hin thưc cho cac chưc năng bn trong h th́ng. ƒ ₫ịnh nghĩa cac d̃n xút use-case, m̃i d̃n xútuse-casećp phn tch miu ta sư phn tch 1 use-case. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 128 64
  66. Cacartifactscí̀n tao ra trong phín tẩch yóu cí̀u  M hnh phn tch = h th́ng phn tch : ƒ cacclassphn tch — boundary class — entity class. — control class ƒ cac d̃n xútuse-casećp phn tch : —cac lươc ₫̀ class phn tch —cac lươc ₫̀ tương tac(cng tac, ). — 'flow of events' ơ ćp phn tch —cac yu c̀u ₫ăc bit cuause-case ƒ cac package phn tch ƒ ₫ăc ta kín truc (view of analysis model) Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 129 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 130 65
  67. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 131 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 132 66
  68. Phín tẩch kió́n truc:nhín dang cac package phín tẩch Muc ₫ch cua phn tch kín truc la phat hoa m hnh phn tch va kín truc h th́ng băng cach nhn dang cac package phn tch, cacclass phn tch d̃ th́y va cac yu c̀u ₫ăc bit chung cho h th́ng. Cac package phn tch giup t̉ chưc h th́ng thanh nhưng ₫ơn vị nho d̃ quan ly.M̃i package chưa1ś use-case vơi tnh ch́t sau : ƒ cacuse-caseh̃ trơ cho cung 1 qui trnh 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 phn tch tín trỉn, sư tinh ch́ ću truc cac package se tín trỉn theo. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 133 3loaiclassphín tẩch Co 3loai (stereotype) class phn tch : ƒ class bin (boundary class) m hnh sư tương tac giưa actor va h th́ng ƒ class thưc th̉ (entity class) m hnh thng tin c̀n cho h th́ng, loai thng tin co tnh b̀n vưng, t̀n tai lu dai. ƒ class ₫ìu khỉn (control class) m hnh 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 134 67
  69. 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 yu c̀u, ₫̀ nghị 1ś class thưc th̉ quan trong nh́t(tư 10-20). Cacclassphn tch con lai se ₫ươc nhn dang trong hoat ₫ng phn tch use-case. Cac yu 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: ƒ tnh b̀n vưng. ƒ sư phn tan&₫̀ng thơi. ƒ cac tnh ch́tantoan dư liu. ƒ ₫̀ khang vơi l̃i. ƒ quan ly giao tac. Tnh ch́t cua m̃i yu c̀u ₫ăc bit se ₫ươc cn nhăc sau trong tưng class va tưng d̃n xút use-case. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 135 Phín tẩch use-case Phn tch use-case la ₫̉ : ƒ nhn dang cacclassphn tch 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. ƒ phn ph́i hanh vi cuause-casebăng cach cho cac ₫́i tương phn tch tương tac nhau. ƒ năm băt1ś yu c̀u ₫ăc bit cho d̃n xút use-case. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 136 68
  70. 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₫ìu khỉn, bin, thưc th̉ c̀n thít ₫̉ hin thưcuse-caseva phat hoa tn, trach nhim, thuc tnh va cac ḿ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 thng tin trong ₫ăc ta use-case va trong m hnh lĩnh vưc. ƒ nhn dang class bin cơ sơ cho m̃iclassthưc th̉ vưa tm ₫ươc. ƒ nhn dang class bin trung tm cho m̃iactorla con ngươi. ƒ nhn dang class bin trung tm cho m̃iactorla h th́ng ngoai hay thít bị I/O. ƒ nhn dang class ₫ìu khỉn co trach nhim xư ly trong d̃n xút use-case. Tp hơp cacclassphn tch tham gia vao d̃n xút use-case thanh 1 (hay nhìu) lươc ₫̀ class. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 137 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 138 69
  71. 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 ₫ỉm sau trong lươc ₫̀ cng tac: ƒ p. tư actor gơi1thng bao ₫́nclassbin ₫̉ kch hoat use-case. ƒ m̃iclassphn tch nn co t nh́t1₫́i tương tham gia vao lươc ₫̀ cng tac. ƒ chưa vi ḱt hơp tac vu cu th̉ cho thng bao. ƒ cac ḿi ńi trong lươc ₫̀ cng tac thương la 'instance' cua ḿi quan h ḱt hơp giưa cacclasstương ưng. ƒ chưa tp trung vao thư tư thơi gian cac thng bao. ƒ Lươc ₫̀ cng tac nn xư ly t́t ca ḿ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 nn ₫ươc ₫̉ vao 'flow of events ćp phn tch". Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 139 Lươc ₫ộ̀ cộng tac C̀n chu y cac ₫ỉm sau trong lươc ₫̀ cng tac: ƒ cac thng ₫ip ₫ươc ₫anh ś theo kỉu phn ć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a1thng ₫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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 140 70
  72. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 141 Phín tẩch class Muc ₫ch cua vic phn tch class la : ƒ nhn dang va duy tr cac nghĩa vu,trach nhim cuaclassphn tch dưa vao vai tro cua no trong d̃n xút use-case. ƒ nhn dang va duy tr cac thuc tnh va cac ḿi quan h cuaclass phn tch. ƒ năm băt cac yu c̀u ₫ăc bit lin quan ₫́n vic hin thưcclass phn tch. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 142 71
  73. 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 xútuse-case khac nhau se cho ta 1 ś nghĩa vu cua class. ƒ nghin cưu cac lươc ₫̀ class va lươc ₫̀ tương tac trong cac d̃n xútuse-caseco class tham gia. ƒ ₫i khi c̀n nghin cưu 'flow of events ćp phn tch' cua d̃n xút use-case ₫̉ tm thm cac nghĩa vu cac class. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 143 Phín tẩch class : nhín dang cac thuộc tẩnh M̃i nghĩa vu thương c̀n1ś thuc tnh. Dung cac hương d̃n sau : ƒ tn thuc tnh nn la danh tư. ƒ kỉu thuc tnh ơ ćp phn tch nn ơ ćp y nim, chưa c̀n kỉu cu th̉,nn dung lai kỉu ₫a co khi ₫ăc ta kỉu cho thuc tnh mơi. ƒ ńuclassphn tch qua phưc tap, nn tach1ś thuc tnh phưc tap ra thanh class ring. ƒ thuc tnh cuaclassthưc th̉ thương d̃ th́y. ƒ thuc tnh cuaclassbin giao típ vơi ngươi thương miu ta thng tin ₫ươc xư ly bơiusernhư cac field text, ƒ thuc tnh cuaclassbin giao típ vơi h th́ng ngoai thương miu ta cac tnh ch́t cua giao típ. ƒ thuc tnh cuaclass₫ìu khỉn t khi co. ƒ ₫i khi khng c̀n cac thuc tnh hnh thưc. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 144 72
  74. 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 thng qua cac lươc ₫̀ cng tac. Cac ḿi lin ḱt nay thương la 'instance' cua ḿi quan h ḱt hơp giưa cac class. Cac ḿi lin ḱt nay cung co th̉ am chỉ nhu c̀u v̀ sư gp nhìu ₫́i tương. Ḿi quan h gp nn ₫ươc dung khi cac ₫́i tương miu 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 xy 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 nhìu ₫́i tương (gia ₫nh g̀m cha, me va con). Đ̉ rut trch cac hanh vi chung cua nhìuclassphn tch, ta co th̉ dung class t̉ng quat hoa, nhưng chỉ nn ơ ćp y nim. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 145 Phín tẩch package Muc ₫ch cua phn tch package la : ƒ ₫am bao tưng package phn tch ₫c lp vơi cac package khac nhìu như co th̉ co. ƒ ₫am bao package phn tch hoan thanh muc ₫ch cua no la hin thưc1ś class lĩnh vưc hoăc1ś use-case. ƒ miu 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, ć găng cho tnh ḱt dnh cao băng cach gp cac class co ḿi quan h chưc năng. ƒ han ch́ t́i ₫a sư phu thuc giưa cac package, phn 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 6: Phn tch yu c̀u hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 146 73
  75. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 147 Muc ₫ẩch cua thió́t kó́ Muc ₫ch cua cng vic thít ḱ la : ƒ ₫at tơi sư hỉu bít su săc cac v̀n ₫̀ v̀ cac rang buc va cac yu c̀u khng chưc năng co lin quan ₫́n ngn ngư lp trnh, sư dung lai linh kin, HĐH, cng ngh phn 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 cng vic hin thưc ra nhì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 chnh giưa cac h th́ng con. ƒ co th̉ hỉn thị trưc quan va xem xet bang thít ḱ 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 148 74
  76. Cacartifactscí̀n tao ra trong thió́t kó́  M hnh thít ḱ =h th́ng thít ḱ : ƒ cac h th́ng con ƒ cacclassthít ḱ. ƒ cac interface cua h th́ng con va class. ƒ cac d̃n xútuse-casećp thít ḱ : —cac lươc ₫̀ class —cac lươc ₫̀ tương tac(trnh tư,trang thai, ). — 'flow of events' ơ ćp thít ḱ. —cac yu c̀u ćp hin thưc. ƒ ₫ăc ta kín truc (view of design model)  M hnh b́ tr : ƒ ₫ăc ta kín truc (view of deployment model) Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 149 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 150 75
  77. Đăc ₫ió̉m cua class thió́t kó́ Class thít ḱ la sư trưu tương trưc típ cuaclasshin thưc: ƒ dung ngn ngư lp trnh ₫̉ miu ta class thít ḱ. ƒ thương xac ₫ịnh t̀m vưc cua cac thanh ph̀n. ƒ cac ḿi quan h co y nghĩa trưc típ tơi hin thưc:t̉ng quat hoa → thưa ḱ, quan h gp, ḱt hơp thanh thuc tnh tương ưng. ƒ method trong thít ḱ → method trong hin thưc. ƒ co th̉ delay vic xư ly 1ś yu c̀u tơi luc hin thưc. ƒ class thít ḱ thương co stereotype tương ưng vơi ngn ngư lp trnh : >, >, > ƒ class thít ḱ hin thưc (hay cung ćp) 1 interface. ƒ co th̀ co 1ś class active, nhưng nn t̀n tai trong m hnh process thay v trong m hnh thít ḱ. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 151 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 152 76
  78. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 153 Thió́t kó́ kió́n truc:muc ₫ẩch Muc ₫ch cua thít ḱ kín truc la phat hoa m hnh thít ḱ va m hnh b́ tr cung kín truc cua chung băng cach nhn dang cac v́n ₫̀ sau : ƒ Cac nut tnh toan va cac ću hnh mang cua chung. ƒ Cac h th́ng con va interface cua chung. ƒ Cacclassthít ḱ co y nghĩa kín truc như cacclass chu ₫ng. ƒ Cac cơ ch́ thít ḱ t̉ng quat xư ly cac yu c̀u chung như tnh b̀n vưng, hiu qua, (₫ươc năm băt trong cac class phn tch va cac d̃n xútuse-caseơ ćp phn tch. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 154 77
  79. Thió́t kó́ kió́n truc:nhín dang nut va cí́u hẫnh mang Ću hnh mang vt ly se anh hương ₫́n kín truc ph̀n m̀m, g̀m cac kha canh : ƒ cac nut nao lin quan, kha năng v̀ b nhơ va cng sút tnh cua nut. ƒ kỉu ńi ḱt va kỉu giao thưc nao giưa cac nut. ƒ cac tnh ch́t v̀ sư ńi ḱt va giao thưc như băng thng, ₫ săn sang, ch́t lương ƒ c̀n kha năng tnh 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 155 Thió́t kó́ kió́n truc:nhín dang hó thộ́ng con va interface cua chung Chia cng vic thít ḱ tư ₫̀u hay khi m hnh thít ḱ phat trỉn thanh phưc tap c̀n ₫ươc chia nho.Mt ś 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 ćp ưng dung ƒ nhn dang cac h th́ng con ćp giưa va ćp h th́ng ƒ ₫ịnh nghĩa sư phu thuc giưa cac h th́ng con. ƒ nhn dang giao típ cua cac h th́ng con. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 156 78
  80. 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cclassthít ḱ quan trong v̀ măt kín truc ₫̉ lam tìn ₫̀ cho hoat ₫ng thít ḱ,cac class khac se ₫ươc nhn dang trong vic thít ḱ use-case. ƒ nhn dang cacclassthít ḱ tư cacclassphn tch tương ưng ƒ nhn dang cacclasschu ₫ng khi chu y yu c̀u ₫̀ng thơi trn h th́ng : —cac yu c̀u v̀ hiu qua, ₫ săn sang, throughput cua h th́ng —sư phn tan cua h th́ng trn cac nut. —cac yu c̀u khac như khơi ₫ng, ḱt thuc, tranh deadlock, tranh bao hoa, ću hnh lai cac nut, kha năng ńi ḱt. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 157 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 yu c̀u chung va ₫ăc bit ₫a ₫ươc nhn dang trong ph̀n phn tch (trong cacclassphn tch va cac d̃n xútuse-casećp phn tch), quýt ₫ịnh cach xư ly chung dưa trn cng ngh hin thưc va thít ḱ săn co.Ḱt qua la 1tp cac cơ ch́ thít ḱ t̉ng quat. Cac yu c̀u c̀n xư ly thương lin quan ₫́n: ƒ tnh b̀n vưng. ƒ sư phn tan&₫̀ng thơi. ƒ cac tnh 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 158 79
  81. Thió́t kó́ Use-Case Muc ₫ch cua thít ḱ use-case la : ƒ Nhn dang cacclassthít ḱ 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. ƒ phn tan hanh vi cuause-casebăng cach cho cac object thít ḱ va h th́ng con tương tac nhau. ƒ ₫ịnh nghĩa yu c̀u trn cac tac vu cuaclassthít ḱ, h th́ng con va interface cua chung. ƒ năm băt cac yu c̀u ćp hin thưc cho use-case. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 159 Thió́t kó́ Use-Case : nhín dang cac class thió́t kó́ Nhn dang cac class thít ḱ như sau : ƒ nghin cưu cacclassphn tch tham gia trong d̃n xút use- case ćp phn tch tương ưng, nhn dang cac class thít ḱ ńi vơi cacclassphn tch nay. ƒ nghin cưu cac yu c̀u ₫ăc bit trong d̃n xút use-case ćp phn tch tương ưng, nhn dang cac class thít ḱ hin thưc cac yu c̀u ₫ăc bit nay. ƒ gan nghĩa vu cho cac class thít ḱ tm ₫ươc. ƒ ńu con thíu1vai class c̀n cho vic thít ḱ use-case ₫ăc bit, ky sư use-case nn lin h vơi kín truc sư va ky sư linh kin ₫̉ ban bac. ƒ xy dưng lươc ₫̀ class chưa cac class thít ḱ tm ₫ươc. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 160 80
  82. Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cacobjectthió́t kó́ Dung lươc ₫̀ trnh tư : ƒ lươc ₫̀ trnh tư chưa cac ph̀n tư actor, ₫́i tương thít ḱ va cact.bao giưa chung. ƒ ńu use-case co nhìu lùng ₫ìu khỉn khac nhau, nn tao lươc ₫̀ trnh tư cho tưng lùng. ƒ nn chuỷn lươc ₫̀ cng tac ơ ćp phn tch thanh lươc ₫̀ trnh tư ban ₫̀u, tư ₫o phat trỉn thmchitít. ƒ dung 'flow of events', duyt qua cac bươc trong no ₫̉ quýt ₫ịnh cac tương tac nao c̀n thít giưa cac ₫́i tương thít ḱ va ph̀n tư actor. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 161 Thió́t kó́ Use-Case : mióu ta cac tương tac giưa cacobjectthió́t kó́ Nn chu y cac ghi nhn sau trong vic xy dưng lươc ₫̀ trnh tư : ƒ nn tp trung vao trnh tư trong lươc ₫̀. ƒ actor gơi thng bao ₫́n1₫́i tương thít ḱ ₫̉ yu c̀u thưc hin use-case. ƒ m̃i class thít ḱ nn co t nh́t1₫́i tương tham gia vao lươc ₫̀ trnh tư. ƒ cac message ₫ươc gơi giưa cac ₫ương ₫ơi śng ₫́i tương, co th̉ co tn tam va se trơ thanh tn tac vu tương ưng. ƒ dung label va flow of events ćp thít ḱ ₫̉ b̉ sung lươc ₫̀ trnh tư. ƒ lươc ₫̀ trnh tư nn xư ly t́t ca ḿ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 162 81
  83. 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 mn hoc h tn chỉ thng 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 163 Lươc ₫ộ̀ trẫnh tư Cac thanh ph̀n cua lươc ₫̀ trnh tư : (th du lươc ₫̀ trnh tư cho use-case Login cua h th́ng ₫ăng ky mn hoc h tn chỉ thng 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 164 82
  84. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 165 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 mn hoc h tn chỉ thng qua [ psswd invalid ] [ psswd valid ] Web. Reject Welcome Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 166 83
  85. Thió́t kó́ class Muc ₫ch cua vic thít ḱ class la tao ra class thít ḱ hoan thanh vai tro cua no trong d̃n xút use-case va cac yu c̀u phu. Bao g̀m vic duy tr class thít ḱ va cac kha canh sau cua no : ƒ cac tac vu cua class. ƒ cac thuc tnh cua class. ƒ cac ḿ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́ thít ḱ t̉ng quat nao. ƒ cac yu c̀u co lin 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 ćp. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 167 Thió́t kó́ class : Phat hoa class thió́t kó́ Bươc ₫̀u ta phat hoa cacclassthít ḱ tư cac interface va class phn tch : 1 interface co 1 class thít ḱ,conclassphn tch th : ƒ thít ḱ class bin phu thuc vao cng ngh tao interface : form, activeX control Đ̉ y dung cac prototype giao din vơi user trong bươc trươc. ƒ thít ḱ class thưc th̉ thương phu thuc vao cng ngh database. Vic anh xa tư m hnh hương ₫́i tương sang m hnh dư liu quan h co th̉ c̀nworker,m hnh va cng vic ring. ƒ c̀n tp trung thít ḱ class ₫ìu khỉn, chu y cac nhu c̀u sau : —v̀n ₫̀ phn tan:c̀n nhìuclassthít ḱ trn cac nut khac nhau ₫̉ hin thưc1 class₫ìu khỉn. —v́n ₫̀ hiu qua :nn dung 1 class thít ḱ cho 1 class ₫ìu khỉn —v́n ₫̀ giao tac: class thít ḱ c̀n tch hơp cng ngh quan ly giao tac. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 168 84
  86. Thió́t kó́ class : Nhín dang cac tac vu Nhn dang cac tac vu ma class thít ḱ c̀n cung ćp va t̀m vưc cua chung (dung cu phap ngn ngư lp trnh). Cac ₫̀u vao cua bươc nay la : ƒ cac trach nhim cua b́t ky class phn tch ma d̃n tơiclass thít ḱ.1 trach nhim tương ưng 1 hay nhìu tac vu,nhưng ơ ₫y mơi phat hoa thng ś hnh thưc cac tham ś. ƒ cac yu c̀u ₫ăc bit cua b́t ky class phn tch ma d̃n tơi class thít ḱ. ƒ cac interface ma class thít ḱ phai cung ćp. ƒ d̃n xútuse-casećp thít ḱ ma class tham gia. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 169 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 tnh, c̀n dưa vao cac hương d̃n sau : ƒ chu y thuc tnh cua b́t ky class phn tch ma d̃n tơiclass thít ḱ.1 thuc tnh nay am chỉ 1 hay nhìu thuc tnh cua class thít ḱ. ƒ han ch́ dung kỉu cua ngn ngư lp trnh cho thuc tnh. ƒ ć găng dung kỉu ₫a co. ƒ ńu class thít ḱ qua phưc tap, 1 vai thuc tnh cua no co th̉ tach ra thanh cacclassring. ƒ ńu co qua nhìu thuc tnh hay thuc tnh qua phưc tap, nn dung lươc ₫̀ class ring ₫̉ miu ta thuc tnh. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 170 85
  87. 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 ḿi quan h ḱt hơp&gp cua b́t ky class phn tch ma d̃n tơi class thít ḱ. ƒ tinh ch́ ś ph̀n tư tham gia, tn vai tro,tnh ch́t cua vai tro, class ḱt hơp, ḱt hơp n-ary. ƒ tinh ch́ hương cua ḿi quan h ḱt hơp tư lươc ₫̀ tương tac. Nhn dang ḿi quan h t̉ng quat hoa dung cu phap ngn ngư lp trnh, ńu ngn ngư lp trnh khng h̃ trơ,dung ḿi quan h ḱt hơp, gp ₫̉ thay th́. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 171 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. Miu ta cac method dung ngn ngư tư nhin hay ngn ngư pseudocode. Ńu cung ky sư linh kin thưc hin2khu thít ḱ va hin thưc, ng ta thương t khi ₫ăc ta method trong giai ₫oan thít ḱ. Mt vai ₫́i tương thít ḱ ₫ươc ₫ìu khỉn bơi trang thai:trang thai xac ₫ịnh hanh vi cua no khi nhn1thng bao tư ngoai → miu ta trang thai dung lươc ₫̀ trang thai. Xư ly cac yu 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 172 86
  88. Thió́t kó́ hó thộ́ng con (Subsystem) Muc ₫ch cua vic thít ḱ h th́ng con la : ƒ ₫am bao h th́ng con la ₫c lp vơi nhau nhìu như co th̉ co. ƒ ₫am bao h th́ng con la ₫c lp vơi interface cua no nhìu như co th̉ co. ƒ ₫am bao h th́ng con cung ć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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 173 Thió́t kó́ hó thộ́ng con (Subsystem) G̀m cac cng vic sau : ƒ duy tr sư phu thuc giưa cac h th́ng con (nn thng qua interface), t́i thỉ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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 7: Thít ḱ hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 174 87
  89. 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 Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 8: Hin thưc hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 175 Muc ₫ẩch cua giai ₫oan hión thưc Muc ₫ch cua hin thưc la : ƒ ḱ hoach cac bươc tch hơp h th́ng c̀n thít cho m̃i bươc lăp theo cơ ch́ tăng d̀n(h th́ng ₫ươc hin thưc như chũi cac bươc nho va d̃ quan ly). ƒ phn tan h th́ng băng cach anh xa cac thanh ph̀n kha thi trn cac nut trong m hnh b́ tr (dưa chu ýu vao cacclass chu ₫ng). ƒ hin thưc cac class va h th́ng con thít ḱ. ƒ kỉm tra ₫ơn vị trn cac thanh ph̀n, tch hơp chung vao1 hay nhìufilekha thi trươc khi gơi ₫i kỉm tra tch hơp va kỉm tra h th́ng. Bử mửn Cửng nghù phờ̀n mù̀m Mửn Phõn tớch & Thiết kế hướng ₫ối tượng dựng UML Khoa CNTT Chương 8: Hin thưc hương ₫́i tương ĐHBach Khoa Tp.HCM Slide 176 88