31
OOAD 2/2550 ดร.สุขสถิต มีสถิตย 1 หนวยที9: การออกแบบคลาส (Class Design) ดร.สุขสถิต มีสถิตย การวิเคราะหและออกแบบเชิงวัตถุ 2/2550

Unit 09 - System Analysis UML

  • Upload
    sushike

  • View
    229

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย1

หนวยที่ 9: การออกแบบคลาส (Class Design)

ดร.สุขสถิต มีสถิตยการวิเคราะหและออกแบบเชิงวัตถุ2/2550

Page 2: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย2

วัตถุประสงค

เพื่อใหนกัศึกษาสามารถกําหนด วางโครงสรางใหม และเพิ่มประสทิธิภาพการออกแบบออบเจ็ค

เพื่อใหนกัศึกษาสามารถกําหนดการใชซ้าํองคประกอบทีม่อียูแลว

เพื่อใหนกัศึกษาสามารถกําหนด constraint และ contract

เพื่อใหนกัศึกษาสามารถสรางขอกําหนดโอเปอเรชนั

Page 3: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย3

การออกแบบรายละเอียด (Detailed Design)

ออกแบบ– การรับขอมูล (inputs)– การแสดงผลขอมูล (outputs)– กระบวนการทํางาน (processes)– โครงสรางแฟมขอมลู หรอืฐานขอมูล (file or

data structures)กระทาํในรูปการออกแบบคลาสและการปฏิสมัพันธระหวางคลาส

Page 4: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย4

การออกแบบคลาส (Class Design)

อินพตุ– ขอกําหนดความตองการ (รวมทั้งสภาพแวดลอมในการอมิพลิเมนต (implementation environment))

– แบบจําลองการวิเคราะห (คลาส ซีเคว็น คอมมิวนเิคชนั สเตทแมทชนีไดอะแกรม)

เอาทพุต– แบบจําลองการออกแบบ (ไดอะแกรม และขอกําหนดตางๆ)

Page 5: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย5

คลาสไดอะแกรมสําหรับการวิเคราะหและการออกแบบ

คลาสไดอะแกรมสําหรับการวิเคราะห

คลาสไดอะแกรมสําหรับการออกแบบ

สัญลักษณเดยีวกัน แตตางมุมมองกัน

ระบบจะถูกสรางอยางไรแบบจําลองแนวคิดของระบบ

Page 6: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย6

สภาพแวดลอมในการอิมพลิเมนต (implementation environment)

ปจจัยระบบปฏิบัติการภาษาโปรแกรมระบบจัดการฐานขอมูลระบบจัดการสวนติดตอผูใชกลไกในการรวมระบบไลบรารีสําหรับใชงานซ้ําความตองการที่ไมเปนฟงกชันกระบวนการพฒันา

Page 7: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย7

ความเกี่ยวพันระหวางโมดูล (Coupling)

การขึ้นตอกัน หรือความเกีย่วของระหวางโมดูล (คลาส ออบเจ็คและ โอเปอเรชนั)Interaction coupling– ความเกี่ยวพนัระหวางโอเปอเรชนัและออบเจ็คผานการสงผานเมสเสจ

Inheritance coupling– ความเกี่ยวพนัระหวางคลาสในลาํดบัชัน้การสืบทอดคุณสมบัติ

Page 8: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย8

Interaction coupling

ควรจํากัดใหมนีอยโดย– จํากัดจํานวนเมสเสจ– จํากัดจํานวนพารามิเตอร– รูปแบบของพารามิเตอร

Page 9: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย9

Interaction coupling

โอเปอเรชันของออบเจ็คอางถึงภายในของอีกออบเจ็คได

Content หรือ Pathological

แย

โอเปอเรชันใชขอมูลโกลบอลซึ่งอยูภายนอกออบเจ็คCommon หรือ Global

โอเปอเรชันสงผานตัวแปรควบคุม ซึ่งคาจะใชในการควบคมการทํางานของโอเปอเรชันที่ถูกเรียก

Control

โอเปอเรชันสงผานออบเจ็คไปยังโอเปอเรชันที่ถูกเรียก ซึ่งใชแคบางสวนของออบเจ็ค

Stamp

โอเปอเรชันสงผานตัวแปรไปยังโอเปอเรชันที่ถูกเรียก ถาเปนตัวแปรผสมจะใชออบเจ็คทั้งตัวในการทํางาน

Data

โอเปอเรชันไมมกีารเรียกใชกันไมมี coupling โดยตรงดี

คําอธิบายชนิดระดับ

Page 10: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย10

ความเกี่ยวพันภายในโมดูล (Cohesion)

