Class Diagram
ทบทวน 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 Diagram สัญญลักษณ์ Class ประกอบด้วย Class Name คือ ชื่อของ Class Attributes คือ คุณลักษณะของ Class Operations หรือ Methods คือ กิจกรรมที่สามารถกระทำกับObject นั้นๆได้ Class Name Attributes Methods
คลาส (Class) นักศึกษา Student StudentID รหัสนักศึกษา FirstName ชื่อ นามสกุล ที่อยู่ เบอร์โทรศัพท์ วันเกิด คณะ GPA ลงทะเบียน() ถอนรายวิชา() Student StudentID FirstName LastName Address Telephone Birthdate Faculty GPA Register() Drop() ตัวอย่าง Class Student ตัวอย่าง Class Student
สัญลักษณ์ Visibility Private แทนด้วย - Protected แทนด้วย # Public แทนด้วย +
สัญลักษณ์ Class Man - Name # Surname - Age + Tell_Name + Tell_Age
Visibility แบบ Public มองเห็นและเรียกใช้ได้โดยตรงจากภายนอก เข้าไปเปลี่ยนค่า อ่านค่า หรือเรียกใช้งานได้ทันทีโดยอิสระจากภายนอก มักใช้กับ Functions มากกว่า Attributes จะใช้เครื่องหมาย (+) กำกับไว้ข้างหน้า
Visibility แบบ Private ไม่สามารถเห็นได้จากภายนอก จะเห็นได้ภายในเฉพาะตัว class เองเท่านั้น หากภายนอกต้องการแก้ไข หรืออ่านค่า ทำได้วิธีเดียวคือ ทำผ่าน Function ที่เกี่ยวข้อง โดยทั่วไปมักใช้กับ Attributes มากกว่า Functions จะใช้เครื่องหมาย (-) กำกับไว้ข้างหน้า
Visibility แบบ Protected สงวนไว้สำหรับการทำ Inheritance โดยเฉพาะ โดยปกติจะเป็นของ Superclass เมื่อทำ inheritance แล้ว Attributes และ Functions เหล่านี้จะเป็นได้ทั้ง Private หรือ Protect ซึ่งขึ้นอยู่กับภาษาที่ใช้ จะใช้เครื่องหมาย (#) กำกับไว้หน้า
ตัวอย่าง Class คน คน - เลขบัตรประจำตัวประชาชน - ชื่อ # นามสกุล - อายุ - หมู่เลือด + สีผม + บอกเลขบัตรประชาชน + บอกชื่อ + บอกนามสกุล + บอกอายุ + บอกหมู่เลือด
ตัวอย่าง แสดง Class Diagram Cabbie - companyName : String - Name : String +Cabbie : +setName :void +giveDirections :void -turnRight :void -turnLeft :void +getCompanyName :String ชื่อ Class Attibute Constructors Methods
จงเขียน Class จาก Class Diagram ที่กำหนดให้ต่อไปนี้ Teacher - faculty : String - salary : double - count : static int + Teacher() + setTeacher(String f,double s) + showBonus(int y) : double + toString() : String + getCount() : static int Person - name : String - age : int - count : static int + Person() + setPerson(String n,int a) + toString() : String + getCount() : static int * โบนัสคิด 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 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
แบบฝึกหัด จงสร้าง Use Case Diagram ของระบบห้องสมุดในมหาวิทยาลัยแห่งหนึ่ง ซึ่งผู้เข้าใช้บริการได้แก่ นักศึกษา อาจารย์ และพนักงานของมหาวิทยาลัย ในกระบวนการทำงาน เจ้าหน้าที่ห้องสมุดจะทำหน้าที่ให้บริการยืม/คืนหนังสือของแก่บุคคลดังกล่าว นอกจากนี้ยังจะต้องจัดการกับทรัพยากรในห้องสมุด เช่น การเพิ่ม, แก้ไข, ลบข้อมูลหนังสือและวารสาร รวมทั้งข้อมูลเกี่ยวกับสมาชิกของห้องสมุดอีกด้วย ทุกเดือน เจ้าหน้าที่ห้องสมุดจะต้องทำรายงานต่างๆ ส่งให้กับผู้อำนวยการศูนย์สารสนเทศ เช่น รายงานจำนวนสมาชิก, รายงานจำนวนหนังสือและวารสารใหม่, รายงานการยืม/คืนหนังสือ, รายงานค่าปรับล่าช้า เป็นต้น