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

1.Ôn lại một số khái niệm cơ bản của hướng đối tượng,các ngôn ngữ hướng đối tượng thường dùng,cơ chế dịch các type/class sang ngôn ngữ máy 2.Ôn lại quy trình phát triển phần mềm hợp nhất 3.Ôn lại ngôn ngữ UML được dùng để miêu tả các artifacts của quy trình phát triển phần mềm hợp nhất 4. Giới thiệu các mẫu thiết kế hướng đối tượng được dùng phổ biến trong các ứng dụng hiện hành và các ứng dụng trong tương lai

pdf175 trang | Chia sẻ: diunt88 | Lượt xem: 2443 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Phân tích và thiết kế hướng đối tượng băng UML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 1 Trương Đai hoc Bach Khoa Tp. Hö̀ Chñ Minh Khoa Cöng Nghï Thöng Tin Mön hoc PHÂN TÍCH & THIẾT KẾ HƯỚNG ĐỐI TƯỢNG DÙNG UML Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 2 1. ûn lai 1 sú́ khai niøm cơ ban cua hương ₫ú́i tương, cac ngún ngư hương ₫ú́i tương thương dung, cơ chǿ dịch cac type/class sang ngún ngư cú̉ ₫iø̉n (ngún ngư may). 2. ûn lai qui trěnh phat triø̉n phö̀n mø̀m hơp nhö́t. 3. ûn lai ngún ngư UML ₫ươc dung ₫ø̉ miøu ta cac artifacts cua qui trěnh phat triø̉n phö̀n mø̀m hơp nhö́t. 4. Giơi thiøu cac mö̃u thiǿt kǿ hương ₫ú́i tương ₫ươc dung phú̉ biǿn trong cac ưng dung hiøn hanh va cac ưng dung tương lai. Nöi dung mön hoc 2Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 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 Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 4 Trương Đai hoc Bach Khoa Tp. Hö̀ Chñ Minh Khoa Cöng Nghï Thöng Tin Chương 1 CAC KHAI NIÏM CƠ BAN CUA MÖ HÒNH HƯƠNG ĐÖI TƯƠNG Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 3Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 5 Nöi dung 1.1 Tư lêp trònh co cếu truc ₫ḯn OOP 1.2 Đö́i tương, thuöc tñnh, tac vu. 1.3 Abstract type va class. 1.4 Tñnh bao ₫ong. 1.5 Tñnh thưa kḯ va cơ chḯ 'override'. 1.6 Tñnh bao göp. 1.7 Thöng ₫iïp, tñnh ₫a hònh va kiï̉m tra kiï̉u. 1.8 Tñnh tö̉ng quat hoa. 1.9 Tñnh vưng bï̀n. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 6 1. May tĚnh sú́ la thiǿt bị co thø̉ thưc hiøn 1 sú́ hưu han cac chưc năng cơ ban (töp lønh), cơ chǿ thưc hiøn cac lønh la tư ₫úng tư lønh ₫ö̀u cho ₫ǿn lønh cuú́i cung. Danh sach cac lønh ₫ươc thưc hiøn nay ₫ươc goi la chương trěnh. 2. bö́t ky cúng viøc ngoai ₫ơi nao cung co thø̉ ₫ươc chia thanh trěnh tư nhiø̀u cúng viøc nho hơn. Trěnh tư cac cúng viøc nho nay ₫ươc goi la giai thuöt giai quyǿt cúng viøc ngoai ₫ơi. Mú̃i cúng viøc nho hơn cung co thø̉ ₫ươc chia nho nưa,... ⇒ cúng viøc ngoai ₫ơi la 1 trěnh tư cac lønh may (chương trěnh). 3. vö́n ₫ø̀ mö́u chú́t cua viøc dung may tĚnh giai quyǿt vö́n ₫ø̀ ngoai ₫ơi la löp trěnh. Cho ₫ǿn nay, löp trěnh la cúng viøc cua con ngươi (vơi sư trơ giup ngay cang nhiø̀u cua may tĚnh). 4. cac lønh cua chương trěnh (code) phai tham khao hoăc xư ly (truy xuö́t) thúng tin (dư liøu). Tư lêp trònh co cếu truc ₫ḯn OOP Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 4Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 7 Tư lêp trònh co cếu truc ₫ḯn OOP Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 5. Dư liøu cua 1 chương trěnh co thø̉ rö́t nhiø̀u va ₫a dang. Đø̉ truy xuö́t ₫ung 1 dư liøu ta cö̀n : - tøn nhön dang. - kiø̉u dư liøu miøu ta cö́u truc dư liøu. - tö̀m vưc truy xuö́t miøu ta giơi han khach hang truy xuö́t dư liøu. 6. Chương trěnh cú̉ ₫iø̉n = giai thuöt + dư liøu. 7. Chương trěnh con (function, subroutine,...) cho phep cö́u truc chương trěnh, sư dung lai code... 8. Chương trěnh cú̉ ₫iø̉n co cö́u truc phön cö́p như sau : Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 8 Chương trěnh = cö́u truc dư liøu + giai thuöt entry 'start' global datamodule (package) local data of module local data of function Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Tư lêp trònh co cếu truc ₫ḯn OOP 5Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 9 Chương trěnh = töp cac ₫ú́i tương tương tac nhau entry ₫ú́i tương (object) local data of object local data of operation Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Tư lêp trònh co cếu truc ₫ḯn OOP Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 10 Tö̉ng quat vï̀ hương ₫ö́i tương ƒ Mú hěnh hương ₫ú́i tương giơi thiøu 1 quan ₫iø̉m löp trěnh (va phön tĚch/thiǿt kǿ) khac hăn so vơi trương phai cú̉ ₫iø̉n (co cö́u truc). ƒ Băt ₫ö̀u nhen nhom vao nhưng năm cuú́i 60s va ₫ǿn ₫ö̀u 90s thě trơ nøn rö́t phú̉ biǿn trong cúng nghiøp phö̀n mø̀m. ƒ Nhưng ngún ngư hương ₫ú́i tương ₫ö̀u tiøn : Smalltalk, Eiffel. Sau ₫o xuö́t hiøn thøm : Object Pascal, C++, Java, C#,… ƒ Hěnh thanh cac phương phap phön tĚch/thiǿt kǿ hương ₫ú́i tương. ƒ Va hiøn nay ta co 1 qui trěnh phat triø̉n phö̀n mø̀m hơp nhö́t dưa trøn ngún ngư UML. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 6Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 11 Đö́i tương (Object) ~ Mú hěnh ₫ú́i tương quan niøm chương trěnh bao gú̀m cac ₫ú́i tương sinh sú́ng va tương tac vơi nhau. ~ Đú́i tương bao gú̀m : ƒ thuúc tĚnh (dư liøu) : mang 1 gia trị nhö́t ₫ịnh tai tưng thơi ₫iø̉m. ƒ tac vu (operation) : thưc hiøn 1 cúng viøc nao ₫o. Interface (abstract type) Implementation (class) Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 12 Kiï̉u trưu tương (Abstract type) ~ Abstract type (type) ₫ịnh nghĩa interface sư dung ₫ú́i tương. ~ Interface la töp cac entry ma bøn ngoai co thø̉ giao tiǿp vơi ₫ú́i tương. ~ Dung signature ₫ø̉ ₫ịnh nghĩa mú̃i entry, Signature gú̀m : ƒ tøn method (operation) ƒ danh sach ₫ú́i sú́ hěnh thưc, mú̃i ₫ú́i sú́ ₫ươc ₫ăc ta bơi 3 thuúc tĚnh : tøn, type va chiø̀u chuyø̉n ₫úng (IN, OUT, INOUT). ƒ ₫ăc ta chưc năng cua method (thương la chu thĚch). ~ Dung abstract type (chư khúng phai class) ₫ø̉ ₫ăc ta kiø̉u cho biǿn, thuúc tĚnh, tham sú́ hěnh thưc. ~ User khúng cö̀n quan töm ₫ǿn class (hiøn thưc cu thø̉) cua ₫ú́i tương. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 7Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 13 Class (Implementation) ~ Class ₫ịnh nghĩa chi tiǿt hiøn thưc ₫ú́i tương : ƒ ₫ịnh nghĩa cac thuúc tĚnh dư liøu : gia trị cua tö́t ca thuúc tĚnh xac ₫ịnh trang thai cua ₫ú́i tương. ƒ kiø̉u cua thuúc tĚnh co thø̉ la type cú̉ ₫iø̉n hay abstract type, trong trương hơp sau thuúc tĚnh chưa tham khao ₫ǿn ₫ú́i tương khac. ƒ coding cac method va cac internal function. ~ Định nghĩa cac method tao va xoa ₫ú́i tương. ~ Định nghĩa cac method constructor va destructor. ~ User khúng cö̀n quan tön ₫ǿn class cua ₫ú́i tương. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 14 Vñ du vï̀ class trong Java class abstract HTMLObject { protected static final int LEFT = 0; protected static final int MIDDLE = 1; protected static final int RIGHT = 2; private int alignment = LEFT; protected Vector objects = null; HTMLObject( ){ // constructor objects = new Vector (5); } public void setAlignment( int algnmt ) { alignment = algnmt; } public int getAlignment( ) { return alignment; } public abstract String toHTML( ); // abstract operation } Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 8Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 15 Tñnh bao ₫ong (encapsulation) z Bao ₫ong : che dö́u moi chi tiǿt hiøn thưc cua ₫ú́i tương, khúng cho bøn ngoai thö́y va truy xuö́t ⇒ tĚnh ₫úc löp cao giưa cac ₫ú́i tương (hay tĚnh kǿt dĚnh - cohesion giưa cac ₫ú́i tương rö́t thö́p). ƒ che dö́u cac thuúc tĚnh dư liøu : nǿu cö̀n cho phep truy xuö́t 1 thuúc tĚnh dư liøu, ta tao 2 method get/set tương ưng ₫ø̉ giam sat viøc truy xuö́t va che dö́u chi tiǿt hiøn thưc bøn trong. ƒ che dö́u chi tiǿt hiøn thưc cac method. ƒ che dö́u cac internal function va sư hiøn thưc cua chung. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 16 Tñnh thưa kḯ (inheritance) ~ TĚnh thưa kǿ cho phep giam nhe cúng sưc ₫ịnh nghĩa type/class : ta co thø̉ ₫ịnh nghĩa cac type/class khúng phai tư ₫ö̀u ma băng cach kǿ thưa type/class co săn, ta chỉ ₫ịnh nghĩa thøm cac chi tiǿt mơi ma thúi (thương kha Ět). ƒ Đa thưa kǿ hay ₫ơn thưa kǿ. ƒ Mú́i quan hø supertype/subtype va superclass/subclass. ƒ co thø̉ override cac method cua class cha, kǿt qua override chỉ co nghĩa trong ₫ú́i tương class con. ƒ Đú́i tương cua class con co thø̉ ₫ong vai tro cua ₫ú́i tương cha nhưng ngươc lai thương khúng ₫ung. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 9Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 17 Vñ du vï̀ thưa kḯ va override - Java class Geometry { public Draw(Graphics g); protected int xPos, yPos; protected double xScale, yScale; protected COLORREF color; }; class Line extends Geometry { int xPos2, yPos2; // other attributes... public Draw(Graphics g) { // cac lønh ve ₫oan thăng } } Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 18 Tñnh bao göp (aggregation) ƒ 1 ₫ú́i tương co thø̉ chưa nhiø̀u ₫ú́i tương khac tao nøn mú́i quan hø bao gúp 1 cach ₫ø qui giưa cac ₫ú́i tương. ƒ Co 2 goc nhěn vø̀ tĚnh bao gúp : ngư nghĩa va hiøn thưc. O1 O2 O3 Goc nhěn ngư nghĩa Goc nhěn hiøn thưc O1 O2 O3 Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 10 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 19 Vñ du vï̀ bao göp - C++ class Geometry { // abstract base class public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ) = 0; // abstract operation protected: int xPos, yPos; double xScale, yScale; COLORREF color; }; class Group : public Geometry { public: Group( ); ~Group( ); virtual void Draw( Window *pWnd ); // override private: Geometry **ppGeo; // pointer container int geoCount; }; Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 20 Thöng ₫iïp (Message) ~ Thúng ₫iøp la 1 phep goi tac vu ₫ǿn 1 ₫ú́i tương tư 1 tham khao. ~ Thúng ₫iøp bao gú̀m 3 phö̀n : ƒ tham khao ₫ǿn ₫ú́i tương ₫Ěch. ƒ tøn tac vu muú́n goi. ƒ danh sach tham sú́ thưc cö̀n truyø̀n theo (hay nhön vø̀ tư) tac vu. ƒ vĚ du : aCircle.SetRadius (3); aCircle.Draw (pWnd); ~ Thúng ₫iøp la phương tiøn giao tiǿp (hay tương tac) duy nhö́t giưa cac ₫ú́i tương. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 11 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 21 Tñnh ₫a xa (Polymorphism) ~ Cung 1 lønh gơi thúng ₫iøp ₫ǿn ₫ú́i tương thúng qua cung 1 tham khao nhưng ơ vị trĚ/thơi ₫iø̉m khac nhau co thø̉ göy ra viøc thưc thi method khac nhau cua cac ₫ú́i tương khac nhau. T1 p1; // C1 va C2 la 2 class hiøn thưc T1 ... p1 = New C1; // tao ₫ú́i tương C1, gan tham khao vao p1 p1.meth1(...); ... p1 = New C2; // tao ₫ú́i tương C2, gan tham khao vao p1 p1.meth1(...); Lønh p1.meth1(...); ơ 2 vị trĚ khac nhau kĚch hoat 2 method khac nhau cua 2 class khac nhau. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 22 Kiï̉m tra kiï̉u (type check) ~ Chăt va dung mú́i quan hø 'conformity' (tương thĚch tú̉ng quat). Type A tương thĚch vơi type B ⇔ A chưa moi method cua B va ưng vơi tưng method cua B : ƒ tú̀n tai 1 method cung tøn trong A. ƒ danh sach ₫ú́i sú́ cua 2 method tương ưng phai băng nhau. ƒ kiø̉u ₫ú́i sú́ OUT hay gia trị return cua method trong A phai tương thĚch vơi kiø̉u cua ₫ú́i sú́ tương ưng trong B. ƒ kiø̉u ₫ú́i sú́ IN cua method trong B phai tương thĚch vơi kiø̉u cua ₫ú́i sú́ tương ưng trong A. ƒ kiø̉u ₫ú́i sú́ INOUT cua method trong A phai trung vơi kiø̉u cua ₫ú́i sú́ tương ưng trong B. Ö quan hø so trung hay quan hø con/cha (sub/super) la trương hơp ₫ăc biøt cua quan hø tương thĚch tú̉ng quat. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 12 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 23 Tñnh tö̉ng quat hoa (Generalization) ~ Co 2 ngư nghĩa khac nhau cua tĚnh tú̉ng quat hoa : ƒ class tú̉ng quat hoa cho phep san sinh tư ₫úng cac class běnh thương, cac class běnh thương tư no chỉ co thø̉ tao ra ₫ú́i tương. Thương dung ngư nghĩa nay trong giai ₫oan löp trěnh. ƒ ngươc vơi tĚnh thưa kǿ : supertype/superclass la type/class tú̉ng quat hoa cua cac con cua no. Thương dung ngư nghĩa nay trong giai ₫oan phön tĚch/thiǿt kǿ phö̀n mø̀m. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 24 Tñnh thương tru (persistence) ~ ₫ơi sú́ng cua 1 ₫ú́i tương ₫úc löp vơi ₫ơi sú́ng cua phö̀n tư tao ra no. ƒ ₫ú́i tương phai tú̀n tai khi con Ět nhö́t 1 tham khao ₫ǿn no trong hø thú́ng. ƒ ₫ú́i tương phai bị xoa khi khúng con tham khao nao ₫ǿn no, vě tai thơi ₫iø̉m nay ₫ú́i tương la rac. Viøc xac ₫ịnh chĚnh xac 1 ₫ú́i tương co phai la rac hay khúng la 1 viøc phưc tap code ưng dung khúng ₫ươc phep lam, ₫öy la cúng viøc cua hø thú́ng thúng qua module 'garbage collection'. ƒ vưng bø̀n khúng phai la vĩnh hăng, mưc ₫ú co thø̉ la 1 session cua may ao (JVM) hay løu dai (thúng qua ₫ĩa cưng, CDROM). Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương 13 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 25 Tö̉ng kḯt ~ Mú hěnh hương ₫ú́i tương quan niøm thǿ giơi (hay chương trěnh) bao gú̀m cac ₫ú́i tương sú́ng chung va tương tac vơi nhau. ~ Cac ₫ăc ₫iø̉m chĚnh cua hương ₫ú́i tương : ƒ Bao ₫ong : mú̃i ₫ú́i tương bao gú̀m dư liøu va tac vu. Cac tac vu thiǿt löp nøn hanh vi cua ₫ú́i tương. Cac ₫ú́i tương ₫ươc phön loai băng class. ƒ Cac ₫ú́i tương tương tac vơi nhau băng cach gơi thúng ₫iøp. ƒ giưa cac class/₫ú́i tương co thø̉ tú̀n tai quan hø bao gúp, thưa kǿ, tú̉ng quat hoa. ƒ TĚnh ₫a hěnh : kǿt qua cua sư kiø̉m tra kiø̉u dưa vao mú́i quan hø 'conformity'. ƒ TĚnh vưng bø̀n : ₫ú́i tương tú̀n tai khi con Ět nhö́t 1 tham khao ₫ǿn no. Chương 1: Cac khai niøm cơ ban cua mú hěnh hương ₫ú́i tương Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 26 Chương 2 THÑ DU VÏ NGÖN NGƯ OOP ) Visual C++ ) Java Chương 2: ThĚ du vø̀ cac ngún ngư OOP Trương Đai hoc Bach Khoa Tp. Hö̀ Chñ Minh Khoa Cöng Nghï Thöng Tin 14 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 27 2.1 Ngön ngư Visual C++ 1. Chỉ hö̃ trơ khai niïm class. 2. Cho phep Đa thưa kḯ. 3. Dung 'abstract class' ₫ï̉ ₫ịnh nghĩa interface. 4. Tềm vưc truy xuết cac thanh phền. 5. Đa hònh co chon loc nhơ 'virtual function' 6. Chỉ hö̃ trơ cac ₫ö́i tương tam. 7. Override method khi thưa kḯ. 8. Co thï̉ ₫ịnh nghĩa function overloaded. Chương 2: ThĚ du vø̀ cac ngún ngư OOP Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 28 Chỉ hö̃ trơ khai niïm class 1. Dung class ₫ø̉ ₫ịnh nghĩa kiø̉u cho cac biǿn, thuúc tĚnh ⇒ ₫ú́i tương co thø̉ chưa vöt ly ₫ú́i tương khac hay chưa tham khao ₫ǿn ₫ú́i tương khac. 2. Đa thưa kǿ trong ₫ịnh nghĩa class ⇒ 1 class co thø̉ chưa nhiø̀u class con trung nhau ⇒ dung "virtual base class" ₫ø̉ tú́i ưu hoa bú nhơ ₫ú́i tương. Chương 2: ThĚ du vø̀ cac ngún ngư OOP 15 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 29 Class trưu tương (Abstract class) 3. Hú̃ trơ khai niøm "abstract class" ₫ø̉ ₫ịnh nghĩa class chỉ chưa thúng tin interface nhưng khúng cho phep dung class nay ₫ø̉ ₫ịnh nghĩa kiø̉u cho biǿn hay thuúc tĚnh. 1 abstract class la 1 class chưa Ět nhö́t 1 "pure virtual funtion". class Geometry { // abstract class public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ) = 0; // pure virtual function protected: int xPos, yPos; double xScale, yScale; COLORREF color; }; Chương 2: ThĚ du vø̀ cac ngún ngư OOP Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 30 Tềm vưc truy xuết thanh viïn 4. Tö̀m vưc truy xuö́t thúng tin trong ₫ú́i tương : private : thúng tin bị che dö́u hoan toan. protected : chỉ che dö́u bøn ngoai nhưng cho phep cac ₫ú́i tương con, chau, chăt... truy xuö́t. public : cho phep tö́t ca moi nơi truy xuö́t. Friend class : la class ma mú̃i function cua no ₫ø̀u co thø̉ truy xuö́t tư do mú̃i thanh phö̀n cua class hiøn tai. Friend function : la function co thø̉ truy xuö́t tư do mú̃i thanh phö̀n cua class hiøn tai. Co thø̉ han chǿ tö̀m vưc cua thanh viøn cua class cha khi thưa kǿ. Chương 2: ThĚ du vø̀ cac ngún ngư OOP 16 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Slide 31 Hö̃ trơ tñnh ₫a hònh co cho