intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng: Phân tích & Thiết kế hướng đối tượng dùng UML - Trương ĐH Bach Khoa Tp. HCM

Chia sẻ: Le Linh Lan | Ngày: | Loại File: PDF | Số trang:175

52
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Máy tính số là thiết bị có thể thực hiện 1 số hữu hạn các chức năng cơ bản (tập lệnh), cơ chế thực hiện các lệnh là tự động từ lệnh đầu cho đến lệnh cuối cùng. Danh sách các lệnh được thực hiện này được gọi là chương trình. Bất kỳ công việc ngoài đời nào cũng có thể được chia thành trình tự nhiều công việc nhỏ hơn.

Chủ đề:
Lưu

Nội dung Text: Bài giảng: Phân tích & Thiết kế hướng đối tượng dùng UML - Trương ĐH Bach Khoa Tp. HCM

  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 Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Khoa CNTT ĐH Bach Khoa Tp.HCM Slide 1 Nöi dung mön hoc 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. 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 ĐH Bach Khoa Tp.HCM Slide 2 1
  2. Tai liïu tham khao chñnh [1] The Unified Software Development Process, Ivar Jacabson, Grady Booch, James Rumbaugh, Addison-Wesley, 1999. [2] Software Engineering - A practitioner's approach, R.S. Pressman, McGraw-Hill, 1997 [3] Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1998. [4] OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999 [5] UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998 [6] Object-Oriented Software Engineering, A Use-Case Driven Approach, I. Jacobson, ACM Press/Addison-Wesley, 1992 [7] Object-Oriented Analysis and Design with Applications, G. Booch, The Benjamin Cummings Publishing Company, 1994 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 ĐH Ba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ÏM CƠ 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 4 2
  3. Nöi dung 1.1 Tư lêp trònh co cếu truc ₫ḯn OOP 1.2 Đö́i tương, thuöc tñnh, tac vu. 1.3 Abstract type va class. 1.4 Tñnh bao ₫ong. 1.5 Tñnh thư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. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 5 Tư lêp trònh co cếu truc ₫ḯn OOP 1. May t nh s ́ la thi ́t bị co th ̉ thưc hi n 1 s ́ hưu han cac chưc năng cơ ban (t p l nh), cơ ch ́ thưc hi n cac l nh la tư ₫ ng tư l nh ₫ ̀u cho ₫ ́n l nh cu ́i cung. Danh sach cac l nh ₫ươc thưc hi n nay ₫ươc goi la chương tr nh. 2. b ́t ky c ng vi c ngoai ₫ơi nao cung co th ̉ ₫ươc chia thanh tr nh tư nhi ̀u c ng vi c nho hơn. Tr nh tư cac c ng vi c nho nay ₫ươc goi la giai thu t giai quy ́t c ng vi c ngoai ₫ơi. M ̃i c ng vi c nho hơn cung co th ̉ ₫ươc chia nho nưa,... ⇒ c ng vi c ngoai ₫ơi la 1 tr nh tư cac l nh may (chương tr nh). 3. v ́n ₫ ̀ m ́u ch ́t cua vi c dung may t nh giai quy ́t v ́n ₫ ̀ ngoai ₫ơi la l p tr nh. Cho ₫ ́n nay, l p tr nh la c ng vi c cua con ngươi (vơi sư trơ giup ngay cang nhi ̀u cua may t nh). 4. cac l nh cua chương tr nh (code) phai tham khao hoăc xư ly (truy xu ́t) th ng tin (dư li u). Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 6 3
  4. Tư lêp trònh co cếu truc ₫ḯn OOP 5. Dư li u cua 1 chương tr nh co th ̉ r ́t nhi ̀u va ₫a dang. Đ ̉ truy xu ́t ₫ung 1 dư li u ta c ̀n : - t n nh n dang. - ki ̉u dư li u mi u ta c ́u truc dư li u. - t ̀m vưc truy xu ́t mi u ta giơi han khach hang truy xu ́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 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 7 Tư lêp trònh co cếu truc ₫ḯn OOP Chương tr nh = c ́u truc dư li u + giai thu t module global data (package) local data entry 'start' of module local data of function Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 8 4
  5. Tư lêp trònh co cếu truc ₫ḯn OOP Chương tr nh = t p cac ₫ ́i tương tương tac nhau ₫ ́i tương (object) local data entry of object local data of operation Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 9 Tö̉ng quat vï̀ hương ₫ö́i tương M h nh hương ₫ ́i tương giơi thi u 1 quan ₫i ̉m l p tr nh (va ph n t ch/thi ́t k ́) khac hăn so vơi trương phai c ̉ ₫i ̉n (co c ́u truc). Băt ₫ ̀u nhen nhom vao nhưng năm cu ́i 60s va ₫ ́n ₫ ̀u 90s th trơ n n r ́t ph ̉ bi ́n trong c ng nghi p ph ̀n m ̀m. Nhưng ng n ngư hương ₫ ́i tương ₫ ̀u ti n : Smalltalk, Eiffel. Sau ₫o xu ́t hi n th m : Object Pascal, C++, Java, C#,… H nh thanh cac phương phap ph n t ch/thi ́t k ́ hương ₫ ́i tương. Va hi n nay ta co 1 qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t dưa tr n ng n ngư UML. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 10 5
  6. Đö́i tương (Object) M h nh ₫ ́i tương quan ni m chương tr nh bao g ̀m cac ₫ ́i tương sinh s ́ng va tương tac vơi nhau. Đ ́i tương bao g ̀m : thu c t nh (dư li u) : mang 1 gia trị nh ́t ₫ịnh tai tưng thơi ₫i ̉m. tac vu (operation) : thưc hi n 1 c ng vi c nao ₫o. Implementation (class) Interface (abstract type) Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Ba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 b n ngoai co th ̉ giao ti ́p vơi ₫ ́i tương. Dung signature ₫ ̉ ₫ịnh nghĩa m ̃i entry, Signature g ̀m : t n method (operation) danh sach ₫ ́i s ́ h nh thưc, m ̃i ₫ ́i s ́ ₫ươc ₫ăc ta bơi 3 thu c t nh : t n, type va chi ̀u chuy ̉n ₫ ng (IN, OUT, INOUT). ₫ăc ta chưc năng cua method (thương la chu th ch). Dung abstract type (chư kh ng phai class) ₫ ̉ ₫ăc ta ki ̉u cho bi ́n, thu c t nh, tham s ́ h nh thưc. User kh ng c ̀n quan t m ₫ ́n class (hi n thưc cu th ̉) cua ₫ ́i tương. Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 12 6
  7. Class (Implementation) Class ₫ịnh nghĩa chi ti ́t hi n thưc ₫ ́i tương : ₫ịnh nghĩa cac thu c t nh dư li u : gia trị cua t ́t ca thu c t nh xac ₫ịnh trang thai cua ₫ ́i tương. ki ̉u cua thu c t nh co th ̉ la type c ̉ ₫i ̉n hay abstract type, trong trương hơp sau thu c t nh chưa tham khao ₫ ́n ₫ ́i tương khac. coding cac method va cac internal function. Định nghĩa cac method tao va xoa ₫ ́i tương. Định nghĩa cac method constructor va destructor. User kh ng c ̀n quan t n ₫ ́n class cua ₫ ́i tương. Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Ba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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 14 7
  8. Tñnh bao ₫ong (encapsulation) Bao ₫ong : che d ́u moi chi ti ́t hi n thưc cua ₫ ́i tương, kh ng cho b n ngoai th ́y va truy xu ́t ⇒ t nh ₫ c l p cao giưa cac ₫ ́i tương (hay t nh k ́t d nh - cohesion giưa cac ₫ ́i tương r ́t th ́p). che d ́u cac thu c t nh dư li u : n ́u c ̀n cho phep truy xu ́t 1 thu c t nh dư li u, ta tao 2 method get/set tương ưng ₫ ̉ giam sat vi c truy xu ́t va che d ́u chi ti ́t hi n thưc b n trong. che d ́u chi ti ́t hi n thưc cac method. che d ́u cac internal function va sư hi n thưc cua chung. Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 15 Tñnh thưa kḯ (inheritance) T nh thưa k ́ cho phep giam nhe c ng sưc ₫ịnh nghĩa type/class : ta co th ̉ ₫ịnh nghĩa cac type/class kh ng phai tư ₫ ̀u ma băng cach k ́ thưa type/class co săn, ta chỉ ₫ịnh nghĩa th m cac chi ti ́t mơi ma th i (thương kha t). Đa thưa k ́ hay ₫ơn thưa k ́. M ́i quan h  supertype/subtype va superclass/subclass. co th ̉ override cac method cua class cha, k ́t qua override chỉ co nghĩa trong ₫ ́i tương class con. Đ ́i tương cua class con co th ̉ ₫ong vai tro cua ₫ ́i tương cha nhưng ngươc lai thương kh ng ₫ung. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 16 8
  9. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 17 Tñnh bao göp (aggregation) 1 ₫ ́i tương co th ̉ chưa nhi ̀u ₫ ́i tương khac tao n n m ́i quan h  bao g p 1 cach ₫  qui giưa cac ₫ ́i tương. Co 2 goc nh n v ̀ t nh bao g p : ngư nghĩa va hi n thưc. Goc nh n ngư nghĩa Goc nh n hi n thưc O1 O2 O2 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 18 9
  10. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 19 Thöng ₫iïp (Message) Th ng ₫i p la 1 phep goi tac vu ₫ ́n 1 ₫ ́i tương tư 1 tham khao. Th ng ₫i p bao g ̀m 3 ph ̀n : tham khao ₫ ́n ₫ ́i tương ₫ ch. t n tac vu mu ́n goi. danh sach tham s ́ thưc c ̀n truy ̀n theo (hay nh n v ̀ tư) tac vu. v du : aCircle.SetRadius (3); aCircle.Draw (pWnd); Th ng ₫i p la phương ti n giao ti ́p (hay tương tac) duy nh ́t giưa cac ₫ ́i tương. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 20 10
  11. 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. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 21 Kiï̉m tra kiï̉u (type check) Chăt va dung m ́i quan h  'conformity' (tương th ch t ̉ng quat). Type A tương th ch vơi type B ⇔ A chưa moi method cua B va ưng vơi tưng method cua B : t ̀n tai 1 method cung t n trong A. danh sach ₫ ́i s ́ cua 2 method tương ưng phai băng nhau. ki ̉u ₫ ́i s ́ OUT hay gia trị return cua method trong A phai tương th ch vơi ki ̉u cua ₫ ́i s ́ tương ưng trong B. ki ̉u ₫ ́i s ́ IN cua method trong B phai tương th ch vơi ki ̉u cua ₫ ́i s ́ tương ưng trong A. ki ̉u ₫ ́i s ́ INOUT cua method trong A phai trung vơi ki ̉u cua ₫ ́i s ́ tương ưng trong B. quan h  so trung hay quan h  con/cha (sub/super) la trương hơp ₫ăc bi t cua quan h  tương th ch t ̉ng quat. 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 22 11
  12. Tñnh tö̉ng quat hoa (Generalization) Co 2 ngư nghĩa khac nhau cua t nh t ̉ng quat hoa : class t ̉ng quat hoa cho phep san sinh tư ₫ ng cac class b nh thương, cac class b nh thương tư no chỉ co th ̉ tao ra ₫ ́i tương. Thương dung ngư nghĩa nay trong giai ₫oan l p tr nh. ngươc vơi t nh thưa k ́ : supertype/superclass la type/class t ̉ng quat hoa cua cac con cua no. Thương dung ngư nghĩa nay trong giai ₫oan ph n t ch/thi ́t k ́ ph ̀n m ̀m. Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 23 Tñnh thương tru (persistence) ₫ơi s ́ng cua 1 ₫ ́i tương ₫ c l p vơi ₫ơi s ́ng cua ph ̀n tư tao ra no. ₫ ́i tương phai t ̀n tai khi con t nh ́t 1 tham khao ₫ ́n no trong h  th ́ng. ₫ ́i tương phai bị xoa khi kh ng con tham khao nao ₫ ́n no, v tai thơi ₫i ̉m nay ₫ ́i tương la rac. Vi c xac ₫ịnh ch nh xac 1 ₫ ́i tương co phai la rac hay kh ng la 1 vi c phưc tap code ưng dung kh ng ₫ươc phep lam, ₫ y la c ng vi c cua h  th ́ng th ng qua module 'garbage collection'. vưng b ̀n kh ng phai la vĩnh hăng, mưc ₫  co th ̉ la 1 session cua may ao (JVM) hay l u dai (th ng qua ₫ĩa cưng, CDROM). 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 h nh hương ₫ ́i tương ĐH Bach Khoa Tp.HCM Slide 24 12
  13. Tö̉ng kḯt M h nh hương ₫ ́i tương quan ni m th ́ giơi (hay chương tr nh) bao g ̀m cac ₫ ́i tương s ́ng chung va tương tac vơi nhau. Cac ₫ăc ₫i ̉m ch nh cua hương ₫ ́i tương : Bao ₫ong : m ̃i ₫ ́i tương bao g ̀m dư li u va tac vu. Cac tac vu thi ́t l p n n hanh vi cua ₫ ́i tương. Cac ₫ ́i tương ₫ươc ph n loai băng class. Cac ₫ ́i tương tương tac vơi nhau băng cach gơi th ng ₫i p. giưa cac class/₫ ́i tương co th ̉ t ̀n tai quan h  bao g p, thưa k ́, t ̉ng quat hoa. T nh ₫a h nh : k ́t qua cua sư ki ̉m tra ki ̉u dưa vao m ́i quan h  'conformity'. T nh vưng b ̀n : ₫ ́i tương t ̀n tai khi con t nh ́t 1 tham khao ₫ ́n no. Bö mön Cöng nghï phền mï̀m Mön 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 h nh hương ₫ ́i tương ĐH Ba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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 26 13
  14. 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 27 Chỉ hö̃ trơ khai niïm class 1. Dung class ₫ ̉ ₫ịnh nghĩa ki ̉u cho cac bi ́n, thu c t nh ⇒ ₫ ́i tương co th ̉ chưa v t ly ₫ ́i tương khac hay chưa tham khao ₫ ́n ₫ ́i tương khac. 2. Đa thưa k ́ trong ₫ịnh nghĩa class ⇒ 1 class co th ̉ chưa nhi ̀u class con trung nhau ⇒ dung "virtual base class" ₫ ̉ t ́i ưu hoa b  nhơ ₫ ́i tương. 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 28 14
  15. Class trưu tương (Abstract class) 3. H ̃ trơ khai ni m "abstract class" ₫ ̉ ₫ịnh nghĩa class chỉ chưa th ng tin interface nhưng kh ng cho phep dung class nay ₫ ̉ ₫ịnh nghĩa ki ̉u cho bi ́n hay thu c t nh. 1 abstract class la 1 class chưa t nh ́t 1 "pure virtual funtion". class Geometry { // abstract class public: Geometry( ); ~Geometry( ); virtual void Draw( Window *pWnd ) = 0; // pure virtual function protected: int xPos, yPos; double xScale, yScale; COLORREF color; }; Bö mön Cöng nghï phền mï̀m Mön 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 29 Tềm vưc truy xuết thanh viïn 4. T ̀m vưc truy xu ́t th ng tin trong ₫ ́i tương : private : th ng tin bị che d ́u hoan toan. protected : chỉ che d ́u b n ngoai nhưng cho phep cac ₫ ́i tương con, chau, chăt... truy xu ́t. public : cho phep t ́t ca moi nơi truy xu ́t. Friend class : la class ma m ̃i function cua no ₫ ̀u co th ̉ truy xu ́t tư do m ̃i thanh ph ̀n cua class hi n tai. Friend function : la function co th ̉ truy xu ́t tư do m ̃i thanh ph ̀n cua class hi n tai. Co th ̉ han ch ́ t ̀m vưc cua thanh vi n cua class cha khi thưa k ́. 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 30 15
  16. Hö̃ trơ tñnh ₫a hònh co chon loc 5. Định nghĩa 'virtual function' n ́u mu ́n ap dung t nh ₫a h nh trong vi c gơi th ng bao y u c ̀u function nay thưc thi. T ́t ca cac 'virtual function' ₫ươc quan ly trong 1 danh sach "virtual function table". ₫ịa chỉ function 1 ₫ịa chỉ function 2 ₫ịa chỉ function 3 ₫ịa chỉ function i ₫ịa chỉ function n Bö mön Cöng nghï phền mï̀m Mön 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 ng n ngư OOP ĐH Ba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 kh ng gian process. Tham khao ₫ ́n ₫ ́i tương thưc ch ́t la pointer cuc b . chương tr nh phai tư vi ́t code cho hoat ₫ ng save/restore ₫ ́i tương n ́u mu ́n lưu giư/dung lai ₫ ́i tương. VC++ h ̃ trơ hoat ₫ ng save/restore ₫ ́i tương nhơ kha năng 'Serialization'. 7. Co quy ̀n 'override' b ́t ky toan tư hay function nao cua class cha. 8. Cho phep ₫ịnh nghĩa cac ham 'overloaded' : cung t n nhưng 'signature' khac nhau. Bö mön Cöng nghï phền mï̀m Mön 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 32 16
  17. 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 ng n ngư OOP ĐH Ba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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 34 17
  18. 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 ng n ngư OOP ĐH Ba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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 36 18
  19. 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 37 Hö̃ trơ Class va Interface 1. Chu y ́u dung class ₫ ̉ ₫ịnh nghĩa ki ̉u cho cac bi ́n, thu c t nh. Co th ̉ dung interface ₫ ̉ ₫ịnh nghĩa ki ̉u cho cac bi ́n, thu c t nh. Đ ́i tương chỉ co th ̉ chưa tham khao ₫ ́n ₫ ́i tương khac. 2. Phai goi ham tao ₫ ́i tương 1 cach tương minh, nhưng kh ng ₫ươc xoa ₫ ́i tương. class C1 extends RootClass {...} C1 o1; // o1 chưa tham khao ₫ ́n ₫ ́i tương C1 o1 = New C1; 3. Interface chỉ ₫ươc dung trong trương hơp ₫ăc bi t va kh ng tương ₫ương vơi abstract type. 4. Đơn thưa k ́ trong ₫ịnh nghĩa class ⇒ m ́i quan h  thưa k ́ giưa cac class kha ₫ơn gian. 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 38 19
  20. Hö̃ trơ abstract class 5. H ̃ trơ khai ni m "abstract class" ₫ ̉ ₫ịnh nghĩa class chưa th ng tin interface va kh ng cho phep 'instanciate' ₫ ́i tương. Ban chỉ co th ̉ dung class 'abstract class' ₫ ̉ ₫ăc ta ki ̉u cho cac bi ́n hoăc ₫ịnh nghĩa cac class con. class abstract Geometry { // abstract class protected int xPos, yPos; protected double xScale, yScale; protected COLORREF color; ... public abstract Draw(Graphics g); // abstract function ... }; Abstract class co th ̉ chưa ₫ ̀y ₫u cac hi n thưc b n trong, nhưng thương chỉ co chưa cac 'abstract function'. Bö mön Cöng nghï phền mï̀m Mön 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 ng n ngư OOP ĐH Ba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 xu ́t cac thanh ph ̀n trong ₫ ́i tương : private : thanh ph ̀n bị che d ́u hoan toan. protected : che d ́u b n ngoai nhưng cho phep cac ₫ ́i tương con, chau, chăt... truy xu ́t. public : cho phep t ́t ca moi nơi truy xu ́t. friendly : cho phep moi ph ̀n tư trong package truy xu ́t. Đ y la t ̀m vưc default va kh ng co tư khoa t ̀m vưc tương minh. Bö mön Cöng nghï phền mï̀m Mön 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 ng n ngư OOP ĐH Bach Khoa Tp.HCM Slide 40 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2