380 likes | 499 Vues
Software Engineering Dr. K. T. Tsang. Lecture 7 Advanced class modeling http://www.uic.edu.hk/~kentsang/SWE/SWE.htm. 1. Multiplicity. Multiplicity - a constraint on cardinality of a set Multiplicity also applies to attributes
E N D
Software EngineeringDr. K. T. Tsang Lecture 7 Advanced class modeling http://www.uic.edu.hk/~kentsang/SWE/SWE.htm 1
Multiplicity • Multiplicity - a constraint on cardinality of a set • Multiplicity also applies to attributes • Multiplicity for an attribute specifies the number of possible values for each instantiation of an attribute Person name: string [1] birthday: date [1] phoneNumber: string [*] address: string [1..*]
Scope & visibility of features • Scope – whether a feature applies to an object (object scope) or an entire class (static, class scope) • Visibility – public(+), protected(#) or private(-)
PhoneMailbox maxMsgCount phoneNumber passWord greeting PhoneMessage maxDuration maxDaysRetained dateRecord timeRecorded priority message hasBeenReceived Person name Scope – example 1 * source 0..1 * 1 {ordered} owner * owner 1 Not a good model
PhoneMailbox MailCategory phoneNumber passWord greeting categoryName msgMaxDuration msgDaysRetained msgMaxCount PhoneMessage dateRecord timeRecorded priority message hasBeenReceived Person name Scope – example 2 Preferred model 1 1 owner * * 0..1 * source {ordered} owner * 1
N-ary Associations • Binary Associations – 2 ends • Ternary Associations – 3 ends • N-ary Associations – n ends, avoid them • Most N-ary Associations can be decomposed into binary associations
stock * * Company Person Person Company name name name name * Purchase Purchase quantity date cost quantity date cost stock * * 1 1 Restating an N-ary Association • Decompose non-atomic ternary into binary associations
Language Project name name * * * programmer Person name Example - A genuine ternary association p.65 B&R, Fig.4.6 An atomic n-ary association is one that cannot be subdivided into binary associations without losing information. Class diagram
Java:Language P135:Project C:Language library:Project name=“Java” name=“P135” name=“C” name=“library” Mary:Person name=“Mary” Example - A genuine ternary association.. object diagram
Professor * DeliveredCourse * Semester roomNumber * * Course Example 2 - A ternary association p.65 B&R, Fig. 4.7 * TextBook A class associates with an association?
DeliveredCourse Professor roomNumber * * Semester * Course * TextBook Example 2 – An n-ary association A better way??
DeliveredCourse roomNumber Promoting an n-ary association to classes A regular class Professor * Semester TextBook * * * Course Programming languages cannot express n-ary association, so we must promote them to class.
Aggregation • Aggregation is a special form of association in which an aggregate object is made of constituent parts (is a part of). • An aggregate object is an extended object treated as a unit in many operation. • Properties of Aggregation • Transitive: if A is part of B and B is part of C, then A is also part of C • Anti-symmetric: if A is part of B then B is not part of A
Aggregation - example UML symbol-Hollow diamond * * Auto-mobile * * * * 1 1 Engine Body Wheel Seat
Aggregation & Composition • There are 2 forms of part-whole relationships in UML. • The general form is Aggregation. • The more restricted form is Composition: • a part can belong to at most to one assembly • once assigned, the part has the same lifetime as the assembly • Deletion of the assembly object triggers the deletion of all objects in the composition.
Composition - example UML symbol- solid diamond 1 * * 1 Company Division Department 1 * Person
Propagation of operations • The automatic application of an operation to a group of objects when the operation is applied to a starting object. • Examples – • Moving an aggregate moves its parts • Copying a document copies all its paragraphs and all the characters in a paragraph
Paragraph Document Character Person copy copy copy 1 1 * * copy copy Propagation of operations * owns The copy operation propagates from document to paragraphs to characters, but not in the reverse direction. 1 p.68 B&R, Fig.4.11
Abstract & concrete classes • An abstract class has no direct instance but its descendant classes have direct instances. • A concrete class is a class that can have direct instances (instantiable). • Abstract class can have abstract operation, designated by italics or the keyword {abstract}. • An abstract operation defines the signature of an operation for which each concrete subclass may provide its own implementation. • A concrete class may not contain any abstract operation.
Employee FullTimeEmployee PartTimeEmployee yearTodateEarnings weeklyRate hourlyRate computePay computePay computePay Abstract operation - example Note: Avoid concrete super-class
Multiple inheritance • Allows a class to have more than one superclass, and inherit features from all parents. • Some OOP languages does not support multiple inheritance, e.g. Java. • Multiple inheritance may create ambiguities. Be careful with its usage.
Employee FullTimeEmployee PartTimeEmployee Partner yearTodateEarnings weeklyRate hourlyRate ownership computePay computePay computePay computePay Multiple inheritance - example FullTimeEmployeePartner
Multiple classification • An object is an instance of all ancestors of its class.
1 * Multiple classification - example Person UniversityMember {overlapping} Student Staff Faculty Instructor Overlapping means a person may belong to more than one kind of UniversityMember
Delegation using composition of parts p.74 B&R, Fig. 4.19 1 1 Employee 1 1 Worker Management employmentStatus managerialStatus FullTime PartTime Manager Director Workaround for Multiple inheritance: recast a super-class with multiple inheritance as a composition in which each part replaces a subclass (generalization).
Workaround 2 – nested generalization Employee FullTime PartTime FullTimeManager FullTimeWorker PartTimeManager PartTimeWorker
1 * describes PhysicalCar CarModel serialNumber color options modelName year basePrice * * manufacturer 1 1 owner Company Person Metadata • Metadata is data that describes other data. • Example: A class definition is metadata. • Class is meta-object. Class that describes other class is meta-class.
Substance Substance SubstanceName substanceName substanceName Reification • Reification is the promotion of something that is not an object to an object. Reification: Promote attribute to a class alias * 1..*
Window length width Employee Job salary priority Constraints on objects boss 0..1 (0.8<length/width<1.5) * (salary<boss.salary) (priority never increases)
Constraint on generalization set (subclasses) • Disjoint – subclasses are mutually exclusive • Overlapping – an object can belong to more than one subclass • Complete – the generalization lists all possible subclasses • Incomplete – the generalization may miss some subclasses
Constraint on links • Multiplicity for an association restricts the number of objects related to a given object. • An ordinary association has no presumed order on the objects of the “many” end. The constraint {ordered} indicates that objects of the “many” end have an order that must be preserved.
Subset constraint between associations * Member of * Person Committee (subset) * 1 Chair of The chair of a committee must be a member of the committee.
Person birthdate / age Derived data • Classes, attributes and associations may be derived from others. • The notation for a derived element is a slash (/) in front of the element name. • The constraint that determines the derivation should also be shown. CurrentDate {age=currentDate – birthdate} Derived attribute
offset offset 1 1 * * Derived object & association Machine Assembly Part 1 / NetOffset 1 / Offset offset = MachineAssembly.offset X PartAssembly.offset Derived data can complicate implementation. Use them only if they are truly necessary.
PackageName Package • A package is a group of elements (classes, associations, generalizations and packages of smaller sizes) with a common theme or purpose. • Packages partition a model, making it easier to understand or manage. • Large applications may have several tiers of packages. Notation of a package
Reading for this lecture • Chapter 4 Blaha & Rumbaugh
Software EngineeringDr. K. T. Tsang Lecture 8 State modeling http://www.uic.edu.hk/~kentsang/SWE/SWE.htm 37
Reading for this lecture • Chapter 5 Blaha & Rumbaugh