Mön hoåc PHÊN TÑCH & THIÏËT KÏ Ë HÛÚÁNG ÀÖ ËI TÛÚ...
Transcript of Mön hoåc PHÊN TÑCH & THIÏËT KÏ Ë HÛÚÁNG ÀÖ ËI TÛÚ...
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 1
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
Mön hoåc
PHÊN TÑCH & THIÏËT KÏËHÛÚÁNG ÀÖËI TÛÚÅNG
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 2
Nội dung mön học1. 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ữ cổ điển, ngôn ngữ máy
2. Quy trình phát triển phần mềm hợp nhất
3. Ngôn ngữ UML được dùng để miêu tả các artifacts của quytrì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ế phần mềm hướng đối tượng đượcdùng phổ biến trong các ứng dụng hiện hành và các ứngdụng tương lai
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 3
Nội dung mön họcChương 1: CAÁC KHAÁI NIÏåM CÚ BAÃN CUÃA MÖÂ HÒNH HÛÚÁNG ÀÖËI TÛÚÅNG
Chương 2: THÑ DUÅ VÏÌ NGÖN NGÛÄ OOP
Chương 3: NGUYÏN TÙÆC DÕCH OOP
Chương 4: QUI TRÒNH HÚÅP NHÊËT & UML
Chương 5: NÙÆM BÙÆT YÏU CÊÌU HÀT
Chương 6: PHÊN TÑCH HÛÚÁNG ÀÖËI TÛÚÅNG
Chương 7: THIÏËT KÏË HÛÚÁNG ÀÖËI TÛÚÅNG
Chương 8: HIÏåN THÛÅC, KIÏÍM THÛÃ
Chương 9: CAÁC MÊÎU THIÏËT KÏË
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 4
Àaánh giaá- Thi cuối kì: 100%
- Cộng điểm (tối đa 10%)
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 5
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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 6
Liïn hïå- Email: [email protected]
- Văn phòng Khoa KH&KT MT
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 7
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
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 8
Nöåi dung1.1 Tûâ lêåp trònh coá cêëu truác àïën OOP1.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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 9
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êåplïå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ïåcnhoã 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ïåcngoaâi àúâi. Möîi cöng viïåc nhoã hún cuäng coá thïí àûúåc chia nhoã nûäa,... ⇒ cöng viïåcngoaâ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ïìucuã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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 10
Tûâ lêåp trònh coá cêëu truác àïën OOP5. 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 :
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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 11
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
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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 12
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
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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 13
Töíng quaát vïì hûúáng àöëi tûúångMö hònh hûúáng àöëi tûúång giúái thiïåu 1 quan àiïím lêåp trònh (vaâ phêntñ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ïnrêë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êëthiïå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ïnngö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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 14
Àöë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öëngvaâ 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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 15
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öåctñ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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 16
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 àõnhtraå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ûúânghúå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 constructor vaâ destructor.User khöng cêìn quan têm àïë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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 17
Vñ duå vïì class trong Javaclass 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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 18
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ïnngoaâi thêëy vaâ truy xuêët ⇒ tñnh àöåc lêåp cao giûäa caác àöëi tûúång (hay tñnhkïët dñnh – coupling 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öåctñnh dûä liïåu, ta taåo 2 method get/set tûúng ûáng àïí giaám saát viïåc truyxuêë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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 19
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ûâatype/class coá sùén, ta chó àõnh nghôa thïm caác chi tiïët múái maâ thöi (thûúângkhaá ñ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ûngngûúå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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 20
Vñ duå vïì thûâa kïë vaâ override - Javaclass 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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 21
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ïå baogöå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.
O1O2
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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 22
Vñ duå vïì bao göåp - C++class Teacher { private:
string m_strName;public:
Teacher(string strName ){
m_strName = strName;}string getName() { return m_strName;}
};
class Department {private:
Teacher *m_teacher; public:
Department(Teacher *pteacher = NULL){
m_teacher = p_teacher;}
};
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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 23
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 thamkhaã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êëtgiûä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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 24
Tñnh àa hònh (Polymorphism)
Cuâng 1 lïånh gúãi thöng àiïåp àïën àöëi tûúång thöng qua cuâng 1 tham khaãonhû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 p1p1.meth1(...);...p1 = New C2; // taåo àöëi tûúång C2, gaán tham khaão vaâo p1p1.meth1(...);
Lïånh p1.meth1(...); úã 2 võ trñ khaác nhau kñch hoaåt 2 method khaác nhaucuã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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 25
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ûângmethod 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ûúngthñ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 àöëisöë 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 àùåcbiïå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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 26
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ângngûä 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áthoáa cuãa caác con cuãa noá. Thûúâng duâng ngûä nghôa naây trong giai àoaånphê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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 27
Tñnh vûäng bïìn (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åithúâi àiïím naây àöëi tûúång laâ raác. Viïåc xaác àõnh chñnh xaác 1 àöëi tûúångcoá 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ãamaá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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 28
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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 29
Chûúng 2
THÑ DUÅ VÏÌ NGÖN NGÛÄ OOPVisual C++Java
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 30
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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 31
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 àöëitûúå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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 32
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ïënhay thuöåc tñnh. 1 abstract class laâ 1 class chûáa ñt nhêët 1 "pure virtual funtion".
class Geometry { // abstract classpublic:
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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 33
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öîithaâ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
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 34
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úãithö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
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 35
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ïëumuöë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.
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 36
Skeleton àõnh nghôa classclass Geometry : Object { // == class Geometry : public Object {public:
Geometry( );~Geometry( );virtual void Draw( Window *pWnd ); // virtual methodBOOL IsDisplayed(void);....
protected:COLORREF color;....
private :int xPos, yPos;double xScale, yScale;...
};class Point : Geometry {};class Line : Geometry { .... };class Polygon : Geometry {....};class Rectangle : Geometry {....};....
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 37
Cêëu truác 1 chûúng trònh Dialog based àún giaãn
InitInstance()
DoModal()
CProgramApp
CProgramDlg
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 38
Cêëu truác 1 chûúng trònh SDI àún giaãn
InitInstance()
CProgramApp
CSingleDocTemplate
CMainFrame
CProgramView CProgramDoc
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 39
Cêëu truác 1 chûúng trònh MDI àún giaãn
InitInstance()
CProgramApp
CMultiDocTemplate
CChildFrame
CProgramView CProgramDoc
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 40
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úå package6. Àa hònh àêìy àuã.7. Chó höî trúå àöëi tûúång taåm trong session JVM8. Override function khi thûâa kïë.9. 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ïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 41
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ûúångchó 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 àöëitûúång.class C1 extends RootClass {...}C1 o1; // o1 chûáa tham khaão àïën àöëi tûúång C1o1 = New C1;
3. Interface chó àûúåc duâng trong trûúâng húåp àùåc biïåt vaâ khöng tûúng àûúng vúáiabstract 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.
Höî trúå Class vaâ Interface
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 42
Höî trúå abstract class5. 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 classprotected 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'.
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 43
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ûåcdefault vaâ khöng coá tûâ khoáa têìm vûåc tûúâng minh.
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 44
7. Package laâ àún võ quaãn lyá têìm vûåc cuãa java, coá thïí chûáa nhiïìu class.package graphics;public class Circle extends Graphic implements Draggable {. . .
}Têët caã moåi phêìn tûã àûúåc àõnh nghôa trong 1 file source àïìu thuöåc 1 package : tïn àûúåc qui àõnh búãi phaát biïíu package hay laâ package default.Nhiïìu file source coá thïí thuöåc cuâng 1package (duâng cuâng tïn trong phaát biïíupackage).
Höî trúå package
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 45
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
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 46
Caác àöëi tûúång àïìu 'taåm thúâi'
9. Caác àöëi tûúång chó töìn taåi taåm thúâi trong 1session chaåy JVM.
Baån coá thïí taåo ra caác àöëi tûúång múái maâ khöng cêìn xoáa noá. Àöëi tûúång seä töìntaåi möåt khi coân tham khaão àïën noá. Module Garbage Collection trong JVM seächõu traách nhiïåm phaát hiïån àöëi tûúång 'raác' vaâ xoáa noá ra khoãi böå nhúá JVM.
10. Coá quyïìn 'override' bêët kyâ function naâo cuãa class cha.
11. Cho pheáp àõnh nghôa caác haâm 'overloaded' : cuâng tïn nhûng 'signature' khaácnhau.
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 47
Thñ duå vïì chûúng trònh Javaimport 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) {...}
}}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 48
Thñ duå vïì chûúng trònh Java
12.34.25AlarmClock
GUIClock
wakeup()
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 49
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;}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 50
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;
}}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 51
Thñ duå vïì caác class Javaprivate 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;
}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 52
Thñ duå vïì caác class Javaprivate class AlarmThread extends Thread {
int mySleeper;AlarmThread(int sleeperIndex) {
super();mySleeper = sleeperIndex;
}public void run() {
try {sleep(sleepFor[mySleeper]);
} catch (InterruptedException e) {}wakeUpSleeper(mySleeper);
}}
}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 53
Thñ duå vïì caác class Javapublic interface Sleeper {
public void wakeUp();public long ONE_SECOND = 1000;// in millisecondspublic 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();}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 54
Thñ duå vïì caác class Javapublic 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);
}}
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 55
Cêu hoãi
Sử dụng các kiến thức tìm được thông qua sách, Internet, so sánh sự khác nhau giữa ngôn ngữ Java và ngôn ngữ Visual C++ về phương diện hướng đốitượng?
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 56
Chûúng 3
NGUYÏN TÙÆC DÕCH OOPDõch abstract typeDõch class
Chûúng 3: Nguyïn tùæc dõch OOP
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 57
• Chûúng trònh laâ 1 têåp caác àöëi tûúång söëng vaâ tûúng taác lêîn nhau.• Caác àöëi tûúång thuöåc 1 söë loaåi nhêët àõnh (n)• Möîi loaåi àöëi tûúång àûúåc miïu taã búãi 1 type + 1 class• Chûúng trònh laâ têåp n àõnh nghôa type + class• Dõch chûúng trònh OOP laâ voâng lùåp dõch n type + n class.• Ta seä miïu taã qui trònh dõch 1 type vaâ 1 class
Töíng quaát vïì vêën àïì dõch OOP
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 58
• Abstract type chó chûáa thöng tin trûâu tûúång (interface), khöngmiïu taã sûå hiïån thûåc → Kïët quaã viïåc dõch 1 type chó dûâng laåicêy ngûä nghôa cuãa type tûúng ûáng àïí phuåc vuå viïåc kiïím tra kiïíu, chûá khöng taåo code maä maáy.
• Chó cêìn 3 bûúác : duyïåt tûâ vûång, phên tñch cuá phaáp, phên tñchngûä caãnh.
• Nïn duâng cöng cuå höî trúå nhû LEX, YACC.
Dõch 1 abstract type
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 59
• Dõch class laâ cöng viïåc chñnh cuãa chûúng trònh dõch OOP.• Göìm 2 cöng viïåc chñnh : dõch thuöåc tñnh dûä liïåu vaâ dõch caác
method (hay caác internal function).• Cêìn àêìy àuã caác bûúác : duyïåt tûâ vûång, phên tñch cuá phaáp, phên
tñch ngûä caãnh, taåo maä.• Nïn duâng cöng cuå höî trúå nhû LEX, YACC.
Dõch 1 class
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 60
• class → cêëu truác recordclass C1 : C0 {
double d;int i ;...
public :int proc4(int i);void proc5 (double d);...
};
Dõch thuöåc tñnh dûä liïåu
typedef struct {
// import caác field tûâ cêëu truác// àûúåc sinh ra tûâ C0
// caác field tûúng ûáng vúái C1double C1_d;int C1_i;...// caác field dûä liïåu àiïìu khiïín// tûå taåo búãi chûúng trònh dõchvoid (*pvfaddr)() ;
} C1;
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 61
Dõch thuöåc tñnh dûä liïåu (tt)
• möîi class → 1 record cöí àiïín.
• tïn class → tïn record.
• copy caác field dûä liïåu cuãa cêëu truác sinh ra tûâ class cha.
• chuyïín tûâng thuöåc tñnh cuãa class thaânh tûâng field cuãa record, 'tuyïåt àöëi hoáa' tïn cuãa thuöåc tñnh àïí traánh nhùåp nhùçng.
• thïm caác field dûä liïåu àiïìu khiïín phuåc vuå cho run-time : thñ duå baãng àõa chócaác method cuãa àöëi tûúång (pvftbl).
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 62
Dõch thuöåc tñnh dûä liïåu (tt)
• cêëu truác record àûúåc dõch ra maä maáy thaânh 1 vuâng nhúá liïn tuåc coá àöå daâibùçng àöå daâi cuãa record.
- field C1 o1; C1_o1 db dup (sizeof(C1))
• truy xuêët 1 thuöåc tñnh dûä liïåu trúã thaânh viïåc truy xuêët ö nhúá duâng caách àõnhàõa chó chó söë :
- o1.i = 5; mov bx, C1_o1mov [bx+4], 5
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 63
class C1 : C0 {int i ;double d;...
public :int proc2();int proc4(int i, double k);void proc5 (double d);...
};
Taåo baãng àõa chó caác method
0 "proc1" C0_proc1
1 "proc2" C1_proc2
2 "proc3" C0_proc3
3 "proc4" C1_proc4
4 "proc5" C1_proc5
5 .... ...
fname faddrpvftbl
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 64
Taåo baãng àõa chó caác method (tt)
• taåo baãng àõa chó göìm C1METHCNT phêìn tûã (C1METHCNT laâ söë method cuãaclass hiïån haânh, kïí caã caác method thûâa kïë.
• möîi phêìn tûã àûúåc nhêån daång qua chó söë vaâ göìm 2 thöng tin chñnh : tïn gúåinhúá cuãa method vaâ àõa chó cuãa method.
• copy baãng àõa chó cuãa class cha àaä coá.
• hiïåu chónh laåi caác àõa chó cuãa caác method bõ override.
• thïm vaâo caác method múái àõnh nghôa trong class hiïån haânh.
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 65
int C1::proc1(int i,double k) {C2 o2;C2 *p2;
C1::i = i;d = k;proc5(d);o2.proc2(i,d);p2 = New(C2);p2->proc2(i,d);....
};
Dõch 1 method
int C1_proc1(C1* p, int i, double k) {C2 o2; C2 *p2;
// truy xuêët thuöåc tñnhp->C1_i = i; p->C1_d = k;// goåi haâmC1_proc5(p,d); C2_proc2(&o2, i,d);// gúãi thöng baáo : kiïím tra, load,// aánh xaå baãng àõa chó methodfor (i = 0; i pvftbl[i].fname)==TRUE) break;
(*pvftbl[i].faddr)(p2,i,d);};
1
2
3
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 66
Dõch 1 method (tt)• tïn method àûúåc chuyïín tûâ daång 'tûúng àöëi' sang 'tuyïåt àöëi' (nöëi kïët tïn class
vaâo).
• thïm tham söë àêìu tiïn cho haâm sinh ra : miïu taã tham khaão àïën àöëi tûúångmaâ haâm seä truy xuêët caác thuöåc tñnh dûä liïåu.
• goåi haâm internal → goåi haâm nhûng thïm tham söë àêìu tiïn.
• gúãi thöng baáo 3 bûúác :– kiïím tra, tòm, load vaâ aánh xaå baãng àõa chó caác method cuãa àöëi tûúång.– tòm chó söë cuãa method cêìn goåi trong baãng (i).– goåi giaán tiïëp method thöng qua àõa chó phêìn tûã thûá i trong baãng.
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 67
Töëi ûu hoáa code taåo ra
• coá 2 vêën àïì lúán trong quaá trònh dõch 1 class sang ngön ngûä cöí àiïín.– baãng àõa chó method chiïëm nhiïìu chöî.– töën thúâi gian àïí phuåc vuå lïånh gúãi thöng baáo : kiïím tra, load vaâ aánh xaå
baãng àõa chó, tòm chó söë method cêìn goåi vaâ goåi giaán tiïëp qua àõa chó trongbaãng.
• 1 söë chûúng trònh dõch tòm caách töëi ûu hoáa caác vêën àïì naây.
• slide sau laâ caác töëi ûu hoáa cuãa chûúng trònh dõch C++ vaâ caái giaá phaãi traã.
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 68
Töëi ûu hoáa code taåo ra (tt)• trong C++, têët caã àöëi tûúång àïìu taåm thúâi vaâ gùæn chùåt vaâo ûáng duång → baãng
àõa chó caác method cuãa caác àöëi tûúång luön nùçm sùèn trong khöng gian cuãa ûángduång.
• möîi lêìn taåo àöëi tûúång, biïën pvftbl trong àöëi tûúång àûúåc gaán ngay àõa chó àêìubaãng method → khöng cêìn laâm bûúác 1 cho möîi lêìn gúãi thöng baáo.
• cöåt tïn gúåi nhúá method khöng cêìn phaãi lûu trûä trong baãng àõa chó caác method.
• chó coá caác virtual function múái àûúåc giaãi quyïët theo cú chïë àa hònh, coân caácfunction khaác àûúåc dõch ra lúâi goåi trûåc tiïëp.
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 69
Töëi ûu hoáa code taåo ra (tt)
• caái giaá phaãi traã cuãa viïåc töëi ûu hoáa trong C++ :
– ngûúâi lêåp trònh phaãi tûå quyïët àõnh method naâo cêìn xûã lyá theo cú chïë àahònh, haâm naâo khöng ? Nïëu sûå quyïët àõnh naây sai thò seä gêy löîi khi chaåy, maâ laâ ngûúâi thò khoá loâng quyïët àõnh chñnh xaác.
Chûúng 3: Nguyïn tùæc dõch OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 70
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êëtTöíng quaát vïì ngön ngûä mö hònh UML
Chûúng 4: UML & Qui trònh húåp nhêët
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 71
New or changed
requirements
New or changed
systemSoftware Engineering
Process
What Is a Process?
• Defines Who is doing What, When to do it, and How to reach a certain goal.
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 72
Key concepts• Cycle
• Phase, Iterations
• Process Workflows– Activity, steps
• Artifacts– models– reports, documents
• Worker: Architect
What does What does happen?happen?
What is What is produced?produced?
Who does Who does it?it?
When does When does architecture happen?architecture happen?
When does When does product happen?product happen?
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 73
Workflows and Models
Requirements
Design
Implementation
Test
Analysis
Use CaseModel
DesignModel
Depl.Model
Impl.Model
AnalysisModel
TestModel
UML diagrams provide views into each model
Each workflow is associated with one or more models.
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 74
Use Case ModelUse CaseDiagrams
CollaborationDiagrams
ComponentDiagrams
DeploymentDiagrams
ObjectDiagrams
StatechartDiagrams
SequenceDiagrams
ClassDiagrams
ActivityDiagrams
Use CaseModel
DesignModel
Depl.Model
Impl.Model
AnalysisModel
TestModel
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 75
Analysis & Design ModelUse CaseDiagrams
CollaborationDiagrams
ComponentDiagrams
DeploymentDiagrams
ObjectDiagrams
StatechartDiagrams
SequenceDiagrams
ClassDiagrams
ActivityDiagrams
Use CaseModel
DesignModel
Depl.Model
Impl.Model
AnalysisModel
TestModel
Incl. subsystems and packages
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 76
Deployment and Implementation ModelUse CaseDiagrams
CollaborationDiagrams
ComponentDiagrams
DeploymentDiagrams
ObjectDiagrams
StatechartDiagrams
SequenceDiagrams
ClassDiagrams
ActivityDiagrams
Use CaseModel
DesignModel
Depl.Model
Impl.Model
AnalysisModel
TestModel
Incl. active classes and components
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 77
Test ModelUse CaseDiagrams
CollaborationDiagrams
ComponentDiagrams
DeploymentDiagrams
ObjectDiagrams
StatechartDiagrams
SequenceDiagrams
ClassDiagrams
ActivityDiagrams
Use CaseModel
DesignModel
Depl.Model
Impl.Model
AnalysisModel
TestModel
Test model refers to all other models and uses corresponding diagrams
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 78
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 79
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 80
Relationships• Dependency• Association• Generalization• Realization
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 81
Extensibility Mechanisms• Stereotype• Tagged value• Constraint
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 82
Models, Views, and Diagrams
Use CaseDiagramsUse CaseDiagramsUse CaseDiagrams
ScenarioDiagramsScenarioDiagramsCollaborationDiagrams
StateDiagramsStateDiagramsComponentDiagrams
ComponentDiagramsComponent
DiagramsDeploymentDiagrams
StateDiagramsStateDiagramsObjectDiagrams
ScenarioDiagramsScenarioDiagramsStatechartDiagrams
Use CaseDiagramsUse CaseDiagramsSequenceDiagrams
StateDiagramsStateDiagramsClassDiagrams
ActivityDiagrams
A model is a completedescription of a systemfrom a particularperspective
Models
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 83
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 84
Use Case Diagram
• Captures system functionality as seen by users
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 85
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 86
Class Diagram
• Captures the vocabulary of a system
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 87
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 88
Object Diagram• Captures instances and links
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 89
Object Diagram
• Shows instances and links• Built during analysis and design• Purpose
– Illustrate data/object structures– Specify snapshots
• Developed by analysts, designers, and implementers
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 90
Component Diagram• Captures the physical structure of the
implementation
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 91
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 92
Deployment Diagram• Captures the
topology of a system’s hardware
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 93
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
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 94
Sequence Diagram• Captures
dynamic behavior (time-oriented)
• Purpose– Model flow of
control– Illustrate typical
scenarios
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 95
Collaboration Diagram• Captures dynamic behavior
(message-oriented)• Purpose
– Model flow of control– Illustrate coordination of
object structure and control
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 96
Statechart Diagram• Captures dynamic behavior (event-oriented)• Purpose
–– Model object lifecycleModel object lifecycle–– Model reactive objects (user interfaces, devices, Model reactive objects (user interfaces, devices,
etc.)etc.)
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 97
Activity Diagram• Captures dynamic
behavior (activity-oriented)
• Purpose– Model business
workflows– Model operations
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 98
Architecture and the UML
OrganizationPackage, subsystem
DynamicsInteractionState machine
Design View Implementation View
Process View
ComponentsClasses, interfaces,collaborations
Active classes
Deployment View
Nodes
Use Case ViewUse cases
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 99
Architecture and Models
Architecture embodies a collection of views of the models
Views
Models
Use CaseModel
DesignModel
Depl.Model
Impl.Model
TestModel
AnalysisModel
Chûúng 4: UML & Qui trònh húåp nhêët
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 100
Chûúng 5
NÙÆM BÙÆT YÏU CÊÌU HÀTCaác artifacts cêìn taåo raCaác workers tham giaQui trònh phên tñch
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 101
Muåc àñch cuãa hoaåt àöång nùæm bùæt yïu cêìu laâ xêy dûång mö hònh hïå thöëng maâ seä àûúåc xêydûång bùçng caách duâng caác use-case. Caác àiïím bùæt àêìu cho hoaåt àöång naây khaá àa daång :
tûâ mö hònh nghiïåp vuå (business model) cho caác ûáng duång nghiïåp vuå.tûâ mö hònh lônh vûåc (domain model) cho caác ûáng duång nhuáng (embeded).tûâ àùåc taã yïu cêìu cuãa hïå thöëng nhûng àûúåc taåo búãi nhoám khaác vaâ/hoùåc duâng caácphûúng phaáp àùåc taã khaác (thñ duå nhû hûúáng cêëu truác).tûâ 1 àiïím naâo àoá nùçm giûäa caác àiïím xuêët phaát trïn.
Muåc àñch cuãa hoaåt àöång nùæm bùæt yïu cêìu
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 102
Mö hònh use-case :actor : ngûúâi/hïå thöëng ngoaåi/thiïët bõ ngoaâi tûúng taác vúái hïå thöënguse-case : caác chûác nùng coá nghôa cuãa hïå thöëng cung cêëp cho actor.
– flow of events– caác yïu cêìu àùåc biïåt cuãa use-case
àùåc taã kiïën truác (view of use-case model)baãng thuêåt ngûäcaác prototype giao diïån vúái user (user-interface prototype)
Caác artifacts cêìn taåo ra trong nùæm bùæt yïu cêìu
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 103
Use-Case Model
Actor
Use-Case System
Use - Case
*
1
*
Caác artifacts cêìn taåo ra trong nùæm bùæt yïu cêìu
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 104
Use-Case Model
System Analyst
chõu traách nhiïåm vïì
Use-case Specifier
User-Interface Designer
Architect
chõu traách nhiïåm vïì chõu traách nhiïåm vïì
chõu traách nhiïåm vïì
Architecture Description
User Interface Prototype
Use-CaseGlossaryActor
Caác workers trong nùæm bùæt yïu cêìu
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 105
Architect
Use-CaseSpecifier
Find Actors & Use-Cases
Qui trònh nùæm bùæt yïu cêìu
User-InterfaceDesigner
System AnalystStructure the
Use-Case Model
Prioritize Use-Cases
Detail a Use-Case
Prototype User-Interface
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 106
Muåc àñch nhêån daång actor vaâ use-case laâ àïí :Giúái haån hïå thöëng vúái möi trûúâng bao quanh noá.Phaát hoåa ai vaâ caái gò seä tûúng taác vúái hïå thöëng vaâ hïå thöëng cung cêëp caác chûácnùng gò.Nùæm bùæt vaâ àõnh nghôa danh saách caác thuêåt ngûä chung thiïët yïëu cho viïåc taåo caácàùåc taã vïì caác chûác nùng cuãa hïå thöëng.
Hoaåt àöång naây göìm 4 bûúác :Tòm caác actor cuãa hïå thöëng.Tòm caác use cases cuãa hïå thöëng.Miïu taã vùæn tùæt vïì tûâng use-case.Miïu taã toaân thïí mö hònh use-case.
Tòm Actors & Use cases
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 107
Viïåc tòm caác actor phuå thuöåc vaâo àiïím xuêët phaát : nïëu xuêët phaát tûâ mö hònh nghiïåp vuåhay mö hònh lônh vûåc thò viïåc tòm actor rêët àún giaãn. Coân nïëu xuêët phaát tûâ caác yá niïåm múhöì thò haäy traã lúâi caác cêu hoãi sau :
Ai laø ngöôøi söû duïng chöùc naêng chính cuûa heä thoáng ?Ai caàn söï hoã trôï töø heä thoáng ñeå thöïc hieän coâng vieäc thöôøng nhaätcuûa hoï ?Ai phaûi thöïc hieän coâng vieäc baûo döôõng, quaûn trò vaø giöõ cho heäthoáng hoaït ñoäng ?Heä thoáng seõ kieåm soaùt thieát bò phaàn cöùng naøo ?Heä thoáng ñang xaây döïng caàn töông taùc vôùi nhöõng heä thoáng khaùchay khoâng ?Ai hoaëc vaät theå naøo quan taâm ñeán hay chòu aûnh höôûng bôûi keátquaû maø heä thoáng phaàn meàm taïo ra ?
Tòm Actors
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 108
Vñ duå vïì Actor
• Buyer– A buyer represents a person who is responsible for buying
goods or services. This person may be an individual or someone within a business organization. The Buyer of goods and services needs the Billing and Payment system to send orders and to pay invoices.
• Seller– A seller represents a person who sells and delivers goods
or services. The seller uses the system to look for new orders and to send order confirmations, invoices, and payment reminders
• Accounting System– The billing and payment system sends verifications of
transactions to the Accounting system.
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 109
Viïåc tòm caác use-case phuå thuöåc vaâo àiïím xuêët phaát : nïëu xuêët phaát tûâ mö hònh nghiïåpvuå hay mö hònh lônh vûåc thò viïåc tòm use-case rêët àún giaãn. Coân nïëu xuêët phaát tûâ caác yániïåm mú höì thò haäy traã lúâi caác cêu hoãi sau :
Actor yeâu caàu chöùc naêng gì cuûa heä thoáng ?Actor caàn phaûi ñoïc, taïo, xoaù, söûa ñoåi hoaëc löu tröõ thoâng tin naøoñoù cuûa heä thoáng khoâng ?Actor caàn thieát phaûi ñöôïc caûnh baùo veà nhöõng söï kieän trong heäthoáng, hay actor caàn phaûi baùo hieäu cho heä thoáng veà vaán ñeà naøoñoù khoâng ?Heä thoáng coù theå hoã trôï moät soá coâng vieäc thöôøng nhaät cuûa actornaøo ñoù hay khoâng ?
Tòm Use-Cases
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 110
Möîi use-case sau khi tòm àûúåc, nïn àûúåc àùåt tïn, àûúåc miïu taã bùçng vaâi cêu töíng kïëtcaá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úái actor.
Duâng lûúåc àöì vaâ caác flow of events àïí miïu taã mö hònh use-case töíng thïí, àùåc biïåt laâ caácmöëi quan hïå giûäa caác use-case vaâ vúái actor.
Quan hïå giûäa caác actors : töíng quaát hoáa (generalization).
Quan hïå giûäa actor vaâ use-case : liïn kïët (association).
Quan hïå giûäa caác use-cases :töíng quaát hoáa.includeextend
Miïu taã vùæn tùæt tûâng Use-Cases
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 111
Caác möëi quan hïå giûäa caác actor vaâ use-cases
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 112
Caác möëi quan hïå giûäa caác use-cases vaâ use-cases
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
Store Manager
Add New User
Remove User
Edit User Information
POS LoginUser Maintenance
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 113
C ustom er
R etail S tore Cu s tom er
Telephone C ustom er
Online Cus tom er
Cus tomers
Caác möëi quan hïå giûäa caác actor vaâ actor
Quan hïå giûäa caác actors : töíng quaát hoáa(generalization).
Thñ duå Customer laâ actor töíng quaát hoáacuãa caác actor Online Customer, Telephone Customer, Retail Store Customer.
Lûu yá actor töíng quaát hoáa thûúângkhöng coá thêåt, noá laâ phêìn tûã trûâutûúång.
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 114
Lûúåc àöì use-case Sales:From Order to Delivery
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
Perform Transaction
Buyer
Order Goods & Services
Confirm Order
Invoice Buyer
Send Reminders
Seller
Accounting System
Pay Overdraft Fee
Pay Invoice
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 115
Xêy dûång caác lûúåc àöì use-case vaâ caác àùåc taã giaãi thñch mö hònh use-case, nhêët laâ caáchthûác maâ caác use-case quan hïå vúái nhau hay vúái caác actor :
lûúåc àöì miïu taã caác use-case phuåc vuå cho 1 actor hay 1 use-case nghiïåpvuå.àïí àaãm baão tñnh nhêët quaán khi miïu taã nhiïìu use-case àöìng thúâi, nïn xêydûång 1 baãng thuêåt ngûä chung (glossary).mö hònh use-case coá thïí àûúåc töí chûác daång cêy thûá bêåc nhúâ caác package use-case.xêy dûång àùåc taã "survey" cho mö hònh use-case töíng thïí vaâ nhúâ khaáchhaâng vaâ ngûúâi duâng kiïím tra, àaánh giaá laåi.
Miïu taã töíng thïí mö hònh Use-Cases
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 116
caác use-case tòm àûúåc khöng phaãi thiïët yïëu nhû nhau, do àoá kiïën truác sûcêìn sùæp xïëp thûå tûå ûu tiïn chuáng àïí xaác àõnh use-case naâo nïn àûúåc phaáttriïín trûúác, use-case naâo àûúåc phaát triïín sau.kïët quaã cuãa hoaåt àöång naây laâ xêy dûång àûúåc goác nhòn kiïën truác cuãa möhònh use-case, noá àûúåc duâng àïí hoaåch àõnh caác bûúác lùåp cuâng vúái caác yïëutöë khaác nhû nghiïåp vuå, kinh tïë...
Sùæp thûá tûå ûu tiïn caác use-case
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 117
Muåc àñch laâ àùåc taã "flow of events" cho tûâng use-case :cêëu truác àùåc taã use-case.àùåc taã use-case bao göìm nhûäng gò.hònh thûác hoáa àùåc taã use-case.
Cêëu truác àùåc taã use-case :göìm 1 luöìng cöng viïåc cú baãn vaâ caác luöìng phuå.
Caác luöìng phuå coá thïí xaãy ra vò caác lyá do :Actor coá thïí choån thûåc hiïån 1 trong nhiïìu nhaánh.Nïëu hún 1 actor duâng use-case, caác hoaåt àöång cuãa hoå coá thïí aãnh hûúãnglêîn nhau.Hïå thöëng coá thïí phaát hiïån löîi nhêåp tûâ actor.1 söë taâi nguyïn khöng hoaåt àöång töët laâm cho use-case khöng hoaân têëtcöng viïåc àuáng cuãa noá.
Chi tiïët hoáa Use-Case
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 118
Vñ duå
• Pay Invoice
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 119
• Pay Invoice
Vñ duå
Chûúng 5: Nùæm bùæt yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 120
Cêu hoãi
Tìm các Actor, Usecase và vẽ mô hình Usecase của hệ thống Đăng kí môn học của trường Đại học Bách khoa TPHCM?
Chûúng 2: Thñ duå vïì caác ngön ngûä OOP
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 121
Chûúng 6
PHÊN TÑCH HÛÚÁNG ÀÖËI TÛÚÅNGCaác artifacts cêìn taåo raCaác workers tham giaQui trònh phên tñch
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
Trường Đại học Bách Khoa Tp. Hồ Chí MinhKhoa Khoa học & Kỹ thuật Máy tính
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 122
Muåc àñch cuãa hoaåt àöång phên tñch yïu cêìu laâ xêy dûång mö hònh phên tñch vúái caác àùåcàiïím sau :
duâng ngön ngûä cuãa nhaâ phaát triïín àïí miïu taã mö hònh.thïí hiïån goác nhòn tûâ bïn trong cuãa hïå thöëng.àûúåc cêëu truác tûâ caác class phên tñch vaâ caác package phên tñch.àûúåc duâng chuã yïëu búãi nhaâ phaát triïín àïí hiïíu caách thûác taåo hònh daång hïå thöëng.loaåi trûâ moåi chi tiïët dû thûâa, khöng nhêët quaán.phaác hoåa caác hiïån thûåc cho caác chûác nùng bïn trong hïå thöëng.
Muåc àñch cuãa phên tñch yïu cêìu
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 123
Use Case Model vs Analysis Model
Ref: Unified SW Development Process
Use Case Model• Described using the language of
the customer• External view of the system• Structured by use cases; gives
structure to the external view• Used primarily as a contract
between the customer and developers on what the system should and should not do.
• May contain redundancies, inconsistencies, etc. among requirements.
• Captures the functionality of the system, including architecturally significant functionality.
• Defines use cases that are further analyzed in the analysis model.
Analysis Model• Described using the language of the developer• Internal view of the system.• Structured by stereotypical analysis classes and
packages; gives structure to the internal view.• Used primarily by developers to understand how the
system should be shaped, ie. designed and implemented.
• Should not contain redundancies, inconsistencies, etc. among requirements.
• Outlines how to realize the functionality within the system, including architecturally significant functionality; works as a first cut at design.
• Defines use-case realizations, each one representing the analysis of a use case from the use case model.
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 124
Mö hònh phên tñch = hïå thöëng phên tñch :caác class phên tñch
– boundary class– entity class.– control class
caác dêîn xuêët use-case cêëp phên tñch :– caác lûúåc àöì class phên tñch– caác lûúåc àöì tûúng taác (cöång taác,...).– 'flow of events' úã cêëp phên tñch– caác yïu cêìu àùåc biïåt cuãa use-case
caác package phên tñchàùåc taã kiïën truác (view of analysis model)
Caác artifacts cêìn taåo ra trong phên tñch yïu cêìu
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 125
Analysis Model
Analysis System
Use-Case Realization - Analysis
Analysis Class
Analysis Package
Caác artifacts cêìn taåo ra trong phên tñch yïu cêìu
* ***
**1
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 126
Analysis Model
Use-CaseEngineer
ComponentEngineerArchitect
Architecture Description
Use-Case Realization -
Analysis
Analysis class
Analysis package
chõu traách nhiïåm vïì chõu traách nhiïåm vïì chõu traách nhiïåm vïì
Caác workers trong phên tñch yïu cêìu
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 127
Architect
Use-CaseEngineer
Architectural Analysis
Analyze a Use-Case
Analyze a Class
Analyze a Package
Qui trònh phên tñch yïu cêìu
ComponentEngineer
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 128
Muåc àñch cuãa phên tñch kiïën truác laâ phaác hoåa mö hònh phên tñch vaâ kiïën truác hïå thöëngbùçng caách nhêån daång caác package phên tñch, caác class phên tñch dïî thêëy vaâ caác yïu cêìuàùåc biïåt chung cho hïå thöëng.
Caác package phên tñch giuáp töí chûác hïå thöëng thaânh nhûäng àún võ nhoã dïî quaãn lyá. Möîipackage chûáa 1 söë use-case vúái tñnh chêët sau :
caác use-case höî trúå cho cuâng 1 qui trònh nghiïåp vuå.caác use-case höî trúå cho cuâng 1 actor.caác use-case coá quan hïå lêîn nhau : töíng quaát hoáa, include vaâ extend.
Theo thúâi gian, khi viïåc phên tñch tiïën triïín, sûå tinh chïë cêëu truác caác package seä tiïëntriïín theo.
Phên tñch kiïën truác : nhêån daång caác package phên tñch
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 129
Nhêån daång caác package phên tñch
• Example: Sales: From Order to Delivery
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 130
• Example: Bank Customer and Account
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
Nhêån daång caác package phên tñch
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 131
• Example: Account Manager (service package that encapsulate functionally related classes)
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
Nhêån daång caác package dõch vuå
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 132
Àõnh nghôa sûå phuå thuöåc cuãa caác package
• Example: Sales: From Order to Delivery
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 133
Coá 3 loaåi (stereotype) class phên tñch :class biïn (boundary class) mö hònh sûå tûúng taác giûäa actor vaâ hïå thöëngclass thûåc thïí (entity class) mö hònh thöng tin cêìn cho hïå thöëng, loaåi thöng tin coátñnh bïìn vûäng, töìn taåi lêu daâi.class àiïìu khiïín (control class) mö hònh viïåc xûã lyá, cöång taác, giao taác trong use-case.
3 loaåi class phên tñch
Boundary class
Entity class Control class
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 134
Tûâ caác class lônh vûåc hay caác class nghiïåp vuå trong bûúác nùæm bùæt yïu cêìu, àïì nghõ 1 söëclass thûåc thïí quan troång nhêët (tûâ 10-20).
Caác class phên tñch coân laåi seä àûúåc nhêån daång trong hoaåt àöång phên tñch use-case.
Phên tñch kiïën truác : nhêån daång caác class thûåc thïí dïî thêëy
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 135
• Example: Invoice– Invoice class from the domain model– Attributes
•Amount•Date of submission•Last day of payment
– Associations•Payable association between an Order and an Invoice
Invoice
Order
1..*
Chûúng 6: Phên tñch yïu cêìu hûúáng àöëi tûúång
Nhêån daång caác class thûåc thïí àún giaãn
-
Böå mön Cöng nghïå Phêìn mïìmKhoa KH&KT Máaáy tñnhÀH Baách Khoa Tp.HCM
Mön Thiïët Kïë Hûúáng àöëi tûúång
Slide 136
Ph