790 likes | 1.03k Views
Object Oriented Analysis . Outline. S tructural Modeling Class Diagrams and Object Diagrams Association Generalization และ Classification Aggregation และ Composition Models. Structural Modeling. What is structural modeling?. Structural model
E N D
Outline • Structural Modeling • Class Diagrams and Object Diagrams • Association • Generalization และ Classification • Aggregation และ Composition • Models OOA
What is structural modeling? • Structural model • มุมมองของระบบที่เน้นโครงสร้างของวัตถุ รวมทั้งคลาส (Class) ของวัตถุ ความสัมพันธ์ระหว่างคลาส (Relationship) แอททริบิวต์ (Attribute) และ โอเปอเรชัน (operation) OOA
Structural Modeling: Core Elements (cont’d) ¹ An extension mechanism useful for specifying structural elements. OOA
Structural Diagrams • ประเภทของ Structural Diagrams • static structural diagrams • class diagram • object diagram • implementation diagrams • component diagram • deployment diagram OOA
Static Structural Diagrams • แสดงกราฟของคลาสที่เชื่อมต่อกันด้วย static relationships • ประเภทของ Static Structural Diagrams • class diagram : classifier view • object instance diagram : instance view OOA
Class Diagrams • Class diagrams • แสดงรายละเอียดของ Class และความสัมพันธ์ระหว่าง Class ในมุมมองแบบ logical view • องค์ประกอบของ UML class diagrams ได้แก่ • Class, โครงสร้างของ Class และพฤติกรรมของ Class • ตัวบ่งชี้ Multiplicity และ navigation • ชื่อของ Role • ความสัมพันธ์แบบ association, aggregation, dependency, และ inheritance OOA
Person - TaxIDNo : String - Name : String + Income : double + TaxPaid : Boolean + calcTax() + calcTaxBal() Classes in UML • เขียนได้ 2 รูปแบบ Class name Person Attributes attribute name : type Operations operation name(parameter : type) : result type OOA
UML Syntax for Attributes • visibilityname : type +id : String • visibility: public (+), protected (#), private (-) • การตีความไม่ขึ้นกับ ภาษาที่ใช้เขียนโปรแกรม • name : เป็น string • type : ประเภทของข้อมูล ไม่ขึ้นกับภาษา OOA
UML syntax for operations • visibilityname (parameter list) : return-type-expression +assignAgent (a : Agent) : Boolean • visibility: public (+), protected (#), private (-) • การตีความไม่ขึ้นกับภาษาที่ใช้เขียนโปรแกรม • name : string • parameter list : arguments • return-type-expression : ประเภทของค่าที่ return ไม่ขึ้นกับภาษา OOA
Attributes – A Rule • การกำหนด attributes ควรทำให้ง่าย (simple) • ค่าที่เก็บอยู่ใน attributes ไม่ควรเป็นวัตถุ (Object) • แต่ควรสร้างคลาส (class) ขึ้น และแสดงความสัมพันธ์ระหว่างวัตถุด้วย association • ไม่ควรสร้างความสัมพันธ์ระหว่าง 2 คลาส โดยใช้ “foreign key” attribute • แต่ใช้ association OOA
Object Instance Diagrams • class diagram • แสดงชื่อ (name), โครงสร้าง (structure) และ พฤติกรรม (behaviour) ของประเภทของวัตถุ (object) • object instance diagram • แสดงวัตถุที่สร้างจากคลาส • ความแตกต่างระหว่างทั้ง 2 diagram เปรียบเทียบได้กับความแตกต่างระหว่างโครงสร้างของตารางใน relational database และค่าที่ถูกเก็บอยู่ภายในตาราง OOA
Objects in UML • เขียนได้ 2 รูปแบบ Object name Tim:Person Tim : Person TaxIDNo=“23003” Name=“TimLim” Income=“30000.00” TaxPaid = FALSE Attributes attribute name : type = value Same Operations for all instances of a class calcTax() calcTaxBal() OOA
Sydney:City London:City Name=Sydney Country=Australia Population= 3,536,000 Name=London Country=UK Population= 2,324,320 New York :City Name=New York Country=USA Population= 5,734,012 An Object Instance Diagram OOA
Classes and Objects City Name : String = default Country : String = default Population : integer = default setName (s : String = deault) setPopulation(p : integer = default) <<instanceOf>> <<instanceOf>> <<instanceOf>> New York : City Sydney : City London : City Name = London Name = New York Name = Sydney Country = USA Country = Australia Country = UK Population =2,324,320 Population =5,734,012 Population =3,536,000 OOA
Class Diagrams • Associations • Generalization • Generalization และ Classification • Aggregation OOA
Association association name name direction • ความสัมพันธ์ (Relationship) ระหว่าง instances ของ classes 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 OOA
Associations • คลาสมากกว่า 1 คลาส สัมพันธ์กันด้วย “associations” • Association • เทียบได้กับ ER relationship ที่เชื่อมโยงความสัมพันธ์ระหว่างคลาส และแสดง จุดเชื่อมโยง (“links”) ระหว่าง วัตถุที่สร้างขึ้นจากคลาส OOA
Naming associations • การตั้งชื่อ association • หลีกเลี่ยงชื่อที่ไม่สื่อความหมาย • associated_with, has, is_related_to • มักขึ้นต้นด้วยคำกิริยา เช่น • works_for, owns , issued by • มักตั้งชื่อในกรณีที่มอง Association จากซ้ายไปขวา หรือ จากบนลงล่างของ diagram OOA
Person Car Name Address Telephone Manufacturer Model Registration Associations on Class Diagrams Owns OOA
Links • วัตถุแต่ละวัตถุ สามารถเชื่อมโยงกันได้ โดยใช้ “links” • A link • เป็น instance ของ association • หมายเหตุ • an association สามารถดำรงอยู่ได้ ถึงแม้ว่าจะไม่มี instance (links) ของ association ดังกล่าว เช่นเดียวกับ คลาสที่สามารถดำรงอยู่ได้ ถึงแม้ว่าจะไม่มีวัตถุใดๆ ถูกสร้างขึ้นจากคลาสนั้นๆ OOA
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 OOA
Order Customer dateReceived 1 * isPrepaid name address number : String price : Money creditRating( ) dispatch( ) Association Multiplicity • multiplicity • หมายถึง การพิจารณาจำนวน instances (objects) ของคลาสหนึ่ง ที่สามารถเชื่อมโยงกับ instance (object) ของคลาสที่เกี่ยวข้อง OOA
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 OOA
Example of Multiplicities * * Student University 1 Body Heart 2-3 Bicycle Wheel * 1..* 1..* Account Owner * * OOA
Associations, Objects & Classes • สำหรับ association ใดๆระหว่าง 2 วัตถุ สามารถมี link ได้ตั้งแต่ 0 ถึง 1 link • ระหว่าง 2 วัตถุ สามารถได้มีมากว่า 1 association (Multiple Assoications) แต่ association เหล่านั้นจะต้องมีความแตกต่างในด้านความหมายของ association • Multiple associations ระหว่างคลาสกำหนดให้ ตั้งชื่อ associations OOA
Roles • role • หมายถึง ชื่อที่กำหนดให้กับด้านปลายของ association ซึ่งระบุวิธีการในการที่คลาสมีส่วนร่วมใน association • ปกติชื่อของ role มักเกิดขึ้นเป็นคู่ (เช่นทั้งสองด้านของ association จะมีชื่อของ role • บังคับให้กำหนดชื่อของ Role กับ associations แบบreflexive (Reflexive associations) OOA
Person Works for * Company Name Insurance no. Address Name Address employer employee Rolenames Role names • Role ระบุ ชื่อให้กับด้านปลายของ association OOA
Association Names & Roles • association อาจมีชื่อได้เช่นเดียวกับชื่อของ role ที่กำหนดให้กับด้านปลายของความสัมพันธ์ • ถ้ามีการตั้งชื่อ association แล้วมักไม่มีการตั้งชื่อ role อีก • ถ้ามีการตั้งชื่อที่ปลายของ association (ได้แก่ roles) แล้วมักไม่มีการตั้งชื่อ association อีก OOA
Person Name Insurance no. Address Manager Supervises Salesperson Role names • บังคับให้กำหนดชื่อของ Role ที่เกิดขึ้นระหว่าง link ของวัตถุที่สร้างจากคลาสเดียวกัน OOA
A Reflexive Association • association ที่สร้างจากคลาสเดียวกัน Person Parent Name Address Telephone 2 Role name Child * OOA
Ternary Associations • A ternary association • เป็น assocation ที่ประกอบด้วย 3 คลาส • เช่นเดียวกับแนวคิดของ ternary relationship ในER modelling และแนวคิดคล้ายๆ กัน • นำเสนอโดยใช้รูปสี่เหลี่ยขนมเปียกปูน เชื่อมโยงกับคลาสที่เกี่ยวข้อง OOA
Ternary Associations Vendor Customer Product Sale Ternary association OOA
Ternary Association Multiplicity • multiplicity ของ ternary associations • ซับซ้อนกกว่า binary และ unary associations • มักเป็น แบบ “many” สำหรับคลาสที่เกี่ยวข้อง (participating) OOA
N-ary Associations • โดยทั่วไปแล้ว association อาจเชื่อมโยงกับคลาสจำนวนเท่าใดก็ได้ • ถ้าเชื่อมโยงคลาสมากกว่า 2 คลาสขึ้นไป (รวมทั้ง ternary) เรียกว่า “n-ary” associations • แต่ Associations ที่เชื่อมโยงมากกว่า 0 คลาสมักหาได้ยาก OOA
Summary: Basic notation for associations Association name mult1 mult2 Class A Class B role_B role_A • ตัวอย่างเช่น contains * 1 Order Order Line line items OOA
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 OOA
Association Classes Student Subject Enrolment ID Name Address Telephone Code Name Credit * * Result Mark Association class OOA
Association Classes • association class สามารถมีส่วนร่วมใน associations อื่นๆ เช่นเดียวกับที่คลาสปกติสามารถมีได้ OOA
Association Classes Customer Product Purchase Name Address Telephone Number Name Price * * 0..1 Guarantee Date Length Conditions Claim * Association class OOA
Qualified Associations • qualified association • หมายถึง association ที่ถูกทำให้ชัดเจนโดย attribute ที่เรียกว่า qualifier • พิจารณา qualified association เช่นเดียวกับแนวคิดของ weak entity type ใน ER OOA
Unqualified Golf_Course Hole Name Location Number Length Par 1 * Qualified Golf_Course Hole 0..1 HoleNumber Name Location Length Par 1 Qualified Associations OOA
Qualified Association Tournament Prize Year Position 0..1 OOA
Qualified association Organization 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 Company Function Person * OOA
Class Diagrams: Hints • class หนึ่งสามารถเป็นส่วนร่วมได้ในหลาย diagrams • Diagrams ควรจะแสดงแง่มุมเฉพาะด้าน • จำนวนคลาสไม่มากเกินไป • จำนวน associations ไม่มากเกินไป • ซ่อน attributes และ operations ที่ไม่จำเป็นต้องแสดง • อาจต้องมีการสร้าง diagram ซ้ำๆ กันหลายรอบ OOA