1 / 26

8311302 การวิ เคราะห์และออกแบบเชิงวัตถุ Class Diagram

Object Oriented Analysis And Design . 8311302 การวิ เคราะห์และออกแบบเชิงวัตถุ Class Diagram. การกำหนด Attributes และ Methods ของ Class. Attributes

lavina
Download Presentation

8311302 การวิ เคราะห์และออกแบบเชิงวัตถุ Class Diagram

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object Oriented Analysis And Design 8311302 การวิเคราะห์และออกแบบเชิงวัตถุ Class Diagram OOAD

  2. การกำหนด Attributes และ Methods ของ Class • Attributes • เป็นสิ่งที่กำหนด Unique Identity ของ Object ของ Class เช่น รหัสประจำตัวประชาชนห้องเรียนร่วมกับรหัสนักศึกษา เลขที่ ISBN ของหนังสือแต่ละเล่ม • เป็นสิ่งที่กำหนดคุณลักษณะต่าง ที่สามารถมองเห็นหรือสัมผัสได้ ของClass เช่น สีของสิ่งของต่าง ๆ รสชาติของอาหาร • เป็นสิ่งที่กำหนดคุณลักษณะต่าง ๆ ที่ไม่สามารถมองเห็นหรือสัมผัสได้ แต่มีอยู่จริงของ Class ซึ่งการจะเข้าถึงคุณสมบัติเหล่านั้นได้ต้องผ่านสื่อหรือกระบวนการนำเสนอ เช่น ประเภทของหนังสือ ราคาสินค้า อัตราค่าธรรมเนียม รุ่นของเครื่องใช้ไฟฟ้า • เป็นสิ่งที่บอกถึงสถานะของ Class เช่น สถานการณ์ทำงานของเครื่องยนต์ สถานภาพการสมรสของบุคคล LOGO

  3. Method • สำหรับ Method จะใช้คำกริยา (Verb) เป็นตัวระบุบ่งชี้ • การหา Method ของ Class คือ เป็น Object ที่ถูกกระทำ ตัวอย่าง ห้องสมุดประชาชนแห่งหนึ่งต้องการสร้างระบบคอมพิวเตอร์ที่สามารถเก็บรายละเอียดของการให้บริการ ยืม-คืนหนังสือแก่ประชาชน โดยหนังสือแต่ละเล่มจะมีชื่อ ประเภท ราคา และอัตราค่าปรับ (ต่อวัน) ของหนังสือ สมาชิก ของห้องสมุดแต่ละคนจะมีบัตรสมาชิกและรหัสสมาชิกเป็นของตนเอง และไม่ซ้ำกับสมาชิกคนอื่นๆ โดยสมาชิกแต่ละคน ต้องต่ออายุบัตรสมาชิกทุกๆ 1 ปี ซึ่งจะเสียค่าใช้จ่ายในการต่ออายุครั้งละ 20 บาท LOGO

  4. Encapsulation • คือ กระบวนการในการซ่อนรายละเอียดของคุณลักษณะต่างๆ และรายละเอียดของการทำงานของ Class ไว้ภายในกล่องหรือแคปซูล โดยสิ่งต่างๆ ภายนอก Class จะติดต่อกับ Class ได้ ต้องติดต่อผ่านช่องทางที่ Class เตรียมไว้ให้เท่านั้น ช่องทางเหล่านั้นเรียกว่า “Public Interface” • หลักการ Encapsulation ก่อให้เกิดการมองเห็น Class ได้สองลักษณะคือ • การมอง Class จากภายใน • หากมอง Class จากภายในตัว Class เอง จะเห็นรายละเอียด ทั้ง Attributes และ Methods ทั้งหมดของ Class • การมอง Class จากภายนอก • จะเห็นเฉพาะสิ่งที่ Class เปิดเผยให้เห็นได้ผ่านทาง Public Interface เท่านั้น ซึ่งสิ่งที่อยู่ภายนอก Class ไม่สามารถเห็นรายละเอียดภายในของ Class ได้ นั่นคือการ Information Hiding คือการซ่อนรายละเอียดของ Attributes และ Methods ของ Class จากภายนอก LOGO

  5. Information Hiding • หรือการซ่อนรายละเอียด (Attributes, Methods) ของ Class มีรายระดับ ซึ่งระดับในการมองเห็นรายละเอียดต่าง ๆ จากภายนอก Class นี้เรียกว่า “Visibility” แบ่งได้เป็น 3 ระดับ คือ • Private โดย Attributes/Methods ที่ถูกกำหนดเป็น Private จะไม่ถูกเปิดเผยแก่ภายนอก และไม่สามารถเข้าถึงโดยตรงจากภายนอก แต่สามารถเข้าถึงได้จากภายในตัว Class เอง • Protectedโดย Attributes/Methods ที่ถูกกำหนดเป็น Protected จะไม่ถูกเปิดเผยแก่ภายนอก และไม่สามารถเข้าถึงโดยตรงจากภายนอก แต่สามารถเข้าถึงได้จากภายในตัว Class เอง ซึ่ง Protected Attributes/Methods จะถูกถ่ายทอดไปให้กับ Subclass และสามารถเข้าถึงได้จากภายใน Subclass • Public โดย Attributes/Methods ที่ถูกกำหนดให้เป็น Public จะถูกเปิดเผยและถูกเข้าถึงได้โดยตรงจากภายนอกไม่มีการปกปิดใดๆ รวมทั้งยังสามารถถ่ายทอดไปยัง Subclass ได้ด้วย LOGO

  6. ตัวอย่าง • ต้องการสร้าง Class “ReaderCounter” ซึ่งทำหน้าที่ในการนับจำนวนผู้ใช้บริการห้องสมุดประชาชน โดยกำหนดว่า ReaderCounter จะต้องนับคน เพิ่มขึ้นทีละหนึ่งคน ในกรณีที่ผู้ใช้บริการเดินผ่านประตู และ ReaderCounter ต้องสามารถลดจำนวนคนที่นับไว้ก่อนหน้านี้ได้ทีละหนึ่ง เมื่อผู้ใช้บริการออกจากห้องสมุด (เพื่อตรวจสอบให้แน่ใจว่า ไม่มีใครที่เหลือตกค้างอยู่ในห้องสมุดในแต่ละวัน) • ทางเลือกที่ 1 จะสร้าง Class “ReaderCounter” ให้มี Public Attribute “count” ซึ่งใช้แทนจำนวนคนที่อยู่ในห้องสมุด โดยกำหนดให้ count สามารถถูกเข้าถึงได้อย่างอิสระจากภายนอก • ทางเลือกที่ 2 จะสร้าง Class “ReaderCounter” ให้มี Private Attribute “count” และกำหนดให้มี Public Method “enterCount” และ “exitCount” ซึ่งหน้าที่เพิ่มจำนวน count ขึ้นทีละหนึ่ง และลดจำนวน count ลงทีละหนึ่ง ตามลำดับ LOGO

  7. หลักการตั้งชื่อ Class, Attributes และ Method • ชื่อของ Class, Attribute และ Methods ต้องเป็นชื่อที่สื่อความได้ และตรงกับความหมายของ Class, Attribute และ Methods นั้นๆ ในกรณีที่ชื่อเป็นคำผสมให้นำคำเหล่านั้นมาเรียงต่อกันโดยไม่มีเครื่องหมายใดๆ คั่น โดยอักษรตัวแรกของแต่ละคำ ต้องเป็นตัวพิมพ์ใหญ่ • เช่น ตั้งชื่อ Class ที่ใช้เพื่อจำลองบัตรสมาชิก (Member Card) ว่า “MemberCard” • ชื่อ Class ควรขึ้นต้นด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่ • เช่น ReaderCounter • ชื่อ Methods หรือ Attributes ควรขึ้นต้นด้วยอักษรภาษาอังกฤษตัวพิมพ์เล็ก • เช่น memberCardId, enterCount() LOGO

  8. หลักการตั้งชื่อ Class, Attributes และ Method (ต่อ) • ชื่อ Methods ที่ใช้กำหนดค่าของ Attributes ควรขึ้นต้นด้วยคำว่า “set” แล้วตามด้วยชื่อ Attribute นั้นซึ่งขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่ • เช่น Methods ที่ใช้กำหนดค่าของ Attribute “memberCardId” ควรมีชื่อว่า “setMemberCardId” • ชื่อ Methods ที่ใช้อ่านค่าของ Attributes ควรขึ้นต้นด้วยคำว่า “get” แล้วตามด้วยชื่อ Attribute นั้น ซึ่งขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่ • เช่น Method ที่ใช้อ่านค่าของ Attribute “memberCardId” ควรมีชื่อว่า “getMemberCardId()” LOGO

  9. Association • คือความสัมพันธ์ที่อยู่บนระนาบเดียวกัน คือสิ่งของทั้งสองสิ่งที่มีความสัมพันธ์กันเป็นสิ่งที่มีความสำคัญเท่าเทียมกัน ไม่ใช่องค์ประกอบของกัน • เช่น คนเป็นเจ้าของรถยนต์, แม่มีลูก, สามีรักภรรยา, ประธานบริษัทบริหารกิจการ • ความสัมพันธ์คนทำงานในสถานที่ทำงาน คนและสถานที่ทำงาน ถูกเชื่อมความสัมพันธ์ด้วย Association ที่ชื่อว่า “ทำงานที่ (works at)” • ซึ่งควรมีการกำหนดทิศทาง “คน” ไปยัง “สถานที่ทำงาน” Multiplicity คือค่าที่เป็นไปได้ของจำนวนสมาชิกใน Class หนึ่งๆ ที่มีส่วนรวมใน Association นั้น ซึ่งเรียกค่าของจำนวนสมาชิกของ Class ที่เป็นไปได้ ใน Association นั้นว่า “Multiplicity” LOGO

  10. Multiplicity • โดยจะเรียกจำนวนที่น้อยที่สุดของสมาชิกของ Class ที่มีส่วนร่วมใน Association ว่า “Minimum Multiplicity (Min-card)” • เรียกจำนวนที่มากที่สุดของสมาชิกของ Class ที่มีส่วนร่วมใน Association ว่า “Maximum Multiplicity (Max-card)” LOGO

  11. ตัวอย่าง • สมาชิกของห้องสมุดประชาชน (Member) มีบัตรสมาชิก (Member Card) ได้เพียงหนึ่งใบ • ในการยืมหนังสือ (Book) แต่ละครั้งสมาชิกสามารถยืมได้อย่างน้อย 1 เล่มอย่างมาก 5 เล่ม 1 0..5 LOGO

  12. ตัวอย่าง • หนังสือบางเล่ม (โดยเฉพาะหนังสือเกี่ยวกับคอมพิวเตอร์) จะมีแผ่น CD (Compact Disk) เพื่อศึกษาคู่กับหนังสือเล่มนั้นๆ โดยแผ่น CD จะถูกแยกเก็บไว้ที่บรรณารักษ์ ซึ่งสมาชิกสามารถขอยืมเพื่อนำไปประกอบการค้นคว้าได้โดยแผ่น CD ที่มากับหนังสือจะมีจำนวนเท่าใดก็ได้ ขึ้นอยู่กับความจำเป็น • สมาชิกของห้องสมุด สามารถแจ้งความจำนงขอให้ห้องสมุดจัดหาสื่อวิชาการต่างๆ (Media) ที่ต้องการได้ เช่น เทป แผ่นเสียง สไลด์ โดยสมาชิกหนึ่งคนสามารถแจ้งความจำนงได้มากกว่าหนึ่งรายการ และเป็นไปได้ว่าสื่อหนึ่งรายการอาจถูกแจ้งความจำนงโดยสมาชิกมากกว่าหนึ่งคน 0…* 1 0…* 0…* LOGO

  13. ประเภทความสัมพันธ์ใน Association • One-to-one Association (1-1) คือ Association ที่ Class ทั้งสองข้างของ Association มี Max-card เป็น 1 ทั้งคู่ • One-to-many Association (1-M) คือ Association ที่ Class ข้างหนึ่งของ Association มี Max-card เป็น 1 ในขณะที่ Class อีกข้างหนึ่งมี Max-card ที่มีค่ามากกว่า 1 • Many-to-many Association (M-N) คือ Association ที่ Class ทั้งสองข้างของ Association มี Max-card มากกว่า 1 ทั้งคู่ LOGO

  14. Aggregation • Aggregation คือ กระบวนหาความสัมพันธ์ระหว่าง Class ที่เราสนใจในลักษณะที่ Class หนึ่งเป็นองค์ประกอบของ Class หนึ่ง • ในโลกความเป็นจริงพบว่ามีวัตถุหลายชนิดที่เกิดจากการรวมตัวของวัตถุอื่นๆ เช่น • คนเกิดจากการรวมตัวของ ลำตัว แขน ขา หัว • คอมพิวเตอร์เกิดจากการรวมตัวกันของ Main Board, Ram, Rom, Disk Drive, Case • โลก เกิดจากการรวมตัวกันของ ดิน น้ำ อากาศ และแร่ธาตุต่าง ๆ • Aggregation จำแนกความสัมพันธ์ เป็น 2 ประเภท คือ 1-1 และ 1-M เท่านั้น LOGO

  15. การจำลอง Aggregation ด้วย UML • รถยนต์ (Car) ประกอบด้วยเครื่องยนต์ (Engine) หนึ่งเครื่องยนต์ ตัวถัง (Body) หนึ่งตัวถัง และล้อ (Wheel) จำนวน 4 ล้อ ในขณะที่เรือยนต์ (Boat) ประกอบด้วยหนึ่งเครื่องยนต์ หนึ่งใบพัด (Propeller) และหนึ่งหางเสือ (Rudder) แสดงเป็นภาพ UML ได้ดังรูป LOGO

  16. การจำลอง Aggregation ด้วย UML • File อาจถูกบรรจุอยู่ใน Folder และใน Folder หนึ่งอาจประกอบด้วยหลาย Folder ย่อยภายใน หรือประกอบด้วย File หลายๆ File ก็ได้ หรืออาจเป็นได้ทั้งสองกรณี LOGO

  17. ตัวอย่างการอธิบาย Aggregation ด้วย UML จากข้อความต่อไปนี้ • ชั้นเรียน (ClassRoom) เกิดจากการรวมกันของนักเรียน (Student) อย่างน้อยหนึ่งคน อาจารย์ผู้สอน (Teacher) หนึ่งคน และอุปกรณ์การสอน (TeachingMaterial) ซึ่งอาจมีหรือไม่มีเลยก็ได้ • อาคารเรียน เกิดจากการรวมกันของห้องเรียนหลาย ๆ ห้อง LOGO

  18. Composition • หากพิจารณาจากรูปที่แล้ว ใน Aggregation ของ Building ที่มีต่อ ClassRoomนั้น ClassRoomจะมีอยู่ได้ต้องอาศยการมีอยู่ของ Building เสมอ ถ้า Building ไม่ได้ดำรงอยู่ ClassRoomก็ไม่ดำรงอยู่เช่นเดียวกัน • ซึ่งการดำรงอยู่ของ Building มีอิทธิพลต่อการดำรงอยู่ของ ClassRoomซึ่ง Aggregation ในลักษณะนี้จัดเป็น Aggregation ประเภทพิเศษ เรียกว่า “Composition” LOGO

  19. ตัวอย่างการอธิบาย Composition ด้วย UML จากข้อความต่อไปนี้ • หนังสือ (Book) ประกอบด้วย สองปก (Cover) คือปกหน้าและปกหลัง หนึ่งคำนำ (Perface) หนึ่งสารบัญ (TableOfContent) และเนื้อหาบทต่างๆ (Chapter) ความสัมพันธ์ลักษณะนี้ถือว่าเป็น Composition เนื่องจากหากไม่มีหนังสืออยู่ ปก คำนำ สารบัญ และเนื้อหาจะไม่มีอยู่ด้วยเช่นกัน LOGO

  20. ตัวอย่างการอธิบาย Composition ด้วย UML จากข้อความต่อไปนี้ (ต่อ) • บัญชี (Account) ประกอบไปด้วยหลายๆ หัวบัญชี (AccountingGroup) ซึ่งหัวบัญชีจะไปประกอบไปด้วย รายการย่อยของบัญชี (AccountingItem) หลายรายการ LOGO

  21. Generalization • สามารถอธิบายความสัมพันธ์ในเชิง “จำแนกเป็น” • เช่น แมลงจำแนกเป็นแมลงบิน (ยุง) แมลงคลานซึ่งบินไม่ได้ (ปลวก) ซึ่ง Aggregation และ Association ไม่สามารถจะอธิบายได้ เนื่องจากแมลงไม่ได้มีความหมายว่า ประกอบด้วย แต่ แมลง “จำแนกเป็น” แมลงบินและแมลงคลาน ดังนั้นจึงต้องใช้ Generalization อธิบายความสัมพันธ์ จำแนกเป็น • สัญลักษณ์ • ตัวอย่าง รถสปอร์ต(Sport Car) เกิดจากการเพิ่มระบบ Turbo และตัวถังแบบพิเศษเข้าไปสู่รถปกติ ทำให้วิ่งได้เร็วขึ้น รถยนต์ Generalize Specialize รถสปอร์ต LOGO

  22. ตัวอย่าง การอธิบาย Generalization ด้วย UML รูปที่ 2 Generalization ของ Animal รูปที่ 1 Generalization ของ Car LOGO

  23. Inheritance กับ Visibility • การทำ Inheritance นั้นมีผลโดยตรงต่อ Visibility ของ Attributes/Methods ที่ถูกถ่ายทอดจาก Superclassไปยัง Subclass ซึ่งผลกระทบดังกล่าวก่อให้เกิดเป็นกฎการถ่ายทอด ดังต่อไปนี้ • Public Attributes/Methods ของ Superclassจะถ่ายทอดมาเป็น Public Attributes/Methods ของ Subclass เสมอ • Protected Attributes/Methods ของ Superclass จะถูกถ่ายทอดมาเป็น Protected Attributes/Methods ของ Subclass อนึ่ง การเข้าถึง Attributes และ Methods ของ Subclass ที่ได้รับการถ่ายทอดมาจาก Superclass จะทำได้ โดยผ่าน Method ใดๆ ของ Subclass นั้น โดยไม่คำนึงว่า Method นั้นจะได้มาจากการ Inherit หรือไม่ • Private Attributes/Methods ของ Superclassจะถ่ายทอดมาเป็น Private Attributes/Methods เหล่านั้น จะไม่สามารถเข้าถึงได้โดยตรง หรือโดย Method ของ Subclass ที่ไม่ได้มาจากการถ่ายทอดจาก Superclassการเข้าถึง Attributes/Methods เหล่านั้นจะกระทำได้ทางเดียวเท่านั้นคือ การเรียกใช้ Protected Methods หรือ Public Methods ที่ได้รับการถ่ายทอดมาจาก Superclassเท่านั้น LOGO

  24. ตัวอย่าง จากรูปเกิดจากการปรับปรุง Inheritance โดยเพิ่ม Methods “getAnimalType” และ “setAnimalType” ซึ่งเป็น Methods ที่ใช้ในการอ่านและเขียนค่า animalTypeโดยกำหนดไว้เป็น Private Attribute นอก จากนี้ยังได้เพิ่ม Attribute “animalBirthZone” ซึ่งหมายถึง ถิ่นกำเนิดของสัตว์แต่ละชนิดด้วย LOGO

  25. Multiple Inheritance • คือ การนำคุณลักษณะของสิ่งของสองสิ่งมาใส่ให้กับของอีกสิ่งหนึ่งที่มีคุณสมบัติความเป็นอเนกประสงค์ • เช่น เครื่องเล่นภาพและเสียงอเนกประสงค์ (ComboPlayer) สามารถเป็นได้ทั้งเครื่องเสียง (AudioPlayer) และเครื่องวิดีโอ (VideoPlayer) Class “VideoPlayer” มี Method “playVideo” ส่วน Class “AudioPlayer” มี Method “playAudio” ซึ่งเมื่อ Class ทั้งสองถ่ายทอดคุณลักษณะมาให้แก่ ComboPlayerมีความสามารถในการเล่นวิดีโอ และ เล่นเพลงได้ โดยเครื่อง ComboPlayerนี้จะต้องมี Method “changePlayMode” เพื่อกำหนดว่าในขณะ เวลาหนึ่ง ComboPlayer จะทำงานในโหมดใด (จะเล่น เพลงหรือเล่นวิดีโอ) LOGO

  26. Thank You ! LOGO

More Related