1 / 94

การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)

การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD). โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com. บทที่ 6 Association Abstraction. Objectives ( วัตถุประสงค์ ) เพื่อให้สามารถสร้างความสัมพันธ์ระหว่าง class ต่าง ๆ ใน problem domain โดยใช้ Association Abstraction ได้

chance
Download Presentation

การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)

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. การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD) โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com

  2. บทที่ 6Association Abstraction • Objectives (วัตถุประสงค์) • เพื่อให้สามารถสร้างความสัมพันธ์ระหว่าง class ต่าง ๆ ใน problem domain โดยใช้ Association Abstraction ได้ • เพื่อให้สามารถใส่ Cardinality ของความสัมพันธ์ในเชิง Association ได้ถูกต้อง • สามารถเขียนโปรแกรมแสดงความสัมพันธ์กับคลาส ได้

  3. Abstraction • Classification Abstraction • Aggregation Abstraction • Generalization Abstraction • Association Abstraction Problem Domain Concept

  4. Reviews • Is Member Of • Is Part Of • Is Kind Of • Is related to

  5. Relationship (ความสัมพันธ์) • ตัวอย่างความสัมพันธ์ ต่าง ๆ ในชีวิตประจำวัน • แม่กับลูก • สามีรักภรรยา • นายกบริหารประเทศ • ตำรวจทำงานอยู่ที่สถานีตำรวจ • น้ำอยู่ในทะเล • ตำรวจใส่เครื่องแบบ • ปากกาอยู่บนโต๊ะทำงาน • นักเรียนลงทะเบียนเรียน

  6. notice • เราสามารถจัดเอาความสัมพันธ์แบบ Aggregation เป็นความสัมพันธ์แบบ “is related to” ได้เช่นกัน เพราะการเป็นส่วนประกอบ หรือ การมีส่วนประกอบ ก็คือ ความสัมพันธ์เป็นเจ้าของ ( has a )นั่นเอง

  7. Cardinality ใน Association Abstraction • ตัวอย่าง 6.1 , 6.2 Class Min Card Max Card ผู้หญิง 0 (โสด) 1 (แต่งงาน) ผู้ชาย 0 (โสด) 1 (แต่งงาน) แม่ 1 (ลูกมีแม่ได้คนเดียว) 1 (ลูกมีแม่ได้คนเดียว) ลูก 0 (เพราะแม่อาจไม่มีลูกก็ได้) N (มีได้มากกว่า 1 คน )

  8. หลักในการเขียน Diagram แสดง Association • ในการเขียนภาพเพื่อแสดง Association นั้น มีหลักการเขียนดังนี้ • ลากเชื่อมต่อระหว่าง class ทั้งสอง • เขียนลูกศรเพื่อบอกทิศทางของการอ่านความสัมพันธ์ • พิจารณา Class ทีอยู่ติดกับหัวลูกศร หาค่า Min Card,Max Card • พิจารณา Class ทีอยู่อีกด้านของหัวลูกศร หาค่า Min Card,Max Card • จนได้ภาพของการแสดง Association ดังรูป

  9. มี ลูก แม่ 1 มี ลูก แม่ 2 0..n มี ลูก แม่ 3 1..1 มี ลูก แม่ 4 1..1 0..n มี ลูก 5 แม่

  10. ตัวอย่าง Association ต่าง ๆ 0..1 0..1 เป็นสามี-ภรรยา ผู้หญิง ผู้ชาย 0..1 0..1 เป็นสามี-ภรรยา ผู้หญิง ผู้ชาย 0..n 1..n ลงทะเบียน วิชา นักศึกษา

  11. Association • ความสัมพันธ์ (Relationship) ระหว่าง instances ของ classes association name name direction Order Customer dateReceived issued by isPrepaid name * 1 number : String address price : Money creditRating( ) dispatch( ) Customer may make several orders Order comes from one customer

  12. Associations • คลาสมากกว่า 1 คลาส สัมพันธ์กันด้วย “associations” • Association • เทียบได้กับ ER relationship ที่เชื่อมโยงความสัมพันธ์ระหว่างคลาส และแสดง จุดเชื่อมโยง (“links”) ระหว่าง วัตถุที่สร้างขึ้นจากคลาส

  13. Naming associations • การตั้งชื่อ association • หลีกเลี่ยงชื่อที่ไม่สื่อความหมาย • associated_with, has, is_related_to • มักขึ้นต้นด้วยคำกิริยา เช่น • works_for, owns , issued by • มักตั้งชื่อในกรณีที่มอง Association จากซ้ายไปขวา หรือ จากบนลงล่างของ diagram

  14. Person Car Name Address Telephone Manufacturer Model Registration Associations on Class Diagrams Owns

  15. Links • วัตถุแต่ละวัตถุ สามารถเชื่อมโยงกันได้ โดยใช้ “links” • A link • เป็น instance ของ association • หมายเหตุ • an association สามารถดำรงอยู่ได้ ถึงแม้ว่าจะไม่มี instance (links) ของ association ดังกล่าว เช่นเดียวกับ คลาสที่สามารถดำรงอยู่ได้ ถึงแม้ว่าจะไม่มีวัตถุใดๆ ถูกสร้างขึ้นจากคลาสนั้นๆ

  16. Objects & Links You:Person Me:Person Name=Jane Address=22 Holly Pl Telephone=62312198 Name=Dennis Address=41 High St Telephone=62661734 Owns Owns Owns Ours:Car Mine:Car Manufacturer=Mazda Model=626 Registration=YYX391 Manufacturer=Saab Model=95 Registration=YRT833

  17. Order Customer dateReceived 1 * isPrepaid name address number : String price : Money creditRating( ) dispatch( ) Association Multiplicity • multiplicity • หมายถึง การพิจารณาจำนวน instances (objects) ของคลาสหนึ่ง ที่สามารถเชื่อมโยงกับ instance (object) ของคลาสที่เกี่ยวข้อง

  18. Association Multiplicity 1 1..* Class Class exactly one one or more 0..1 * Class Class many (zero or more) zero or one/at most one 2 ..4 Class as specified

  19. Example of Multiplicities * * Student University Body Heart 2-3 Bicycle Wheel * 1..* 1..* Account Owner * *

  20. Associations, Objects & Classes • สำหรับ association ใดๆระหว่าง 2 วัตถุ สามารถมี link ได้ตั้งแต่ 0 ถึง 1 link • ระหว่าง 2 วัตถุ สามารถมี association ได้มากกว่า 1 association (Multiple Assoications) แต่ association เหล่านั้นจะต้องมีความแตกต่างในด้านความหมายของ association • Multiple associations ระหว่างคลาสกำหนดให้ ตั้งชื่อ associations

  21. Roles • role • หมายถึง ชื่อที่กำหนดให้กับด้านปลายของ association ซึ่งระบุวิธีการในการที่คลาสมีส่วนร่วมใน association • ปกติชื่อของ role มักเกิดขึ้นเป็นคู่ (เช่นทั้งสองด้านของ association จะมีชื่อของ role • บังคับให้กำหนดชื่อของ Role กับ associations แบบreflexive (Reflexive associations)

  22. Person Works for * Company Name Insurance no. Address Name Address employer employee Rolenames Role names • Role ระบุ ชื่อให้กับด้านปลายของ association

  23. Association Names & Roles • association อาจมีชื่อได้เช่นเดียวกับชื่อของ role ที่กำหนดให้กับด้านปลายของความสัมพันธ์ • ถ้ามีการตั้งชื่อ association แล้วมักไม่มีการตั้งชื่อ role อีก • ถ้ามีการตั้งชื่อที่ปลายของ association (ได้แก่ roles) แล้วมักไม่มีการตั้งชื่อ association อีก

  24. Person Name Insurance no. Address Manager Supervises Salesperson Role names • บังคับให้กำหนดชื่อของ Role ให้กับที่เกิดขึ้นระหว่าง link ของวัตถุที่สร้างจากคลาสเดียวกัน

  25. A Reflexive Association • association ที่สร้างจากคลาสเดียวกัน Person Parent Name Address Telephone 2 Role name Child *

  26. Ternary Associations • A ternary association • เป็น assocation ที่ประกอบด้วย 3 คลาส • เช่นเดียวกับแนวคิดของ ternary relationship ในER modelling และแนวคิดคล้ายๆ กัน • นำเสนอโดยใช้รูปสี่เหลี่ยขนมเปียกปูน เชื่อมโยงกับคลาสที่เกี่ยวข้อง

  27. Ternary Associations Vendor Customer Product Sale Ternary association

  28. Ternary Association Multiplicity • multiplicity ของ ternary associations • ซับซ้อนกกว่า binary และ unary associations • มักเป็น แบบ “many” สำหรับคลาสที่เกี่ยวข้อง participating

  29. N-ary Associations • โดยทั่วไปแล้ว association อาจเชื่อมโยงกับคลาสจำนวนเท่าใดก็ได้ • ถ้าเชื่อมโยงคลาสมากกว่า 2 คลาสขึ้นไป (รวมทั้ง ternary) เรียกว่า “n-ary” associations • แต่ Associations ที่เชื่อมโยงมากกว่า 0 คลาสมักหาได้ยาก

  30. Summary: Basic notation for associations Association name mult1 mult2 Class B Class A role_B role_A • ตัวอย่างเช่น contains * 1 Order Order Line line items

  31. Association Classes • Link จะถูกพิจารณา เช่นเดียวกับการที่วัตถุถูกพิจารณาจาก attribute ของวัตถุนั้น • attribute ควรผูกติดอยู่กับ association โดยใช้ association class มากกว่าที่จะเป็นของวัตถุที่เชื่อมโยง เมื่อใดก็ตามที่whenever it exists or has meaning when the link itself exists (rather than just the objects linked) - มักเกิดขึ้นบ่อยกับ many-to-many associations

  32. Association Classes Student Subject Enrolment ID Name Address Telephone Code Name Credit * * Result Mark Association class

  33. Association Classes • association class สามารถมีส่วนร่วมใน associations อื่นๆ เช่นเดียวกับที่คลาสปกติสามารถมีได้

  34. Association Classes Customer Product Purchase Name Address Telephone Number Name Price * * 0..1 Guarantee Date Length Conditions Claim * Association class

  35. Qualified Associations • qualified association • หมายถึง association ที่ถูกทำให้ชัดเจนโดย attribute ที่เรียกว่า qualifier • พิจารณา qualified association เช่นเดียวกับแนวคิดของ weak entity type ใน ER

  36. Unqualified Golf_Course Hole Name Location Number Length Par 1 * Qualified Golf_Course Hole 0..1 HoleNumber Name Location Length Par 1 Qualified Associations

  37. Qualified Association Tournament Prize Year Position 0..1

  38. Qualified association ABC Inc. President Roger Rabbit ABC Inc. Vice President Finances Joe Savemoney ABC Inc. Member of board John Walker ABC Inc. Member of board Susi Sanssouci ABC Inc. Member of board Karl Eichbaum XYZ Inc. President Donald Duck Organization Company Function Person *

  39. Class Diagrams: Hints • class หนึ่งสามารถเป็นส่วนร่วมได้ในหลาย diagrams • Diagrams ควรจะแสดงแง่มุมเฉพาะด้าน • จำนวนคลาสไม่มากเกินไป • จำนวน associations ไม่มากเกินไป • ซ่อน attributes และ operations ที่ไม่จำเป็นต้องแสดง • อาจต้องมีการสร้าง diagram ซ้ำๆ กันหลายรอบ

  40. Difference between attributes and associations • Conceptual perspective • ไม่แตกต่างกันมากนัก • Attributes เก็บค่าเดียว (single-valued) • Specification/implementation perspective • Attribute เก็บค่า (Value) ไม่ใช่ตัวอ้างอิง (References) • ไม่มีการ share ส่วนของ attribute values ในระหว่าง instances ที่สร้างจากคลาสเดียวกัน • Often: Stores simple objects • Numbers, Strings, Dates, Money objects

  41. 1..n 1..1 แสงอาทิตย์ พืช สังเคราะห์แสง 0..n 0..n ย่อยสลาย กิน 0..n 0..n 0..n กิน แบคที่เรีย ย่อยสลาย สัตว์ 0..n 0..n 0..n รูปแสดง Association ของห่วงโซ่อาหาร

  42. Assignment 6 • จงสร้าง Class Diagram ที่แสดงถึง Association ที่มี Cardinality ที่ถูกต้องของความสัมพันธ์ดังต่อไปนี้ • นักเรียน – วิชาเรียน – อาจารย์ผู้สอน • ธนาคาร - สมุดบัญชี – ผู้ฝากเงิน • ห้องสมุด – บรรณารักษ์ – หนังสือ - หมวดหนังสือ • เครื่องบิน – พนักงาน – ผู้โดยสาร - อาหาร • ผู้จัดการ -ร้านอาหาร – ลูกค้า – อาหาร - โต๊ะอาหาร

  43. นักเรียน – วิชาเรียน – อาจารย์ผู้สอน 0..n 0..n วิชาเรียน นักเรียน ลงทะเบียนเรียน 0..n 1..n เลือกสอนวิชา สอน 1..n 1..n อาจารย์ผู้สอน

  44. ผู้จัดการ - ร้านอาหาร – ลูกค้า – อาหาร - โต๊ะอาหาร 1..n 1..n ร้านอาหาร ผู้จัดการ เป็นเจ้าของ 1..n จ่ายเงินค่าอาหาร MK นายตัน 1..n Oishi 1..n โต๊ะอาหาร 1..n ลูกค้า 1..1 กิน นาย ศรราม มี อาหาร 0..n นางสาว สุวนันท์

  45. Programming with Multiple Classes

  46. Aggregation Association Name Direction indicator Multiplicity Class Diagram with Multiple Classes Customer BankAccount account - firstName : String - balance : double - lastName : String 1 - account : BankAccount + BankAccount(initBalance:double) + getBalance : double + Customer(f:String, l:String) + deposit(amt : double) + getFirstName : String + withdraw(amt : double) + getLastName : String + setAccount( acct:BankAccount) + getAccount( ) : BankAccount Class Diagram of “Customer.java” and “BankAccount.java”

  47. Customer Class in JAVA public class Customer { private String firstName; private String lastName; private BankAccount account; public Customer(String f, String l) { this.firstName = f; this.lastName = l; this.account = null; } public String getName() { return (this.firstName + " " + this.lastName); } public BankAccount getAccount() { returnthis.account; } publicvoid setAccount(BankAccount acct) { this.account = acct; } }

  48. BankAccount Class in JAVA publicclass BankAccount { privatedouble balance = 0.0; public BankAccount(double amount) { balance = amount; } publicvoid deposit(double amount) { balance = balance + amount; } publicvoid withdrawn(double amount) { balance = balance - amount; } publicdouble getBalance() { return balance; } }

  49. Programming with Multiple Classes publicclass TestBanking { publicstaticvoid main(String[] args) { Customer cust = new Customer("Joe","Goodman"); cust.setAccount(new BankAccount(3000.0)); System.out.println("customer : " + cust.getName() + " : open account with balance = " + cust.getAccount().getBalance() + " baht."); cust.getAccount().deposit(1250.25); System.out.println("customer : " + cust.getName() + " : deposit 1250.25 baht :" + " current balance = " + cust.getAccount().getBalance() + " baht."); cust.getAccount().withdrawn(500); } }

  50. ผลการทำงานของโปรแกรม TestBanking ---------- Java Run ---------- customer : Joe Goodman : open account with balance = 3000.0 baht. customer : Joe Goodman : deposit 1250.25 baht : current balance = 4250.25 baht. Normal Termination Output completed (0 sec consumed).

More Related