181
โดย อ.ดร. นัฐพงศ งเนียม http://www.siam 2dev.com [email protected] สาขาวิชา วิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏพระนคร Last Update : 30-01-2561 Lec08 : Structural Modeling ( Class & Object diagram) แหล่งข ้อมูลเพิ่มเติม : : http://www.lumpaya.com/sdlc01.htm http://www.siam2dev.com [ dr. nattapong songneam]

นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

โดย อ.ดร. นฐพงศ สงเนยมhttp://[email protected]

สาขาวชา วทยาการคอมพวเตอรคณะวทยาศาสตรและเทคโนโลย มหาวทยาลยราชภฏพระนคร

Last Update : 30-01-2561

Lec08 : Structural Modeling ( Class & Object diagram)

แหลงขอมลเพมเตม : : http://www.lumpaya.com/sdlc01.htm

http://www.siam2dev.com [ dr. nattapong songneam]

Page 2: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

สอบปลายภาค

• บทท 5, 6, 7, 8 และ กรณศกษา

Page 3: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Project งานกลม 30% ให นศ. แบงกลมๆ ละไมเกน 10 คน เพอทา

การวเคราะหระบบงาน 1 ระบบดวยวธการวเคราะหและออกแบบเชงวตถ

• จดทาเปนรปเลมรายงาน กาหนดสงวนสอบปลายภาค รปเลมรายงาน + CD

– กาหนดหวขอ Project •ระบบโรงพยาบาล •ระบบโรงภาพยนตร •ระบบสนคาคงคลง•ระบบโรงแรม •ระบบบรหารการศกษา / ระบบการเรยนการ

สอน •อนฯ

กาหนดความรบผดชอบ Project โดยใช Unified Process ทา ขอเสนอโครงการ Proposal วางแผน Gantt Chart + PERT chart ออกแบบ และเขยน- Usecase diagram - Class diagram - Sequence diagram / Communication Diagram –Activity Diagram

Page 4: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Project งานกลม 30% รายงานประกอบไปดวย1. คานา2. สารบญ3. สารบญรป4. สารบญตาราง5. บทท 1 บทนา

1. หลกการและเหตผล2. วตถประสงคของโครงการ3. ขอบเขตองระบบงาน4. แผนการดาเนนงาน (Gantt Chart)5. งบประมาณ/ คาใชจาย6. ฮารดแวรและซอฟตแวรทใช7. ผลทคาดวาจะไดรบ

รายงานประกอบไปดวย(ตอ)บทท 2 การวเคราะหระบบเชงวตถ

- Business Rule- Requirement Specifications

- functional- none functional

- Use case diagramบทท 3 การออกแบบเชงวตถ

- Class/Object diagram- Sequence/Commuication diagram - Activity diagram

บทท 4 การพฒนาระบบและทดสอบ- Deployment Diagram

บทท 5 สรปผลและขอเสนอแนะบรรณานกรมผจดทา

Page 5: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Project งานกลม 30% รายงานประกอบไปดวยคานาสารบญสารบญรปสารบญตารางบทท 1 บทนา

หลกการและเหตผลวตถประสงคของโครงการขอบเขตองระบบงานแผนการดาเนนงาน (Gantt Chart)งบประมาณ/ คาใชจายผลทคาดวาจะไดรบ

รายงานประกอบไปดวย(ตอ)บทท 2 การวเคราะหระบบเชงวตถ

- Business Rule- Requirement Specifications

- functional- none functional

- Use case diagramบทท 3 การออกแบบเชงวตถ

- Class/Object diagram- Sequence/Commuication diagram - Activity diagram

บทท 4 การพฒนาระบบและทดสอบ- Deployment Diagram

บทท 5 สรปผลและขอเสนอแนะบรรณานกรมผจดทา

INCEPTION PHASE

COLLABORATION PHASE

IMPLEMENTATION /

TRANSITION PHASE

Page 6: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

อ.ดร. นฐพงศ สงเนยม 6

Requirement Specifications : ขอกาหนดของความตองการ

Page 7: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

UP :: โครงสรางกรรมวธ - Lifecycle Phases

เตรยมงาน (Inception) – นยามขอบเขตของโครงการ , ขอบเขตของระบบทจะพฒนา

OOAD : Object-Oriented Analysis and Design 7

Inception Elaboration Construction Transition

time

Unified process แบงการพฒนาออกเปน 4 เฟส (phases)

ทารายละเอยด (Elaboration) – วางแผนโครงการ จดทารายละเอยดความตองการ จดสรางสถาปตยกรรมระบบ

จดสราง (Construction) – สรางและทดสอบโปรแกรม

ถายโอน (Transition) – ตดตงถายโอนระบบใหกบผใช

7

Requirement Analysis

Requirement Analysis-Requirement Specification-Use Case Diagram

Design >> Class / Object Diagram

Presenter
Presentation Notes
ในชวง Inception จะเปนการกำหนดขอบเขตของโครงการ ระบวาสงใดทอยในโครงการ สงใดไมอยในโครงการ การกำหนดขอบเขตทำไดโดยการระบถง actors ซงกคอผใชระบบ ระบถงสงทระบบตองกระทำ ทเรยกวา use cases ตามทผใชแตละกลมคาดหวง , we define the scope of the project, what is included, and what is not. We do this by identifying all the actors and use cases, and by drafting the most essential use cases (usually approximately 20 percent of the complete model). A business plan is developed to determine whether resources should be committed to the project. During Elaboration, we focus on two things: getting a good grasp of the requirements (80 percent complete), and establishing an architectural baseline. If we have a good grasp of the requirements and the architecture, we can eliminate a lot of the risks, and we will have a good idea what amount of work remains to be done. We can make detailed cost/resource estimations at the end of Elaboration. During Construction, we build the product in several iterations up to a beta release. During Transition, we transition the product to the end user and focus on end user training, installation, and support. The amount of time spent in each phase varies. For a very complex project with a lot of technical unknowns and unclear requirements, Elaboration may include three to five iterations. For a very simple project, where requirements are known and the architecture is simple, Elaboration may include only a single iteration.
Page 8: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

The Iterative Approach

OOAD : Object-Oriented Analysis and Design 8

Disciplinesgroup activities

logically

In an iteration,you walk through

all disciplines

8

Presenter
Presentation Notes
This graphic illustrates how phases and iterations (the time dimension) relate to the development activities (the discipline dimension). The relative size of the color area indicates how much of the activity is performed in each phase/iteration. Each iteration involves activities from all disciplines. The relative amount of work related to the disciplines changes between iterations. For instance, during late Construction, the main work is related to Implementation and Test and very little work on Requirements is done. Note that requirements are not necessarily complete by the end of Elaboration. It is acceptable to delay the analysis and design of well-understood portions of the system until Construction because they are low in risk.
Page 9: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

1. Software Development Process

1. Requirement Specification : define problem domain

2. Analysis : what problem to be solved? (อะไรคอปญหาทตองแก)

