420 likes | 1.14k Views
Class Diagram. ทบทวน Classification Abstraction. คน. Is member of. สมชาย. นก. สมจิตร. ลูกเกด. ทบทวน Classification Abstraction. รถ. Is member of. รถเก๋งของแดง. รถมอเตอร์ไซต์ ของดำ. รถสปอร์ต ของสมศรี. รถตู้ของสมควร.
E N D
ทบทวน Classification Abstraction คน Is member of สมชาย นก สมจิตร ลูกเกด
ทบทวน Classification Abstraction รถ Is member of รถเก๋งของแดง รถมอเตอร์ไซต์ ของดำ รถสปอร์ต ของสมศรี รถตู้ของสมควร
ถ้าต้องการให้ concept ใช้ได้กับทุก ๆ object ข้างล่างนี้จะต้องทำอย่างไร รถจักรยานยนต์ซูซูกิ ? รถยนต์โตโยต้า ? รถโดยสาร 6 ล้อ volvo เรืออันดามันปริ๊นเซส รถไฟ รถจักรยาน BMX
รถจักรยานยนต์ซูซูกิ • Concept เกี่ยวกับรถ • มีเครื่องยนต์ • มีล้อจำนวนหนึ่ง • วิ่งไปบนถนนได้ • ใช้แก๊สหรือนำมันเป็นเชื่องเพลิง รถยนต์โตโยต้า รถยนต์ รถโดยสาร 6 ล้อ เรืออันดามันปริ๊นเซส รถไฟ รถจักรยาน BMX
ต.ย. โจทย์ • จงให้ Concept ของ Computer • จงให้ Concept ของ นักศึกษา • จงให้ Concept ของ TV • จงให้ Concept ของ โทรศัพท์มือถือ
Concept • ใช้ไฟฟ้า • มีการประมวลผล • จัดเก็บข้อมูลได้ PC COMPUTER Notebook PDA มือถือ เครื่องคิดเลขไฟฟ้า
Concept • ชื่อ • รหัสนักศึกษา • วิชาเอก • รุ่น/หมู่ ปกติ นักศึกษา กศ.บป กศ.พบ. นศ. ศูนย์ บริการ กศ.พท.
Concept • ใช้ไฟฟ้า • จอภาพ • ปุ่มเปลี่ยนช่อง • ลำโพง • รีโมท Sony TV Sumsung
Concept โทรศัพท์มือถือ
Class Diagram • Class Diagram คือ แผนภาพที่ใช้แสดง Class และ ความสัมพันธ์ระหว่าง Class ของระบบที่สนใจ (Problem Domain) เช่น ในระบบจัดซื้อ Class ที่เกี่ยวข้องคือ ผู้ผลิต, พนักงานจัดซื้อ, ใบสั่งซื้อ, ใบเสนอราคา, ใบเสร็จรับเงิน เป็นต้น
การระบุ Class และ Object • ในบาง Problem Domain อาจจะได้ทั้ง Class และ Object ในเวลาเดียวกัน ดังนั้น จำเป็นต้องระบุให้แน่ชัดว่าสิ่งใดคือ Class และสิ่งใดคือ Object
ตัวอย่าง การระบุ Class และ Object “พยาบาลชื่อ ปราณี ฉีดยาป้องกันโรคบาดทะยักให้แก่คนไข้ชื่อ กิตติ” ขั้นตอนที่ 1 : แยกคำนาม • พยาบาลชื่อ ปราณี • ยาป้องกันโรคบาดทะยัก • คนไข้ชื่อกิตติ
ตัวอย่าง การระบุ Class และ Object ขั้นตอนที่ 2 : แยกประเภทของคำนาม • พยาบาล : Class • ปราณี : Object หนึ่งใน Class พยาบาล • คนไข้ : Class • กิตติ : Object หนึ่งใน Class คนไข้ • ยาป้องกันโรคบาดทะยัก : Class / Object
ตัวอย่างที่ 3.4 • ยาป้องกันโรคบาดทะยัก : Class • เพราะเป็นการบอกอย่างกว้าง ๆ ว่าเป็นยาป้องกันบาดทะยัก แต่ไม่ได้ระบุยี่ห้อยา • ยาป้องกันโรคบาดทะยัก : Object • ถือเป็น Object หนึ่งใน Class ยา
คน สมศรี สมควร สมจิตร สมศักดิ์ Classification ของ Class คน
หมา แมว สัตว์สีขาว สัตว์สีดำ แมวสีดำ หมาสีดำ แมวสีขาว หมาสีขาว Classification ของ หมา แมว สัตว์สีขาวและสัตว์สีดำ ในบางครั้ง Object หนึ่งสามารถ เป็นสมาชิกของ Class ได้มาก กว่าหนึ่ง Class ได้เช่นกันดังตัวอย่างต่อไปนี้
หมา แมว หมาสีดำ หมาสีขาว แมวสีดำ แมวสีขาว การปรับปรุงการทำ Classification ของหมาและแมว
Class Name Attributes Methods Class Diagram • สัญญลักษณ์ Class ประกอบด้วย • Class Name คือ ชื่อของ Class • Attributes คือ คุณลักษณะของ Class • Operations หรือ Methods คือ กิจกรรมที่สามารถกระทำกับObject นั้นๆได้
Student นักศึกษา StudentID FirstName LastName Address Telephone Birthdate Faculty GPA รหัสนักศึกษา ชื่อ นามสกุล ที่อยู่ เบอร์โทรศัพท์ วันเกิด คณะ GPA Register() Drop() ลงทะเบียน() ถอนรายวิชา() คลาส (Class) ตัวอย่าง Class Student ตัวอย่าง Class Student
สัญลักษณ์ Visibility • Private แทนด้วย - • Protected แทนด้วย # • Public แทนด้วย +
Man - Name # Surname - Age + Tell_Name + Tell_Age สัญลักษณ์ Class
Visibility แบบ Public • มองเห็นและเรียกใช้ได้โดยตรงจากภายนอก • เข้าไปเปลี่ยนค่า อ่านค่า หรือเรียกใช้งานได้ทันทีโดยอิสระจากภายนอก • มักใช้กับ Functions มากกว่า Attributes • จะใช้เครื่องหมาย (+) กำกับไว้ข้างหน้า
Visibility แบบ Private • ไม่สามารถเห็นได้จากภายนอก จะเห็นได้ภายในเฉพาะตัว class เองเท่านั้น • หากภายนอกต้องการแก้ไข หรืออ่านค่า ทำได้วิธีเดียวคือ ทำผ่าน Function ที่เกี่ยวข้อง • โดยทั่วไปมักใช้กับ Attributes มากกว่า Functions • จะใช้เครื่องหมาย (-) กำกับไว้ข้างหน้า
Visibility แบบ Protected • สงวนไว้สำหรับการทำ Inheritance โดยเฉพาะ • โดยปกติจะเป็นของ Superclass • เมื่อทำ inheritance แล้ว Attributes และ Functions เหล่านี้จะเป็นได้ทั้ง Private หรือ Protect ซึ่งขึ้นอยู่กับภาษาที่ใช้ • จะใช้เครื่องหมาย (#) กำกับไว้หน้า
คน - เลขบัตรประจำตัวประชาชน - ชื่อ # นามสกุล - อายุ - หมู่เลือด + สีผม + บอกเลขบัตรประชาชน + บอกชื่อ + บอกนามสกุล + บอกอายุ + บอกหมู่เลือด ตัวอย่าง Class คน
ชื่อ Class Attibute ตัวอย่าง แสดง Class Diagram Constructors Methods
จงเขียน Class จาก Class Diagram ที่กำหนดให้ต่อไปนี้ * โบนัสคิด 1.5% ของเงินเดือน
การสืบทอดคุณสมบัติ (Inheritance) • การสืบทอดคุณสมบัติ (Inheritance) คือ การที่ Subclass ได้รับการถ่ายทอดคุณสมบัติ (Attributes) มาจาก Superclass แล้วผนวกคุณสมบัติพิเศษเพิ่มเข้าไป • สัญญลักษณ์ที่ใช้ คือ ลูกศรหัวรูปสามเหลี่ยมใส ชี้จาก Subclass ไปยัง Superclass Multiple Inheritance
การสืบทอดคุณสมบัติ (Inheritance) Without Inheritance With Inheritance
การสืบทอดคุณสมบัติ (Inheritance) • หลักของการสืบทอดคุณสมบัติจะทำให้ความสัมพันธ์ระหว่าง Object มีความชัดเจนยิ่งขึ้น กล่าวคือถ้ามีความสัมพันธ์ที่ชัดเจนมากขึ้นเท่าใด จะส่งผลให้การออกแบบระบบงานง่ายขึ้น • ผู้ออกแบบระบบงานเชิงวัตถุสามารถออกแบบระบบงานขนาดใหญ่ได้โดยการอาศัย Object ที่มีการนิยามไว้ก่อนหรือที่มีผู้อื่นทำการออกแบบไว้ก่อนแล้ว ซึ่งเป็นที่มาของการนำกลับมาใช้ใหม่ (Reusability) ที่มา: การวิเคราะห์และออกแบบระบบ, โอภาส เอี่มสิริวงศ์ 2548
ข้อดีของการสืบทอดคุณสมบัติข้อดีของการสืบทอดคุณสมบัติ • การสืบทอดคุณสมบัติมีข้อดี คือ • ทำให้มีโครงสร้างที่เป็นระบบ สามารถปรับเปลี่ยนได้ง่าย • ลดเวลาในการพัฒนาระบบ • ลดค่าใช้จ่ายในการพัฒนาระบบ ที่มา: การวิเคราะห์และออกแบบระบบ, โอภาส เอี่มสิริวงศ์ 2548
Encapsulation และ Information Hiding • การซ่อนรายละเอียดเป็นพื้นฐานของการปกปิดข้อมูลภายในและวิธีการทำงานของ Object • ตามแนวคิดเชิงวัตถุการจะล่วงรู้รายละเอียดข้อมูลของ Object จะต้องได้รับอนุญาตจากเจ้าของ Object นั้นก่อน กล่าวคือการเข้าถึงข้อมูลนั้น จะไม่สามารถเข้าถึงได้โดยตรง แต่จะต้องมีการตอบรับจาก Method ใน Object ปลายทางนั้นว่าจะยอมให้ Object ที่ส่ง Message เข้าถึงข้อมูลของตนหรือไม่ • Encapsulation หมายถึง ลักษณะการเขียนโปรแกรมที่จะมีการซ่อนข้อมูลที่ต้องการควบคุมความถูกต้องของข้อมูลไว้ (Information Hiding) และบังคับให้ Object อื่นเข้าถึงข้อมูลที่ซ่อนไว้ผ่านทาง Interface ที่เตรียมไว้ ทำให้สามารถควบคุมความถูกต้องของข้อมูลได้
Encapsulation และ Information Hiding • กลไกการปกป้องกันข้อมูลและวิธีการทำงานของ Object สามารถเป็น • Public (+) ซึ่งสามารถเข้าถึงได้โดยตรงจากภายนอก • Private (#) ซึ่งจะถูกใช้งานจากภายใน Class เท่านั้น • Protected (-) ซึ่งจะสามารถเห็นหรือเข้าถึงได้จากภายใน Subclass เท่านั้น
ความสัมพันธ์ระหว่าง Object • ความสัมพันธ์ระหว่าง Object ประกอบด้วย • Association • Aggregation • Composition • Generalization
Association • เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบ 2 ทิศทาง
Aggregation • เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบ “Whole-Part” หรือ “is part of” โดยจะมี Class ที่ใหญ่ที่สุดที่เป็น Object หลัก และมี Class อื่นเป็นส่วนประกอบ
Composition • เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบขึ้นต่อกันและมีความเกี่ยวข้องกันเสมอ โดยจะมี Class ซึ่งเป็นองค์ประกอบของ Class อื่นที่ใหญ่กว่า • เมื่อ Class ที่ใหญ่กว่าถูกทำลาย Class ที่เป็นองค์ประกอบก็จะถูกทำลายไปด้วย
Generalization • เป็นความสัมพันธ์ระหว่าง Object หรือ Class ในลักษณะของการสืบทอดคุณสมบัติจาก Class หนึ่ง (Superclass) ไปยังอีก Class หนึ่ง (Subclass)
ตัวอย่าง Class Diagram ตัวอย่าง Class Diagram ในระบบธนาคาร
แบบฝึกหัด จงสร้าง Use Case Diagram ของระบบห้องสมุดในมหาวิทยาลัยแห่งหนึ่ง ซึ่งผู้เข้าใช้บริการได้แก่ นักศึกษา อาจารย์ และพนักงานของมหาวิทยาลัย ในกระบวนการทำงาน เจ้าหน้าที่ห้องสมุดจะทำหน้าที่ให้บริการยืม/คืนหนังสือของแก่บุคคลดังกล่าว นอกจากนี้ยังจะต้องจัดการกับทรัพยากรในห้องสมุด เช่น การเพิ่ม, แก้ไข, ลบข้อมูลหนังสือและวารสาร รวมทั้งข้อมูลเกี่ยวกับสมาชิกของห้องสมุดอีกด้วย ทุกเดือน เจ้าหน้าที่ห้องสมุดจะต้องทำรายงานต่างๆ ส่งให้กับผู้อำนวยการศูนย์สารสนเทศ เช่น รายงานจำนวนสมาชิก, รายงานจำนวนหนังสือและวารสารใหม่, รายงานการยืม/คืนหนังสือ, รายงานค่าปรับล่าช้า เป็นต้น