unit 09 - system analysis uml
TRANSCRIPT
OOAD 2/2550 ดร.สุขสถิต มสีถติย1
หนวยที่ 9: การออกแบบคลาส (Class Design)
ดร.สุขสถิต มีสถิตยการวิเคราะหและออกแบบเชิงวัตถุ2/2550
OOAD 2/2550 ดร.สุขสถิต มสีถติย2
วัตถุประสงค
เพื่อใหนกัศึกษาสามารถกําหนด วางโครงสรางใหม และเพิ่มประสทิธิภาพการออกแบบออบเจ็ค
เพื่อใหนกัศึกษาสามารถกําหนดการใชซ้าํองคประกอบทีม่อียูแลว
เพื่อใหนกัศึกษาสามารถกําหนด constraint และ contract
เพื่อใหนกัศึกษาสามารถสรางขอกําหนดโอเปอเรชนั
OOAD 2/2550 ดร.สุขสถิต มสีถติย3
การออกแบบรายละเอียด (Detailed Design)
ออกแบบ– การรับขอมูล (inputs)– การแสดงผลขอมูล (outputs)– กระบวนการทํางาน (processes)– โครงสรางแฟมขอมลู หรอืฐานขอมูล (file or
data structures)กระทาํในรูปการออกแบบคลาสและการปฏิสมัพันธระหวางคลาส
OOAD 2/2550 ดร.สุขสถิต มสีถติย4
การออกแบบคลาส (Class Design)
อินพตุ– ขอกําหนดความตองการ (รวมทั้งสภาพแวดลอมในการอมิพลิเมนต (implementation environment))
– แบบจําลองการวิเคราะห (คลาส ซีเคว็น คอมมิวนเิคชนั สเตทแมทชนีไดอะแกรม)
เอาทพุต– แบบจําลองการออกแบบ (ไดอะแกรม และขอกําหนดตางๆ)
OOAD 2/2550 ดร.สุขสถิต มสีถติย5
คลาสไดอะแกรมสําหรับการวิเคราะหและการออกแบบ
คลาสไดอะแกรมสําหรับการวิเคราะห
คลาสไดอะแกรมสําหรับการออกแบบ
สัญลักษณเดยีวกัน แตตางมุมมองกัน
ระบบจะถูกสรางอยางไรแบบจําลองแนวคิดของระบบ
OOAD 2/2550 ดร.สุขสถิต มสีถติย6
สภาพแวดลอมในการอิมพลิเมนต (implementation environment)
ปจจัยระบบปฏิบัติการภาษาโปรแกรมระบบจัดการฐานขอมูลระบบจัดการสวนติดตอผูใชกลไกในการรวมระบบไลบรารีสําหรับใชงานซ้ําความตองการที่ไมเปนฟงกชันกระบวนการพฒันา
OOAD 2/2550 ดร.สุขสถิต มสีถติย7
ความเกี่ยวพันระหวางโมดูล (Coupling)
การขึ้นตอกัน หรือความเกีย่วของระหวางโมดูล (คลาส ออบเจ็คและ โอเปอเรชนั)Interaction coupling– ความเกี่ยวพนัระหวางโอเปอเรชนัและออบเจ็คผานการสงผานเมสเสจ
Inheritance coupling– ความเกี่ยวพนัระหวางคลาสในลาํดบัชัน้การสืบทอดคุณสมบัติ
OOAD 2/2550 ดร.สุขสถิต มสีถติย8
Interaction coupling
ควรจํากัดใหมนีอยโดย– จํากัดจํานวนเมสเสจ– จํากัดจํานวนพารามิเตอร– รูปแบบของพารามิเตอร
OOAD 2/2550 ดร.สุขสถิต มสีถติย9
Interaction coupling
โอเปอเรชันของออบเจ็คอางถึงภายในของอีกออบเจ็คได
Content หรือ Pathological
แย
โอเปอเรชันใชขอมูลโกลบอลซึ่งอยูภายนอกออบเจ็คCommon หรือ Global
โอเปอเรชันสงผานตัวแปรควบคุม ซึ่งคาจะใชในการควบคมการทํางานของโอเปอเรชันที่ถูกเรียก
Control
โอเปอเรชันสงผานออบเจ็คไปยังโอเปอเรชันที่ถูกเรียก ซึ่งใชแคบางสวนของออบเจ็ค
Stamp
โอเปอเรชันสงผานตัวแปรไปยังโอเปอเรชันที่ถูกเรียก ถาเปนตัวแปรผสมจะใชออบเจ็คทั้งตัวในการทํางาน
Data
โอเปอเรชันไมมกีารเรียกใชกันไมมี coupling โดยตรงดี
คําอธิบายชนิดระดับ
OOAD 2/2550 ดร.สุขสถิต มสีถติย10
ความเกี่ยวพันภายในโมดูล (Cohesion)
หมายถึงความเปนหนึง่เดียวของโมดูลในระบบคลาสหรอืออบเจ็คควรแสดงสิ่งๆ เดียว และโอเปอเรชนัทาํงานอยางเดียวเทานัน้Operation cohesion– ความเกี่ยวพนัภายในโอเปอเรชนั– ควรใหมี functional cohesion
โอเปอเรชนัหนึ่งทํางานเพียงงาน (function) เดียว
OOAD 2/2550 ดร.สุขสถิต มสีถติย11
ความเกี่ยวพันภายในโมดูล (Cohesion)
Class cohesion– ความเกี่ยวพนัระหวางแอททรบิิวและโอเปอเรชนัของคลาส– คลาสควรแสดงสิ่งๆ เดียว แอททรบิิวและโอเปอเรชนัทุกตวัที่อยูภายในคลาสตองเปนตวัที่คลาสตองการใชในการแสดงสิ่งสิ่งนัน้
Generalization/Specialization cohesion– ความสมเหตุสมผลในลาํดับชัน้การสืบทอดคุณสมบัติ
OOAD 2/2550 ดร.สุขสถิต มสีถติย12
Cohesion และ Coupling
หลกัการออกแบบทัว่ไปคือควรใหมีความเกี่ยวพันภายในโมดูล (Cohesion) มากควรใหมีความเกี่ยวพันระหวางโมดูล (Coupling) นอย
OOAD 2/2550 ดร.สุขสถิต มสีถติย13
กิจกรรมในการออกแบบคลาส
สรางขอกาํหนดของคลาส (class specification)วางแผนการใชงานซ้ําปรับโครงสรางที่ออกแบบเพิ่มประสทิธิภาพในการออกแบบสรางขอกาํหนดของโอเปอรชนั (operation specification)ปรับปรุง ซีเคว็น คอมมิวนิเคชนั สเตทแมทชนีไดอะแกรม
OOAD 2/2550 ดร.สุขสถิต มสีถติย14
สรางขอกําหนดของคลาส
1.ตรวจสอบวาคลาสจําเปนและความสามารถเพียงพอตอการทํางาน
2.กําหนดรูปแบบของแอททรบิิว3.กําหนดรูปแบบของโอเปอเรชนั4.กําหนดการมองเหน็ (visibility) ของแอททรบิิวและโอเปอเรชนั
5.กําหนด constraints ที่ตองรักษาโดย objects
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}
OOAD 2/2550 ดร.สุขสถิต มสีถติย16
ขอกําหนดของคลาส
ลายเซ็น (Signature) ของโอเปอเรชนั– ชื่อโอเปอเรชนั จํานวนและชนิดของพารามิเตอรทีร่บั และชนิดของคาที่สงคืนถามี
– SyntaxOperation name ‘(’ parameter-list ‘)’ ‘:’ return-type-expression
– เชนcredit(amount:Money):Boolean
OOAD 2/2550 ดร.สุขสถิต มสีถติย17
ขอกําหนดของคลาส
ลายเซ็น (Signature) ของโอเปอเรชนั– ชื่อโอเปอเรชนั จํานวนและชนิดของพารามิเตอรทีร่บั และชนิดของคาที่สงคืนถามี
– SyntaxOperation name ‘(’ parameter-list ‘)’ ‘:’ return-type-expression
– เชน
– Primary operationsconstructor, destructor, get และ set โอเปอเรชนั
credit(amount:Money):Boolean
OOAD 2/2550 ดร.สุขสถิต มสีถติย18
ขอกําหนดของคลาส
กําหนดการมองเห็น (visibility) แอททริบวิและโอเปอเรชนั
เขาถึงไดโดยตรงโดยออบเจ็คของคลาสใดที่อยูในแพคเก็จเดียวกัน
Package~
ใชไดโดยออบเจ็คของคลาสที่เปนเจาของ หรือคลาสลูกหลาน
Protected#
ใชไดโดยออบเจ็คของคลาสที่เปนเจาของPrivate-เขาถึงไดโดยตรงโดยออบเจ็คของคลาสใดPublic+ความหมายการมองเห็นสัญลักษณ
OOAD 2/2550 ดร.สุขสถิต มสีถติย19
วางแผนการใชงานซ้ํา
รูปแบบการออกแบบ (Design patterns)– แนวทางการจัดกลุมออบเจ็คที่ทํางานรวมกัน ที่มีประโยชนในการแกปญหาที่มักเกิดขึ้น
เฟรมเวิรค (Frameworks)– ชุดของคลาสที่อิมพลิเมนตแลว ซึ่งสามารถนํามาใชในการอิมพลิเมนตแอพพลิเคชัน
ไลบรารี (Libraries)– ชุดของคลาสที่อิมพลิเมนตแลว ที่ออกแบบมาเพื่อการใชซ้ํา
(reuse)คอมโพเนนต (components)– สวนของซอฟตแวรที่สามารถตอเขากับระบบเพื่อใชงานฟงกชันเฉพาะที่ระบบตองการ
OOAD 2/2550 ดร.สุขสถิต มสีถติย20
ปรบัโครงสรางการออกแบบใหม (Restructuring the Design)
แฟคเตอรริ่ง (Factoring)– การแยกโอเปอเรชัน หรือคลาส ออกเปนโอเปอเรชัน หรือคลาสใหมการออกแบบการอิมพลีเมนตความสัมพันธ– ออกแบบการอิมพลีเมนตความสัมพันธแบบ association และ
aggregationตรวจสอบ inheritance relationships เพื่อใหแนใจวาใชอยางเหมาะสม
OOAD 2/2550 ดร.สุขสถิต มสีถติย21
การออกแบบ association
ขั้นตอน– กําหนดทิศทางความสัมพันธ– กําหนดแอททริบิวใหมใหคลาสเพื่อแสดงการเชื่อมโยง
Association แบบ One-to-one– แอททริบิวใหมใชเก็บ identifier ของออบเจ็คของคลาสที่เกี่ยวของ
Association แบบ One-to-many– กําหนดแอททริบิวที่เปนอารเรยเพื่อเก็บ identifier ของออบเจ็คทั้งหมดที่เกี่ยวของ
– สราง collection class เพื่อจัดการกลุมออบเจ็คที่เกี่ยวของ และกําหนดใหมีแอททริบิวที่เปนออบเจ็คของ collection class
OOAD 2/2550 ดร.สุขสถิต มสีถติย22
การออกแบบ association
Association แบบ many-to-many– สราง collection class เพื่อจัดการกลุมออบเจ็คที่เกี่ยวของ และกําหนดใหมีแอททรบิิวที่เปนออบเจ็คของ collection class
OOAD 2/2550 ดร.สุขสถิต มสีถติย23
การเพิ่มประสทิธิภาพในการออกแบบ
ทบทวนเสนทางเขาถึงระหวางอองเจ็ค– ลดความยาวของเสนทาง โดยเพิ่มแอททริบิวเพื่อเชื่อมตอตรง
ทบทวนแอททริบิวของแตละคลาส– ถามีเมธอดที่อานและปรับปรุงแอททริบิว และออบเจ็คของคลาสเดียวเทานั้นที่ใชเมธอดนี้
– ควรยายแอททริบิวนั้นไปไวในคลาสที่แรกใชแทน
ตรวจสอบลําดับการเอ็กซคิวทสเตทเมนต (execution of statements)สรางดีไรวแอททริบิวเพื่อลดเวลาการคาํนวณ
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 ออก
OOAD 2/2550 ดร.สุขสถิต มสีถติย25
Constraints และ Contracts
OOAD 2/2550 ดร.สุขสถิต มสีถติย26
ประเภทของ Constraints
Pre-Conditions– ขอบังคับที่ตองเปนจริง เพื่อใหเมธอดทํางานได
Post-condition– ขอบังคับที่ตองเปนจริง หลังจากที่เมธอดทํางานแลว
Invariants– ขอบังคับที่ตองเปนจริงเสมอสําหรับทุกออบเจ็คของคลาส
OOAD 2/2550 ดร.สุขสถิต มสีถติย27
ตัวอยาง Invariants
OOAD 2/2550 ดร.สุขสถิต มสีถติย28
องคประกอบของ Contract
Contract ขอตกลงในการใชงานออบเจ็คของคลาสประกอบดวย– ลายเซ็นโอเปอเรชนั– ชื่อคลาส– คําอธิบายความรบัผิดชอบ– Pre-Conditions– Post-condition
OOAD 2/2550 ดร.สุขสถิต มสีถติย29
การออกแบบโอเปอรเรชนั
OOAD 2/2550 ดร.สุขสถิต มสีถติย30
ขอกําหนดโอเปอรเรชัน (Operation Specification)
เหตกุารณ (Events) ที่ทําใหโอเปอรเรชนัทํางานการสงผานเมสเสจขอกาํหนดอัลกอริทึม (Algorithm specification)– เขียนแบบโครงสราง– ซูโดโคด (Pseudocode)– ยูเอ็มแอลแอคทิวติี้ไดอะแกรม
OOAD 2/2550 ดร.สุขสถิต มสีถติย31
Revised CD Selections Class Diagram