3. Design : how to solve the problem? (แกอยางไร)

4. Implementation : how to implement the solution?

5. Testing : how to ensure that the solution can solve the problem?

1. ทดสอบในเรองความเรว ประสทธภาพ ความปลอดภย ความมนคง เสถยร

6. Maintenance : how to adjust the solution to accomodate change?

1. ในรอบระยะเวลาหนงอาจจะตองมการปรบเปลยน

7. Retirement : when does the system to be retired?

บทท 5 Requirement Specification

จะพดถงในวชา OOP

Page 10: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ผใชระบบสารสนเทศ:แหลงของความตองการ

• เจาของระบบ (System owners/Sponsors ) – มสวนไดสวนไดเสยจากการลงทนสรางระบบสารสนเทศ เจาของผบรหาร ผจดการ

• ผใชภายใน (Internal users)– End-users คอผใชทปอนขอมลเขาสระบบโดยตรง ไมจาเปนตองมทกษะหรอความร

มาก เนนความถกตองและรวดเรวของการปอนขอมลเขาสระบบ– Power-users คอผใชทมความรความชานาญเฉพาะดาน สามารถใชงานฟงกชน

ของระบบในสวนทมความซบซอนได – Administrators คอผทดแลและควบคมใหระบบสามารถดาเนนการไดอยางราบรน

ตามวตถประสงคทตงไว– Executive users คอผใชทตองการสารสนเทศมาเพอการตดสนใจและบรหาร

องคกร• ผใชภายนอก (External users)

– ผใชซงเปนบคคลภายนอกองคกร แตสามารถเขาถงบรการของระบบในองคกรได

จากทเคยสอนไปแลว บทท 5

Page 11: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Lecture Outline• Structural Modeling• Class Diagrams and Object Diagrams• Association• Generalization และ Classification• Aggregation และ Composition• Models

Page 12: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Structural Modeling

Page 13: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

What is structural modeling?• Structural model

– กคอ มมมองของระบบทเนนโครงสรางของวตถ รวมท งคลาสของวตถ (Class) ความสมพนธระหวางคลาส (Relationship) แอททรบวต (Attribute) และ โอเปอเรชน (operation)

Static Structural Modeling ม 2 ชนดคอ• Class Diagram• Object Diagram

Page 14: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Construct Description Syntax

class a description of a set of objects that share the same attributes, operations, methods, relationships and semantics.

interface a named set of operations that characterize the behavior of an element.

component a modular, replaceable and significant part of a system that packages implementation and exposes a set of interfaces.

node a run-time physical object that represents a computational resource.

«interface»

Structural Modeling: Core Elements

Page 15: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Analysis Process แนวทางในการวเคราะห

• ทา Information gathering จะได >> Requirement Specifications >> นามาเขยนเปน Use case Description / Diagram

• จากนน นา Use case >>มาหา Class และ Object ทงหมดของระบบจากนนกนามาสรางเปนแผนภาพคลาส หรอ Class/Object Diagram

Page 16: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Structural Modeling: Core Elements (cont’d)

Construct Description Syntax

constraint¹ a semantic condition or restriction.

{constraint}

¹ An extension mechanism useful for specifying structural elements.

Constraint เงอนไข/กฏเกณฑ / ขอกาหนด

Page 17: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Construct Description Syntax

association a relationship between two or more classifiers that involves connections among their instances.

aggregation A special form of association that specifies a whole-part relationship between the aggregate (whole) and the component part.

generalization a taxonomic relationship between a more general and a more specific element.

dependency a relationship between two modeling elements, in which a change to one modeling element (the independent element) will affect the other modeling element (the dependent element).

Structural Modeling: Core Relationships

composite

Aggregate

Page 18: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Construct Description Syntax

realization a relationship between a specification and its implementation.

Structural Modeling: Core Relationships (cont’d)

Page 19: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Structural Diagrams• ประเภทของ Structural Diagrams

– static structural diagrams• class diagram• object diagram

– implementation diagrams• component diagram• deployment diagram

Page 20: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Static Structural Diagrams

Page 21: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Static Structural Diagrams• แสดง graph ของคลาสทเชอมตอกนดวย

static relationships• ประเภทของ Static Structural Diagrams

– class diagram : classifier view– object instance diagram : instance view

Static : หยดนง

Page 22: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class Diagrams• Class diagrams

– แสดงรายละเอยดของ Class และความสมพนธระหวาง Class ในมมมองแบบ logical view

• องคประกอบของ UML class diagrams ไดแก– Class, โครงสรางของ Class และพฤตกรรมของ

Class– ตวบงช Multiplicity และ navigation – ชอของ Role– ความสมพนธแบบ Association, aggregation,

dependency, และ inheritance

Page 23: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

• Logical : ตรรกะ/ความคด

• Physical : กายภาพ/สภาพความเปนจรง ลกคา

ซอ

สนคา

ERD

Physicalเกบในฐานมล มโครงอยางไร

อย Address ทเทาไรอยตรงสวนใหนของ ฮารดกส

x 5

5 9 1 4 7

ARRAY

Offset :; 01011111

Page 24: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Classes in UML

Person

Class name

Attributes

Operations

• เขยนได 2 รปแบบ

Person

- TaxIDNo : String- Name : String+ Income : double+ TaxPaid : Boolean

+ calcTax()+ calcTaxBal()

attribute name : type

operation name(parameter : type): result type

En

Analysis เขยนแบบคราวๆ

Design ลงรายละเอยด

Page 25: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Classes in UML

คน

Class name

Attributes

Operations

• เขยนได 2 รปแบบ

คน- หมายเลขประจาตวผเสยภาษ : String- ชอ : String+ รายได : floating + เสยภาษ : Boolean

+ คานวณภาษ()+ คานวณยอดเสยภาษ()

attribute name : type

operation name(parameter : type): return type

Th

Page 26: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

UML Syntax for Attributesรปแบบ• visibility name : type

+ id : Stringความหมาย