หมายถึงความเปนหนึง่เดียวของโมดูลในระบบคลาสหรอืออบเจ็คควรแสดงสิ่งๆ เดียว และโอเปอเรชนัทาํงานอยางเดียวเทานัน้Operation cohesion– ความเกี่ยวพนัภายในโอเปอเรชนั– ควรใหมี functional cohesion

โอเปอเรชนัหนึ่งทํางานเพียงงาน (function) เดียว

Page 11: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย11

ความเกี่ยวพันภายในโมดูล (Cohesion)

Class cohesion– ความเกี่ยวพนัระหวางแอททรบิิวและโอเปอเรชนัของคลาส– คลาสควรแสดงสิ่งๆ เดียว แอททรบิิวและโอเปอเรชนัทุกตวัที่อยูภายในคลาสตองเปนตวัที่คลาสตองการใชในการแสดงสิ่งสิ่งนัน้

Generalization/Specialization cohesion– ความสมเหตุสมผลในลาํดับชัน้การสืบทอดคุณสมบัติ

Page 12: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย12

Cohesion และ Coupling

หลกัการออกแบบทัว่ไปคือควรใหมีความเกี่ยวพันภายในโมดูล (Cohesion) มากควรใหมีความเกี่ยวพันระหวางโมดูล (Coupling) นอย

Page 13: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย13

กิจกรรมในการออกแบบคลาส

สรางขอกาํหนดของคลาส (class specification)วางแผนการใชงานซ้ําปรับโครงสรางที่ออกแบบเพิ่มประสทิธิภาพในการออกแบบสรางขอกาํหนดของโอเปอรชนั (operation specification)ปรับปรุง ซีเคว็น คอมมิวนิเคชนั สเตทแมทชนีไดอะแกรม

Page 14: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย14

สรางขอกําหนดของคลาส

1.ตรวจสอบวาคลาสจําเปนและความสามารถเพียงพอตอการทํางาน

2.กําหนดรูปแบบของแอททรบิิว3.กําหนดรูปแบบของโอเปอเรชนั4.กําหนดการมองเหน็ (visibility) ของแอททรบิิวและโอเปอเรชนั

5.กําหนด constraints ที่ตองรักษาโดย objects

Page 15: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย15

ขอกําหนดของคลาส (Class specification)

รูปแบบแอททริบิว– ชื่อและชนิดขอมูลที่ใชในการเก็บคาของแอททรบิิว– Syntax ในการประกาศ

name ‘:’ type-expression ‘=’ initial-value ‘{’ property-string ‘}’เชน

– จํานวนของแอททริบิวแตละตัว (multiplicity)เชน qualification:String[0..10]

balance:Money = 0

accountName:String {not null}

Page 16: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย16

ขอกําหนดของคลาส

ลายเซ็น (Signature) ของโอเปอเรชนั– ชื่อโอเปอเรชนั จํานวนและชนิดของพารามิเตอรทีร่บั และชนิดของคาที่สงคืนถามี

– SyntaxOperation name ‘(’ parameter-list ‘)’ ‘:’ return-type-expression

– เชนcredit(amount:Money):Boolean

Page 17: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย17

ขอกําหนดของคลาส

ลายเซ็น (Signature) ของโอเปอเรชนั– ชื่อโอเปอเรชนั จํานวนและชนิดของพารามิเตอรทีร่บั และชนิดของคาที่สงคืนถามี

– SyntaxOperation name ‘(’ parameter-list ‘)’ ‘:’ return-type-expression

– เชน

– Primary operationsconstructor, destructor, get และ set โอเปอเรชนั

credit(amount:Money):Boolean

Page 18: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย18

ขอกําหนดของคลาส

กําหนดการมองเห็น (visibility) แอททริบวิและโอเปอเรชนั

เขาถึงไดโดยตรงโดยออบเจ็คของคลาสใดที่อยูในแพคเก็จเดียวกัน

Package~

ใชไดโดยออบเจ็คของคลาสที่เปนเจาของ หรือคลาสลูกหลาน

Protected#

ใชไดโดยออบเจ็คของคลาสที่เปนเจาของPrivate-เขาถึงไดโดยตรงโดยออบเจ็คของคลาสใดPublic+ความหมายการมองเห็นสัญลักษณ

Page 19: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย19

วางแผนการใชงานซ้ํา

รูปแบบการออกแบบ (Design patterns)– แนวทางการจัดกลุมออบเจ็คที่ทํางานรวมกัน ที่มีประโยชนในการแกปญหาที่มักเกิดขึ้น

เฟรมเวิรค (Frameworks)– ชุดของคลาสที่อิมพลิเมนตแลว ซึ่งสามารถนํามาใชในการอิมพลิเมนตแอพพลิเคชัน

