237
Böå mön Cöng nghïå Phêìn mïìm Khoa 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 Đạihc Bách Khoa Tp. HChí Minh Khoa Khoa hc & Kthut Máy tính Mön hoåc PHÊN TÑCH & THIÏËT KÏË HÛÚÁNG ÀÖËI TÛÚÅNG

Mön hoåc PHÊN TÑCH & THIÏËT KÏ Ë HÛÚÁNG ÀÖ ËI TÛÚ ÅNGanhtt/Contents/Teaching/Semester20910/... · 2020. 8. 6. · Johnson, John Vlissides, Addison-Wesley, 1998. [4]

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • 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