– visibility: public (+), protected (#), private (-)• การตความไมขนกบภาษาในการเขยนโปรแกรม

programming language independent – name : เปนชอของ attributes– type : ประเภทของขอมล ไมข นอยกบภาษา

ไมไดข นอยกบภาษาใดภาษหนง ใชไดกบทกภาษา ทเปนเชงวตถJava , vb, c#, php, อนๆ

#java ….Modifier ซงจะมมากกวา 3 ชนด จะม default

Page 27: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

หามนา Type ในภาษาใดภาษาหนงมาใชกบ UML classdiagram

Person

- TaxIDNo : String- Name : String+ Income : real+ TaxPaid : Boolean

+ calcTax()+ calcTaxBal()

Real เปนชนดตวแปรทศนยม ในภาษาปาสคาลเทานน ภาษาอนไมรจกUML ไมผกตดกบภาษา

Real Pascalfloat,Float c, c++, javadouble,Double c, c++, javaSingle,DoubleVB

Floating,String,Boolean

Page 28: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

แสดงผลบนหนาจอ1. Echo2. Print3. Printf4. Scanf5. System.out.print6. System.out.println7. Write8. Writeln9. Display10. Input11. Read

แตละคาสงคอภาษาอะไร แลวไวทาอะไร

Display “Menu”

Page 29: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ในโลกนมภาษาคอมพวเตอร 160 กวาภาษา

คณรจกแค 2-3 ภาษา

เขยนไดแค 1 ภาษา

เขยนเปน 0 ภาษาจงเขยนโปรแกรม Paintดวยภาษาท ถนด

สรางรป

บนทกได

เปดได

Page 30: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Type- PDT- ADT

Class NameFAN

Attributes- Brandname : String- Price : Floating

Page 31: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เงน ?

เงน1

2

3

ขนาด

มลกษณะเปนวงกลม

Page 32: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เงน ?

เงน1

2

3

เงนบาท

ขนาด

มลกษณะเปนวงกลม

Page 33: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เงน ?

เงน1

2

3

- มลคา : double/floating-point

ขนาด

มลกษณะเปนวงกลม

Page 34: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เงนดอลลาร

เงนบาท

เงนหยวน เงน

มคา

จานวนเงน/ราคา

ใชจาย()ชาระ()

Page 35: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

พดลม

พดลม1

2

3

- ยหอ : String- ส : Color- ราคา : Floating-Point

มใบพดทาความเยน

บอกราคา

บอกส

กาหนดราคา

UML Syntax for attributes

Page 36: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ในการทจะเขยนคลาสได จะตองคานงเรองตอไปน

1. Problem Domain2. Concept 3. Abstractions ตางๆ

4. Real World , computer world5. Analysis , requirement spcecification , Usecase

diagram

Page 37: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

รถยนต

Attributes + functions , Association

โต โยตาอลตสBMWViosCivicTeanaswift

Concept

Page 38: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Car Human

Association Name

Role name

1 1

Own Owner

Own

Cardinality/Multiplicity

Class Name

Engine

Page 39: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

- Name : String - ID : String- Tel : String

Student

class Student{

private String Name;private String ID;private String Tel;

public String getName() {return Name;

}}

class testStudent {public static void main{

private Student s;s = new Student();s.ID = ‘580001011’;txtName.setText(s.getName());

} }

Encapsulation / Class / Visibility

Page 40: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Student Tester

main

test

Page 41: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

java

class Money {private double value;

}

เงน1

2

3

- มลคา : double/floating-point

Page 42: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

public class CAR {private String Brand;private double Price;private Color color;

}

CAR

- Brand : String- Price : Double- Color : String

+ getBrandname()+ getPrice()+ setPrice

Empty Class

altis : CAR

object

class

class Color {}civic : CAR

Page 43: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Type

• String• Character• Boolean• Date• Integer : byte , short , int , long• Floating : single / double

VB

Page 44: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เครองบน

Plane- เครองยนต : String- ปก : integer- หมายเลขเครอง : String

Computer- จอ : Monitors- Mouse : Mouse-Keyboard: Keyboards- Brandname : String- Price : Double

-Private+ Public# Protected

Page 45: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เครองบน

Plane- เครองยนต : String- ปก : integer- หมายเลขเครอง : String

Computer- จอ : Monitors- Mouse : Mouse-Keyboard: Keyboards- Brandname : String- Price : Double

-Private+ Public# Protected

PDT

Page 46: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

เครองบน

Plane- เครองยนต : Engine- ปก : integer- หมายเลขเครอง : String

Computer- จอ : Monitors- Mouse : Mouse-Keyboard: Keyboards- Brandname : String- Price : Double

-Private+ Public# Protected

ADT

Page 47: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Engine- ยหอ: String- รน : String- แรงมา: Integer / int

Plane- เครองยนต : Engine- ปก : integer- หมายเลขเครอง : String

Require Component / Optional Component

Aggregate vs Composite

Page 48: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Attributes

Car- Wheel : Integer

- Wheel : Integer

- w : Wheel

Page 49: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Require Component/Optional Component

CAR

- Brandname : String

- Wheel : Wheels

+ Start() : Boolean

+ Stop() : Boolean+ Break() : Boolean

Wheels

- Brandname : String

- NoumOfW : Integer

+ Spin() : Boolean

+ TurnLeft() : Boolean+ TurnRight() : Boolean

เครองปรบอากาศ วทย พวงมาลย

Aggregate Composit

Page 50: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Variables declaration

• VBDim x as int16Private x as int16Protected x as int16PUBLIC x as int16

• C, C++ , Java ,C#int x;private int x;protected int x;public int x;

Page 51: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

java

class car {private int wheel;

}

class car {private Wheels wheel;

}

class Wheels {private int no_wheel;

}

Page 52: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

UML syntax for operations• visibility name ([parameter list]) : return-type-expression

•+ assignAgent (a : Agent) : Boolean

– visibility: public (+), protected (#), private (-)• การตความไมข นกบ programming language

– name : string– parameter list : arguments– return-type-expression : ประเภทของคาท return ไมข นกบภาษา

Double x = pow(2,3);

Optional

+ pow(x1 : int,x2 : int) : double

double x = pow(2,3);

Page 53: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ตวอยางชนดของวตถและวตถ (UML)

MobilePhone

- bandname :String- button : Button- screen : Screen- antenna : Antenna- simNet : Simm

+ call() : String+ receive()+ hangup()+ sendSMS(msg : String)

:siemens

:ericsson

:nokia

53อ.ดร. นฐพงศ สงเนยม

class objects

Page 54: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

MobilePhone

- bandname :String- button : Button- screen : Screen- antenna : Antenna- simNet : Simm

+ call() : String+ receive()+ hangup()+ sendSMS(msg : String)

Return

Not Return

Parameter List

UML Syntax for functions

Page 55: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

- Name : String - ID : String- Tel : String

Studentclass Student{

private Sting Name;private String ID;private String Tel;

public String getName() {return Name;

}public void setName(String n) {Name = n;

}}

class testStudent {public static void main{

private Student s;s = new Student()s.ID = ‘580001011’;s.getName();

} }

Encapsulation / Class / Visibility

+ getName() : String+ setName(n : String)

Page 56: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ
Page 57: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

CAR PersonOWNEE OWNER

Student TeacherAdvisee Advisor

InstructorMasterProfessor

- Registration:String

+ setRegis(rg: String)+ getRegis() : String

1 1

Tester

Page 58: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

public class Tester{public static void main(String args[]) {

Car c1= new Car();Person p1 = new Person();c1.Registration =“4ก 4754”;

}}

class Car {private String Registration;}

Page 59: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

class Student{

private Sting Name;private String ID;private String Tel;

public String getName() {return Name;

}public void setName(String n) {Name = n;

}public void setTel(String t) {Tel = t;}public String getTel() {Return Tel;}

}

•บอกชอ

•ตงชอ

•บอกเบอรโทร

•กาหนดเบอรโทร

Operations/functions

Student

Behavior/Operations/functions/Method/Sub/Routine/Module

Page 60: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

TypePDTADT

Class NameFAN

Atributes- Brandname : String- Price : Floating

+ Open() : Boolean

+ Close() : Boolean+ Spin() : Boolean

Page 61: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

TypePDTADT

Class NameTelevision

Atributes- Brandname : String- Price : Floating

+ Television()

+ Close()+ volume() : int

+ เปด () : Boolean

+ ปด () : Boolean

+ Open()Constructor

Page 62: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ
Page 63: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

CustomerCustomer

-Name : String-Address : String

Page 64: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Attributes – A Rule• การกาหนด attributes ควรทาให simple• คาทเกบอยใน attributes ไมควรเปนวตถ (Object)

– แตควรสรางคลาส (class) ขน และแสดงความสมพนธระหวางวตถดวย association

• ไมควรสรางความสมพนธระหวาง 2 คลาส โดยใช “foreign key” attribute– แตใช association

ควรจะมองใหเปนความสมพนธเชงฟงกชน หมายถง คลาส ทางานอะไร รวมกนกบอกคลาส

Page 65: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Object Instance Diagrams• class diagram

– แสดงชอ (name), โครงสราง (structure) และพฤตกรรม (behavior) ของประเภทของวตถ(object)

• object instance diagram– แสดงวตถทสรางจากคลาส

• ความแตกตางระหวางทง 2 diagram เปรยบเทยบไดกบความแตกตางระหวางโครงสรางของตารางในrelational database และคาทถกเกบอยภายในตาราง

Page 66: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ID Name Address salary Tel

class

ID Name Address salary Tel001 สมชาย กรงเทพ 85000 087984740

002 นฐพงศ กรงเทพ 3500 089747454Object

คาถาม :: จงอธบายในเชงของคลาสไดอะแกรม class และ object diagam

Page 67: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Objects in UML

Tim:Person

Object name

Attributes

Same Operationsfor all instances of classes

• เขยนได 2 รปแบบ

Tim : Person

TaxIDNo=“23003”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

attribute name : type = value

En

Person

ตางกนอยางไร

Person

Page 68: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Object / Class

ธนพนธ : นกเรยน นกเรยน

ธนพนธ : นกเรยน นกเรยน

- ชอ = “ธนพนธ” - ชอ : String

+ บอกชอ() + บอกชอ()สปราณ : นกเรยน

- ชอ = “สปราณ”

+ บอกชอ()

Page 69: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ธนพนธ : นกเรยน

นกเรยน

- ชอ = “ธนพนธ”

- ชอ : String

+ บอกชอ()

+ บอกชอ()

สปราณ : นกเรยน

- ชอ = “สปราณ”

+ บอกชอ()

Is member ofIs member of

Instance of

class

object

นฐพงศ : นกเรยน

- ชอ = “นฐพงศ”

+ บอกชอ()

Page 70: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Student

Student

class

- Name : string- ID : string- Tel : string- grade : double

-getName() : string-getGPA() : double

Tom: Student- Name =“Tom Meesuk”- ID =“5870144”- Tel =“0897887744”- grade =3.50

-getName() : string-getGPA() : double

object

Page 71: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Tim : Person

TaxIDNo=“23003”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Jim : Person

TaxIDNo=“23005”Name=“TimLim”Income=“80000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Toon : Person

TaxIDNo=“23001”Name=“Deelan”Income=“50000.00”TaxPaid = TRUE

calcTax()calcTaxBal()

คาถาม “Same Operationsfor all instances of classes”

หมายถงอะไร จงอธบาย ?

Page 72: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Tim : Person

TaxIDNo=“23003”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Tim : Person

TaxIDNo=“23003”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Tim : Person

TaxIDNo=“23003”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Page 73: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Tim : Person

TaxIDNo=“23004”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Tim : Person

TaxIDNo=“23003”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Tim : Person

TaxIDNo=“23004”Name=“TimLim”Income=“30000.00”TaxPaid = FALSE

calcTax()calcTaxBal()

Page 74: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Objects in UML

นายดา : คน

Object name

Attributes

Same Operationsfor all instances of a class

• เขยนได 2 รปแบบ

นายดา : คน

- หมายเลขผเสยภาษ=“450103”- ชอ=“นายดา”+ รายได=“50000.00”+ เสยภาษ = FALSE

คานวณภาษ()คานวณยอดภาษ()

attribute name : type = value

Th

Page 75: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

An Object Instance Diagram

Sydney:City

Name=SydneyCountry=AustraliaPopulation= 3,536,000

London:City

- Name=London- Country=UK- Population= 2,324,320

New York :City

Name=New YorkCountry=USAPopulation= 5,734,012

Bangkok :City

Name=BangkokCountry=ThailandPopulation= 7,534,013

En

Sydney:City

Name=SydneyCountry=AustraliaPopulation= 3,536,000

Sydney:City

Name=SydneyCountry=AustraliaPopulation= 3,536,000

Sydney:City

Name=SydneyCountry=AustraliaPopulation= 3,536,000

Sydney:City

Name=SydneyCountry=AustraliaPopulation= 3,536,000 + getPopulation()

+ setName(n : string)

Page 76: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ยง กบ แมลงวน ?

Page 77: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

- Name : String - ID : String- Tel : String

Student

class Student{

private Sting Name;private String ID;private String Tel;

public String getName() {return Name;

}}

class testStudent {public static void main{

private Student s;private Student s1;private Student s2;private Student s3;private Student s3;

s = new Students.ID = ‘580001011’;txtName.setText(s.getName());

} }

Encapsulation / Class / Visibility

Page 78: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Java implementationLondon:City

- Name=London- Country=UK- Population= 2,324,320

+ getPopulation() : long+ setName(n : string)

class City {private String name;private String country;private long population;

public void setName(n:String) {name : n;

}public long getPopulation() {

return population;}

}

UML : object diagram

City.java

Page 79: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class name

London:City

- Name=London- Country=UK- Population= 2,324,320

+ getPopulation() : long+ setName(n : string)

object

visibility Operation

Attributes

Page 80: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class name

Attributes

Operations

Page 81: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class name

Attributes

Operations

Page 82: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

- Name : String- getName() : String- setName(n:string)

London:City

- Name=London- Country=UK- Population= 2,324,320

Attributes

Operations

Page 83: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

An Object Instance Diagram

Sydney:City

Name=SydneyCountry=AustraliaPopulation= 3,536,000

London:City

Name=LondonCountry=UKPopulation= 2,324,320

New York :City

Name=New YorkCountry=USAPopulation= 5,734,012

Bangkok :City

Name=BangkokCountry=ThailandPopulation= 7,534,013

Th

Page 84: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Classes and Objects

London : City

Name = LondonCountry = UK

<<instanceOf>> <<instanceOf>> <<instanceOf>>

City

- Name : String = default

+ setName (s : String = deault)

+ setPopulation(p : integer = default)

- Population : integer = default

Population =2,324,320

New York : City

Name = New YorkCountry = USA

Population =5,734,012

Sydney : City

Name = SydneyCountry = Australia

Population =3,536,000

- Country : String = default

สญลกษณทชจากออบเจกตไปยงคลาส คอ.......................

Is member ofIs member of

Page 85: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class Diagrams

• Associations

• Classification

• Generalization และ Specialization

• Aggregation

Page 86: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association• ความสมพนธ (Relationship) ระหวาง instances ของ classes

Order

- dateReceived- isPrepaidnumber : String price : Money

dispatch( )

Customer

- Name : Stringaddress

+ creditRating( )

* 1

issued by

An order comes from one customerCustomer may make several orders

directionassociation

name

En

* 0...N

Page 87: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association• ความสมพนธ (Relationship) ระหวาง instances ของ classes

ใบส งซอ

- วนทรบ : Date- ชาระเงน : Boolean- เลขท : String - ยอดเงน : Money

+ วางบล( )

ลกคา

- ชอ : String- ทอย : String

+อตราสนเชอ( )

* 1

ส งซอโดย

ใบส งซอหนงใบมาจากลกคาเพยงคนเดยวลกคาหนงคนส งซอไดหลายใบส งซอ

directionAssociation name

Th

Page 88: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Associations• คลาสมากกวา 1 คลาส สมพนธกนดวย “associations”• Association

– เทยบไดกบ ER relationship ทเชอมโยงความสมพนธระหวางคลาส และแสดง จดเชอมโยง (“links”) ระหวางวตถทสรางขนจากคลาส

Page 89: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Naming associations• การต งชอ association

– หลกเลยงชอทไมส อความหมาย• associated_with, has, is_related_to

– มกขนตนดวยคากรยา เชน• works_for, owns , issued by

– มกต งชอในกรณทมอง Association จากซายไปขวาหรอ จากบนลงลางของ diagram

Page 90: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Associations on Class Diagrams

OwnsPerson

NameAddressTelephone

Car

ManufacturerModelRegistration

En

Page 91: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Associations on Class Diagrams

เจาของคน

ชอทอยเบอรโทร

รถยนต

ยหอรนเลขทะเบยน

Th

Page 92: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Links• วตถแตละวตถ สามารถเชอมโยงกนได โดยใช “links”• A link

– เปน instance ของ association• หมายเหต

– an association สามารถดารงอยได ถงแมวาจะไมมinstance (links) ของ association ดงกลาว เชนเดยวกบ คลาสทสามารถดารงอยได ถงแมวาจะไมมวตถใดๆ ถกสรางขนจากคลาสนนๆ

Page 93: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Objects & Links

Name=SomchaiAddress=22 BKKTelephone=62312198

Name=PancakeAddress=41 SKLTelephone=62661734

Manufacturer=BMWModel=SeriesRegistration=YRT833

Manufacturer=ToyotaModel=altisRegistration=YYX391

OwnsOwns

Owns

You:Person

Ours:Car Mine:Car

Me:Person

Enรไดอยางไร วาเปน object หรอ class diagram

คาถาม owns เปน Link หรอ Association ?

Page 94: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

javaclass person {private String name ;

}

class TestPerson {private Person you ;

you.setName(“somchai”);

}

You , me , mine , ours เปนวตถ

Person , car เปนคลาส

Page 95: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

vbClass Car

PrivatE name as string…

End classclass person {private String name ;

}

java

Page 96: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Objects & Links

Name=ณเดชAddress=22 กทมTelephone=02578268

Name=แพนเคกAddress=41 SKLTelephone=03425464

Manufacturer=BMWModel=SeriesRegistration=1กย 6666

Manufacturer=BenzModel=E320Registration=1กค 9999

เจาของเจาของ

เจาของ

ณเดช:Person

รถณเดชและแพนเคก:Car รถแพนเคก:Car

แพนเคก:Person

Th

Page 97: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Multiplicity• multiplicity

– หมายถง การพจารณาจานวน instances (objects) ของคลาสหนง ทสามารถเชอมโยงกบ instance (object) ของคลาสทเกยวของ

Order

dateReceived

isPrepaid

number : String

price : Money

dispatch( )

Customer

nameaddress

creditRating( )

* 1

En

* 0..n

Page 98: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Multiplicity• multiplicity

– หมายถง การพจารณาจานวน instances (objects) ของคลาสหนง ทสามารถเชอมโยงกบ instance (object) ของคลาสทเกยวของ

ใบส งซอ

- วนทรบ : Date- ชาระเงน : Boolean- เลขท : String - ยอดเงน : Money

+ วางบล( )

ลกคา

- ชอ : String- ทอย : String

+อตราสนเชอ( )

* 1ส งซอโดย

Th

Page 99: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Multiplicity

Class

Class Class

Class

Class1..*

2 ..4

exactly one

many (zero or more) zero or one/at most one

one or more

as specified

* 0..1

1

Page 100: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Multiplicity

Class

Class Class

Class

Class1..*

2 ..4

exactly one

many (zero or more) zero or one/at most one

one or more

as specified

* 0..1

1

En

Page 101: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Multiplicity

Class

Class Class

Class

Class1..*

2 ..4

มแค 1 เทานน

หลาย (ศนยหรอมากกวา) ศนยถงหนง/มากสดแคหนง

หนงหรอมากกวา

ตามทระบ

* 0..1

1

Th

Page 102: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Example of Multiplicities

Student University

HeartBody

Bicycle Wheel

OwnerAccount

2..3

1..*

* *

*

**

1..*

1 1

1

1..* 1..*

จงอธบายแตละอยาง ตามความเขาใจ ?

Page 103: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ
Page 104: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Associations, Objects & Classes• สาหรบ association ใดๆ ระหวาง 2 วตถ สามารถม link ได

ตงแต 0 ถง 1 link• ระหวาง 2 วตถ สามารถไดมมากวา 1 association

(Multiple Assoications) แต association เหลานนจะตองมความแตกตางในดานความหมายของ association

• Multiple associations ระหวางคลาสกาหนดให ตงชอ associations

Page 105: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Roles• role

– หมายถง ชอทกาหนดใหกบดานปลายของ association ซงระบวธการในการทคลาสมสวนรวมใน association

• ปกตชอของ role มกเกดขนเปนค (เชนทงสองดานของassociation จะมชอของ role

• บงคบใหกาหนดชอของ Role กบ associations แบบreflexive (Reflexive associations)

Page 106: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Role names• Role ระบ ชอใหกบดานปลายของ association

NameAddress

Company Works forNameInsurance no.Address

Person

employer employee

*1

Role names

จากรปน จงอธบาย ?

Page 107: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Role names• Role ระบ ชอใหกบดานปลายของ association

NameAddress

Company Works forNameInsurance no.Address

Person

employer employee

*

Role names

Page 108: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Role names• Role ระบ ชอใหกบดานปลายของ association

ชอบรษททอย

บรษท ทางานใหชอรหสประจาตวทอย

พนกงาน

นายจาง ลกจาง

*

Role names

Page 109: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Names & Roles• association อาจมชอไดเชนเดยวกบชอของ role ทกาหนด

ใหกบดานปลายของความสมพนธ– ถามการตงชอ association แลวมกไมมการตงชอ role อก– ถามการตงชอทปลายของ association (ไดแก roles) แลว

มกไมมการตงชอ association อก

Page 110: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Role names• บงคบใหกาหนดชอของ Role ใหกบทเกดขนระหวาง link ของ

วตถทสรางจากคลาสเดยวกน

NameInsurance no.Address

Person

Manager

Supervises Salesperson

U-nary association

Page 111: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

A Reflexive Association

PersonParent

Child

2 Role name

NameAddressTelephone

*

• association ทสรางจากคลาสเดยวกน

U-nary association

Presenter
Presentation Notes
There is something of a practical problem here, though not a modelling one – at least in principle. Can you see what it is? HINT: Every person has 2 parents (“parent” is here assumed to mean “biological parent”).
Page 112: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Person Personparent child

2 *

Page 113: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

A Reflexive Association

PersonParent

Child

2 Role name

NameAddressTelephone

*

• association ทสรางจากคลาสเดยวกน

Presenter
Presentation Notes
There is something of a practical problem here, though not a modelling one – at least in principle. Can you see what it is? HINT: Every person has 2 parents (“parent” is here assumed to mean “biological parent”).
Page 114: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Ternary Associations• A ternary association

– เปน assocation ทประกอบดวย 3 คลาส• เชนเดยวกบแนวคดของ ternary relationship ในER

modelling และแนวคดคลายๆ กน• นาเสนอโดยใชรปสเหลยขนมเปยกปน เชอมโยงกบคลาสท

เกยวของ

Page 115: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Ternary Associations

Vendor

Customer Product

Ternary association

Sale

Page 116: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Ternary Association Multiplicity• multiplicity ของ ternary associations• ซบซอนกกวา binary และ unary associations• มกเปน แบบ “many” สาหรบคลาสทเกยวของ participating

Page 117: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

N-ary Associations

• โดยทวไปแลว association อาจเชอมโยงกบคลาสจานวนเทาใดกได

• ถาเชอมโยงคลาสมากกวา 2 คลาสขนไป (รวมทง ternary) เรยกวา “n-ary” associations

• แต Associations ทเชอมโยงมากกวา 0 คลาสมกหาไดยาก

Page 118: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Summary: Basic notation for associations

Class A Class BAssociation name

role_Arole_B

Order Order Linecontains

line items

• ตวอยางเชน

mult1 mult2

*1

Page 119: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Summary: Basic notation for associations

Class B Class B

Association name

role_Arole_B

Order Order Linecontains

line items

ตวอยาง

mult1 mult2

*1

Page 120: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Classes• Link จะถกพจารณา เชนเดยวกบการทวตถถกพจารณาจาก

attribute ของวตถนน• attribute ควรผกตดอยกบ association โดยใช

association class มากกวาทจะเปนของวตถทเชอมโยงเมอใดกตามทwhenever it exists or has meaning when the link itself exists (rather than just the objects linked) - มกเกดขนบอยกบ many-to-many associations

Page 121: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Classes

Student SubjectIDNameAddressTelephone

CodeNameCredit

Mark

Enrolment

Association class

* *

Result

many-to-many associations

Dependency Association

Dependency Association

Page 122: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ID Name Address Tels001 โกต กาลงกราง ไมแนนอน 0879774s002 สเทพ ราชดาเนน ไมแนนอน 0879774s003 ยงยวด ยงแย ไมแนนอน 0879774

Student

code name credit descc001 การเปนคนด 6(6-3)c002 คอรปชน 6(6-6)c002 เคารพสถาบน 6(6-6)

Subject

M

M

Page 123: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Associations class

Enroll_ID Std_id Sub_ID commnetE0000001 s001 C001E0000002 s001 C002E0000003 s001 C003E0000004 s002 C002E0000005 s002 C003E0000006 s003 C001

Regis / Result

Page 124: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Classes

Student SubjectIDNameAddressTelephone

CodeNameCredit

Mark

Enroll

Association class

* *

Result

Page 125: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Classes

• association class สามารถมสวนรวมใน associations อนๆเชนเดยวกบทคลาสปกตสามารถมได

Page 126: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Classes

Customer ProductNameAddressTelephone

NumberNamePrice

DateLengthConditions

Purchase

Association class

Guarantee

Claim

* *

*

0..1

dependency

Page 127: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

supplier

Vender Products

Buy-items

* *

POS

Page 128: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

ID Name Address Tels001 โกต กาลงกราง ไมแนนอน 0879774s002 สเทพ ราชดาเนน ไมแนนอน 0879774s003 ยงยวด ยงแย ไมแนนอน 0879774

Customer

code name price QTYc001 Computer 35000 10

c002 Printer 4500 35

c002 speaker 850 100

Product

M

M

Page 129: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Associations class

Guarantee_ID Date Length ConditionE0000001E0000002E0000003E0000004E0000005E0000006

guarantee

Page 130: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association Classes

Customer Product

NameAddressTelephone

NumberNamePrice

DateLengthConditions

Purchase

Association class

Guarantee

Claim

* *

*

0..1

Page 131: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Qualified Associations• qualified association

– หมายถง association ทถกทาใหชดเจนโดย attributeทเรยกวา qualifier

– พจารณา qualified association เชนเดยวกบแนวคดของweak entity type ใน ER

Page 132: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Qualified Associations

Golf_CourseNameLocation

Hole

NumberLengthPar

Unqualified

*1

Golf_Course

NameLocation

HoleNumberHoleLengthPar

Qualified

0..11

Page 133: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Qualified Association

Tournament PrizeYearPosition

0..1

Page 134: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Qualified association

ABC Inc. President Roger RabbitABC Inc. Vice President Finances Joe SavemoneyABC Inc. Member of board John WalkerABC Inc. Member of board Susi SanssouciABC Inc. Member of board Karl EichbaumXYZ Inc. President Donald Duck

PersonCompanyOrganization

*Function

Page 135: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class Diagrams: Hints• Class หนงสามารถเปนสวนรวมไดในหลาย diagrams• Diagrams ควรจะแสดงแงมมเฉพาะดาน

– จานวนคลาสไมมากเกนไป– จานวน associations ไมมากเกนไป– ซอน attributes และ operations ทไมจาเปนตองแสดง

• อาจตองมการสราง diagram ซาๆ กนหลายรอบ

student

student

Enroll System

Registration System

PloblemDomain

Page 136: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Difference between attributes and associations

• Conceptual perspective– ไมแตกตางกนมากนก– Attributes เกบคาเดยว (single-valued)

• Specification/implementation perspective– Attribute เกบคา (Value) ไมใชตวอางอง (References)

• ไมมการ share สวนของ attribute values ในระหวาง instances ทสรางจากคลาสเดยวกน

• Often: Stores simple objects – Numbers, Strings, Dates, Money objectst

Page 137: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Require Component/Optional Component

CAR

- Brandname : String

- Wheel : Wheels

+ Start() : Boolean

+ Stop() : Boolean+ Break() : Boolean

Wheels

- Brandname : String

- NoumOfW : Integer

+ Spin() : Boolean

+ TurnLeft() : Boolean+ TurnRight() : Boolean

เครองปรบอากาศ วทย พวงมาลย

Page 138: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class diagrams (cont.)

• Associations• Generalization• Generalization และ

Classification • Aggregation

Page 139: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

• BREAK : 20-09-2557 • สาหรบ นศ. IT 30/1

Page 140: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Generalization• แนวคดของหลกการเชงวตถ

– Generalization จดการ classes ใหอยในรปของโครงสรางลาดบชน (class Hierarchy) ขนกบ similarities และdifferences

– เราเรยกคลาสทอยในระดบทสงกวาของ classes hierarchy วา “superclasses” และทอยในระดบตากวาวา“subclasses”

– เปน “kind-of” relationship

Page 141: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Inheritance and Polymorphism• “subclass” รบถายทอดคณสมบต (inherits)อนไดแก

attributes, operations และassociations มาจาก“superclass” ของตวเอง

• แตอยางไรกตาม ถา attribute หรอ operation ของ“superclass” ถกกาหนดใหคาใหมใน “subclass” จะเปนการ “overrides” คานยามทกาหนดไวใน “superclass” -นาสแนวคดของ polymorphism

Page 142: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Superclasses and Subclasses• “Superclass” มคานยาม attributes, operations และ

associations รวมกนกบ “subclasses” ของคลาสนนๆ• “Subclasses” ม attributes, operations และ associations

เฉพาะเปนของตวเอง โดยเลอกทจะกาหนดนยามใหมใหกบ attribute, operation หรอ relationship ทรบมาจาก “superclass” หรอไมกได

Page 143: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

A Generalization Hierarchy

Geometric_FigureX_PositionY_Position

EllipseMajor_AxisMinor_Axis

CircleRadius

RectangleWidthHeight

Superclass

SubclassescalArea() calArea() calArea()

Polymorphism

Page 144: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

y

x

Page 145: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Single & Multiple Inheritance• generalizations มกเกดใน class hierarchies ทแตละ

“subclass” มเพยง 1 “superclass” - เรยกวา “single inheritance”

• แตมบางสถานการณท “subclass” อาจมไดมากกวา 1 “superclass” - เรยกวา “multiple inheritance”

Page 146: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Multiple InheritanceEmployee

GeneralStaff ProfStaff FullTime PartTime

AcademicSubclass withtwo superclasses

คาถาม จากรปนสวนไหนทเปน multiple inheritance เพราะอะไร ?

Page 147: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Multiple Inheritance

Vehicle Furniture

Wheelchair

Page 148: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Specialization• Specialization

– เปนกระบวนการยอนกลบของ generalization แตใหผลเชนเดม แตกตางกนทจดเรมตนเทานน

• Generalization เปนการคนหาคณลกษณะรวมกน ของ(sub)classes

• Specialization เปนการแยก และคนหาคณลกษณะพเศษของ (super)classes เพอใหได subclasses

Page 149: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class diagrams (cont.)• Associations• Generalization• Generalization และ Classification• Aggregation

Page 150: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Generalization and Classification (= is_a?)1. Shep is a Border Collie.2. A Border Collie is a Dog.3. Dogs are Animals4. A Border Collie is a Breed.5. Dog is a Species

1+2: Shep is a Dog1+2+3: Shep is a animal1+4: Shep is a breed?????2+5: A Border Collie is a Species?????Generalization is transitive (is kind of)Classification is not transitive (is instance of)

A B และ B C :: A C

has_a

Page 151: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

air

samsung

Is a

LG

Is a

ยานพาหนะ

has aรถยนต เรอ

เรอหางยาว

Page 152: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

SpecializationSubclass/Child Class รบถายทอดคณสมบต (inherit) ทงAttributes และ Methods มาจาก Superclass/Parent Class

Employee

+ name : String+ salary : double+ birthDate : MyDate

+ getDetails( ) : String

Manager

+ department : StringManager

Employee

Reusable การนากลบมาใชใหม

Page 153: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Generalization

Employee

+ name : String+ salary : double+ birthDate : MyDate

+ getDetails( ) : String

Manager

+ department : String

เปน flip-side ของ Specialization

การท class ทตางกนม Attributes และ Methods ทเหมอนกน

IS - A

Employee

Manager

Page 154: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class HierarchiesPoint

Circle Square

Cylinder Sphere Box Cubic

ลกศรใน Class Hierararchies แสดงความสมพนธของการรบ

ถายทอดคณสมบต

Cylinder extends Circle

Circle extends Point

Page 155: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

IS-A Relationships การถายทอดคณสมบตเปนคณลกษณะแบบ transitive

Snake IS-A Reptile และ Reptile IS-A Animal

นนคอ Snake IS-A Animal

Animal

Reptile Mammal

Snake Lizard Dog Bat

Bird

Eagle

IS-A

IS-A

Page 156: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Adopting a Design การออกแบบ Class Hierarchies ทเหมาะสม เปนสงสาคญการ

การออกแบบระบบเชงวตถ

Alternatives Hierarchies ขนกบระบบทตองการออกแบบ

Animal

Mammal

Dog Bat

Bird

Eagle

หรอ

Flying Creature

BirdMosquito Bat

Eagle

Page 157: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

The “Object”Class ในภาษาจาวา

คลาส “Object” เปนคลาสบนสดของ คลาสทงหมดทประกอบ

กนขนเปน Class Hierarchies

คลาสทประกาศ โดยไมใชคาเฉพาะ “extends” ระบการสบ

ทอดคณสมบตจากคลาสใดๆ ถอวาเปนการละ “extends Object”

ไว

public class Employee {

...

}

public class Employee extends Object {

...

}

เหมอนกบ

Page 158: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Methods defined in “Object”Class Methods ทถกกาหนดไวในคลาส “Object” ใหคลาสทรบสบทอด

คณสมบตสามารถเรยกใช หรอทาการ Overriding Methods เหลาน

ได ตวอยางเชน

equals(Object object) : Indicates whether some other

object is "equal to" this one.

toString() : Returns a string representation of the object

Clone() : Creates and returns a copy of this object.

...etc.

ดรายละเอยดใน Java & API Language Specification

Page 159: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Two Approaches to reuse Software Inheritance

IS-A relationship

Composition

HAS-A relationship

HAS-A

Customer BankAccount

Employee

Manager

IS-A

Page 160: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Benefits of Inheritance Avoiding redundancies

Source Code ในสวนทเหมอนกนจะถกเขยนขนเพยงครงเดยว

Code reuse & Code Sharing

สามารถนาไปใชใหมได (reuse) ไดโดยการรบถายทอด

คณสมบต

สามารถสรางคลาสใหมจากคลาสเดมทมอยแลวได

Reduced code size

Source Code ถกเขยนขนเพยงครงเดยว และถกนาไปใชใหม

ไดไมจากด

Page 161: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Costs of Inheritance Message-passing overhead

เนองจากอนญาตใหม Code Reuse ทาใหตองมการสงตอความ

ตองการไปยงคลาสอนๆ ทสมพนธกนดวยการถายทอดคณสมบต

Execution Speed

ความเรวในการประมวลผลชาลง เนองจากตองสงตอความ

ตองการไปขอรบบรการจากคลาสอนๆ

Program Complexity

เพมความซบซอนของโปรแกรม

Page 162: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class diagrams (cont.)

• Associations• Generalization• Generalization และ

Classification• Aggregation

Page 163: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Aggregation• Aggregation

– เปนประเภทหนงของ association แตมคณสมบตบางอยางนอกเหนอจาก association แบบปกต

– เปนวตถทม วตถอนๆ เปนสวนองคประกอบ– เปน “part-of” relationship

Page 164: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Notation for aggregation

Class A

Class CClass B Class C

Class B

Class A

หรอ

Inner classes

Page 165: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Inner class / Aggregation

class A {class b{}class c{}class d{}

}

class car {class engine{}class wheels{}class glass{}

}

Page 166: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Example : Aggregation

Book

Front Chapter

Title Preface

End

Appendix Index

Aggregation*1

1 0..1

0..1

* 0..1

1

1

1

1 1 1 1

Page 167: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Example : Aggregation

Company Unit* Department*

Group*

Employee

*

works for

จากรปน

อธบายวาอะไร ?อธบายไดอยางไร ?

Page 168: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Aggregation• มได 2 รปแบบ Aggregation และ Composition• Aggregation

– วตถม วตถอนๆ เปนองคประกอบยอย– เชน Car ม engine และwheels เปนองคประกอบ

• Composition– วตถมวตถอนๆ เปนองคประกอบยอยทงหมด– การสง message ตดตอกบวตถทเปนองคประกอบรวม

อาจมผลกบองคประกอบทงหมด– ถา delete วตถทเปนองคประกอบรวม สวนยอยจะตองถก

delete ทงไปดวย

Page 169: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Aggregation & Composition• เปนความสมพนธแบบ transitive

– ถาวตถ A เปนสวนหนงของ B และ B เปนสวนหนงของ C แลว A เปนสวนหนงของ C ดวย

– เชน ถาทจบประตเปนสวนหนงของ ประต ประตเปนสวนหนงของรถยนต แลว ทจบประตเปนสวนหนงของรถยนต

• เปนความสมพนธแบบ Anti-symmetric– วตถใดๆ อาจไมจาเปนตองเปนสวนประกอบของตวเองทง

ทางตรงและทางออม– เชน ถาประตเปนสวนหนงของรถยนต แตรถยนตไม

จดเปนสวนหนงของประต

Page 170: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Aggregation and composition

Polygon

Point

GraphicsBundle

1 1

1

3..*

colortexture

Aggregation Composition

Page 171: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Association and Aggregation• Question : Association หรอ Aggregation?• Answer : เปน Aggregation

– ถาความสมพนธเปน “part of” – Operation ทเกดกบวตถหนงมผลกระทบกบอกวตถหนง

ในฐานะทเปนองคประกอบของอกวตถหนง

Page 172: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Generalization and Aggregation• Question : Generalization หรอ Aggregation ?• Answer : เปน Generalization

– ถาความสมพนธเปน “kind of”– ถาความสมพนธแบบ “or”

• Answer : เปน Aggregation– ถาความสมพนธเปน “part of” – ถาความสมพนธแบบ “and”

Page 173: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class Diagram - Example• A zoo consists of a set of cages. • Every cage is the home of at least 2 animals. • Cages are located besides each other. • Every cage has at most one left neighbor and at most

one right neighbor. • Animals can be reptiles, insects, and mammals. • Mammals are elephants, monkeys, and tigers. • Monkeys eat bananas. • Tigers prefer meat.

Page 174: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class DiagramRegistrationForm

Professor

CoursenamenumberCredits

open()addStudent(StudentInfo)

Studentnamemajor

CourseOffering

location

open()addStudent(StudentInfo)

nametenureStatus

ScheduleAlgorithm

RegistrationManager

addStudent(Course,StudentInfo)

Page 175: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class Diagram: Notation Summary(stereotype)Classname

{abstract}

attribute: Type$class_attribute: Typeattribute: Type = Default_value

operation {abstract}operation (arg1:Type)operation (arg1:Type): Type$class_operation

CompositeClassnameattribute: Type

operation

SubClassname2attribute: Type

operation

Association_name

Role_name

ComponentClassnameattribute: Type

operation

discriminators

*1 {constraint}

Qualifier

signature

AssociationClassname

association_attrib: Type

SubClassname1attribute: Type

operation

<<actor>>customer

Page 176: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Class Diagram: Notation Summary (cont’d)

ParameterisedClassName

formal_arg

Instantiates

InstantiatedClassName<actual_arg>

ClassName1ClassName2

ClassName3{constraint}

Notes

inheritance

association

instantiation

ternary

+ public# protected- privatenull unspecified/ derived

CategoryName

SubCategory2SubCategory1dependency

CategoryName

ClassName: access

ClassName: access

CategoryName (Public Interface)

has by-reference

has by-value

Uitlityattribute: Type

operation(arg:Type): Type

Page 177: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

• จบบทท 8 สาหรบ IT29/1 • 20-09-2557

• ครงหนาบทท 9 และสงงาน

Page 178: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Models

Page 179: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Three Perspectives• Conceptual (OOA)

– แสดงแนวคดเกยวกบขอบเขตของปญหา– ไมขนกบ implementation

• Specification (OOD)– โครงสรางทวไปของระบบ– กาหนด Interfaces ของ software

• Implementation (OOP)– โครงการของ implementation (classes)

Page 180: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Three Models• Analysis Model• Design Model• Implementation Model

Page 181: นัฐพงศ ส์งเนียม่ …siam2dev.net/E_Learning/OOAD/Lec08_OOAD_Class_And_Object...ใน 渎䠎 ܀ 䤀渀挀攀瀀琀椀漀渀 『䀎 䜎ᤎĎ Ď ᤎᐎȎ

Summary

• Structural Modeling• Class Diagrams and Object Diagrams• Association• Generalization และ Classification• Aggregation และ Composition• Models