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

pdf
Số trang 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 175 Cỡ tệp 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 2 MB Lượt tải 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 0 Lượt đọc 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 0
Đánh giá 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
4.3 ( 6 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 175 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

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 1 Nöi dung mön hoc 1. 2. 3. 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). n lai qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t. 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 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 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 Mön 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 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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 4 2 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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương 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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 6 3 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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương 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 (package) entry 'start' global data local data of module local data of function 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 8 4 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) entry local data of object local data of operation 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 9 Tö̉ng quat vï̀ hương ₫ö́i tương ƒ M h nh hương ₫ ́i tương giơi thi u 1 quan ₫i ̉m l p tr nh (va ph n t ch/thi ́t k ́) khac hăn so vơi trương phai c ̉ ₫i ̉n (co c ́u truc). ƒ Băt ₫ ̀u nhen nhom vao nhưng năm cu ́i 60s va ₫ ́n ₫ ̀u 90s th trơ n n r ́t ph ̉ bi ́n trong c ng nghi p ph ̀n m ̀m. ƒ Nhưng ng n ngư hương ₫ ́i tương ₫ ̀u ti n : Smalltalk, Eiffel. Sau ₫o xu ́t hi n th m : Object Pascal, C++, Java, C#,… ƒ H nh thanh cac phương phap ph n t ch/thi ́t k ́ hương ₫ ́i tương. ƒ Va hi n nay ta co 1 qui tr nh phat tri ̉n ph ̀n m ̀m hơp nh ́t dưa tr n ng n ngư UML. 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 10 5 Đö́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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 11 Kiï̉u trưu tương (Abstract type) ~ Abstract type (type) ₫ịnh nghĩa interface sư dung ₫ ́i tương. ~ Interface la t p cac entry ma b n ngoai co th ̉ giao ti ́p vơi ₫ ́i tương. ~ Dung signature ₫ ̉ ₫ịnh nghĩa m ̃i entry, Signature g ̀m : ƒ t n method (operation) ƒ danh sach ₫ ́i s ́ h nh thưc, m ̃i ₫ ́i s ́ ₫ươc ₫ăc ta bơi 3 thu c t nh : t n, type va chi ̀u chuy ̉n ₫ ng (IN, OUT, INOUT). ƒ ₫ăc ta chưc năng cua method (thương la chu th ch). ~ Dung abstract type (chư kh ng phai class) ₫ ̉ ₫ăc ta ki ̉u cho bi ́n, thu c t nh, tham s ́ h nh thưc. ~ User kh ng c ̀n quan t m ₫ ́n class (hi n thưc cu th ̉) cua ₫ ́i tương. 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 12 6 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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 13 Vñ du vï̀ class trong Java class abstract HTMLObject { protected static final int LEFT = 0; protected static final int MIDDLE = 1; protected static final int RIGHT = 2; private int alignment = LEFT; protected Vector objects = null; HTMLObject( ){ // constructor objects = new Vector (5); } public void setAlignment( int algnmt ) { alignment = algnmt; } public int getAlignment( ) { return alignment; } public abstract String toHTML( ); // abstract operation } 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 14 7 Tñnh bao ₫ong (encapsulation) z Bao ₫ong : che d ́u moi chi ti ́t hi n thưc cua ₫ ́i tương, kh ng cho b n ngoai th ́y va truy xu ́t ⇒ t nh ₫ c l p cao giưa cac ₫ ́i tương (hay t nh k ́t d nh - cohesion giưa cac ₫ ́i tương r ́t th ́p). ƒ che d ́u cac thu c t nh dư li u : n ́u c ̀n cho phep truy xu ́t 1 thu c t nh dư li u, ta tao 2 method get/set tương ưng ₫ ̉ giam sat vi c truy xu ́t va che d ́u chi ti ́t hi n thưc b n trong. ƒ che d ́u chi ti ́t hi n thưc cac method. ƒ che d ́u cac internal function va sư hi n thưc cua chung. Bö mön Cöng nghï phền mï̀m 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 15 Tñnh thưa kḯ (inheritance) ~ T nh thưa k ́ cho phep giam nhe c ng sưc ₫ịnh nghĩa type/class : ta co th ̉ ₫ịnh nghĩa cac type/class kh ng phai tư ₫ ̀u ma băng cach k ́ thưa type/class co săn, ta chỉ ₫ịnh nghĩa th m cac chi ti ́t mơi ma th i (thương kha t). ƒ Đa thưa k ́ hay ₫ơn thưa k ́. ƒ M ́i quan h  supertype/subtype va superclass/subclass. ƒ co th ̉ override cac method cua class cha, k ́t qua override chỉ co nghĩa trong ₫ ́i tương class con. ƒ Đ ́i tương cua class con co th ̉ ₫ong vai tro cua ₫ ́i tương cha nhưng ngươc lai thương kh ng ₫ung. 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 16 8 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 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 17 Tñnh bao göp (aggregation) ƒ 1 ₫ ́i tương co th ̉ chưa nhi ̀u ₫ ́i tương khac tao n n m ́i quan h  bao g p 1 cach ₫  qui giưa cac ₫ ́i tương. ƒ Co 2 goc nh n v ̀ t nh bao g p : ngư nghĩa va hi n thưc. Goc nh n ngư nghĩa Goc nh n hi n thưc O2 O2 O1 O1 O3 Bö mön Cöng nghï phền mï̀m Khoa CNTT ĐH Bach Khoa Tp.HCM O3 Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 18 9 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: // pointer container Geometry **ppGeo; int geoCount; }; 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 19 Thöng ₫iïp (Message) ~ Th ng ₫i p la 1 phep goi tac vu ₫ ́n 1 ₫ ́i tương tư 1 tham khao. ~ Th ng ₫i p bao g ̀m 3 ph ̀n : ƒ tham khao ₫ ́n ₫ ́i tương ₫ ch. ƒ t n tac vu mu ́n goi. ƒ danh sach tham s ́ thưc c ̀n truy ̀n theo (hay nh n v ̀ tư) tac vu. ƒ v du : aCircle.SetRadius (3); aCircle.Draw (pWnd); ~ Th ng ₫i p la phương ti n giao ti ́p (hay tương tac) duy nh ́t giưa cac ₫ ́i tương. 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 Chương 1: Cac khai ni m cơ ban cua m h nh hương ₫ ́i tương Slide 20 10
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.