ไลบรารี (Libraries)– ชุดของคลาสที่อิมพลิเมนตแลว ที่ออกแบบมาเพื่อการใชซ้ํา

(reuse)คอมโพเนนต (components)– สวนของซอฟตแวรที่สามารถตอเขากับระบบเพื่อใชงานฟงกชันเฉพาะที่ระบบตองการ

Page 20: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย20

ปรบัโครงสรางการออกแบบใหม (Restructuring the Design)

แฟคเตอรริ่ง (Factoring)– การแยกโอเปอเรชัน หรือคลาส ออกเปนโอเปอเรชัน หรือคลาสใหมการออกแบบการอิมพลีเมนตความสัมพันธ– ออกแบบการอิมพลีเมนตความสัมพันธแบบ association และ

aggregationตรวจสอบ inheritance relationships เพื่อใหแนใจวาใชอยางเหมาะสม

Page 21: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย21

การออกแบบ association

ขั้นตอน– กําหนดทิศทางความสัมพันธ– กําหนดแอททริบิวใหมใหคลาสเพื่อแสดงการเชื่อมโยง

Association แบบ One-to-one– แอททริบิวใหมใชเก็บ identifier ของออบเจ็คของคลาสที่เกี่ยวของ

Association แบบ One-to-many– กําหนดแอททริบิวที่เปนอารเรยเพื่อเก็บ identifier ของออบเจ็คทั้งหมดที่เกี่ยวของ

– สราง collection class เพื่อจัดการกลุมออบเจ็คที่เกี่ยวของ และกําหนดใหมีแอททริบิวที่เปนออบเจ็คของ collection class

Page 22: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย22

การออกแบบ association

Association แบบ many-to-many– สราง collection class เพื่อจัดการกลุมออบเจ็คที่เกี่ยวของ และกําหนดใหมีแอททรบิิวที่เปนออบเจ็คของ collection class

Page 23: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย23

การเพิ่มประสทิธิภาพในการออกแบบ

ทบทวนเสนทางเขาถึงระหวางอองเจ็ค– ลดความยาวของเสนทาง โดยเพิ่มแอททริบิวเพื่อเชื่อมตอตรง

ทบทวนแอททริบิวของแตละคลาส– ถามีเมธอดที่อานและปรับปรุงแอททริบิว และออบเจ็คของคลาสเดียวเทานั้นที่ใชเมธอดนี้

– ควรยายแอททริบิวนั้นไปไวในคลาสที่แรกใชแทน

ตรวจสอบลําดับการเอ็กซคิวทสเตทเมนต (execution of statements)สรางดีไรวแอททริบิวเพื่อลดเวลาการคาํนวณ

Page 24: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย24

ปรบั Problem Domain Classes เขากับ Implementation Languages

ภาษาที่รองรับ Single-Inheritance– เปลี่ยนเปน association relationships จํานวนความสัมพันธเปน 1..1 หรือ 0..1

– ยุบ inheritance hierarchy โดยการคัดลอก attributes และ methods ของ additional superclass(es)

ภาษาแบบ Object-based– เอาความสัมพันธแบบ Inheritance ออก

Page 25: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย25

Constraints และ Contracts

Page 26: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย26

ประเภทของ Constraints

Pre-Conditions– ขอบังคับที่ตองเปนจริง เพื่อใหเมธอดทํางานได

Post-condition– ขอบังคับที่ตองเปนจริง หลังจากที่เมธอดทํางานแลว

Invariants– ขอบังคับที่ตองเปนจริงเสมอสําหรับทุกออบเจ็คของคลาส

Page 27: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย27

ตัวอยาง Invariants

Page 28: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย28

องคประกอบของ Contract

Contract ขอตกลงในการใชงานออบเจ็คของคลาสประกอบดวย– ลายเซ็นโอเปอเรชนั– ชื่อคลาส– คําอธิบายความรบัผิดชอบ– Pre-Conditions– Post-condition

Page 29: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย29

การออกแบบโอเปอรเรชนั

Page 30: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย30

ขอกําหนดโอเปอรเรชัน (Operation Specification)

เหตกุารณ (Events) ที่ทําใหโอเปอรเรชนัทํางานการสงผานเมสเสจขอกาํหนดอัลกอริทึม (Algorithm specification)– เขียนแบบโครงสราง– ซูโดโคด (Pseudocode)– ยูเอ็มแอลแอคทิวติี้ไดอะแกรม

Page 31: Unit 09 - System Analysis UML

OOAD 2/2550 ดร.สุขสถิต มสีถติย31

Revised CD Selections Class Diagram