Jan 2003Ron McFadyen Generalization (Ch 26) a generalization is a relationship between a general thing (the superclass or parent class) and a more specific kind of thing (the subclass or child class) example: a MemberOfStaff is a specialized kind of LibraryMember LibraryMember MemberOfStaff
Jan 2003Ron McFadyen Generalization example continued: everything a LibraryMember can do, a MemberOfStaff can do a LibraryMember can borrow a book, so can a MemberOfStaff there are some things that a MemberOfStaff can do that a LibraryMember cannot (the specialization aspect) the MemberOfStaff has all the attributes the LibraryMember has, and possibly more (again, the specialization aspect) LibraryMember MemberOfStaff
Jan 2003Ron McFadyen a Generalization example: a SavingsAccount is a specialized kind of BankAccount a ChequingAccount is a specialized kind of BankAccount an Asset may be a BankAccount, RealEstate, or a Security Asset RealEstateBankAccountSecurity SavingsAccountChequingAccount
Jan 2003Ron McFadyen Text: All members of a conceptual subclass set are members of their superclass set 100% of the conceptual superclass’s definition should be applicable to the subclass. The subclass must conform to 100% of the superclass’s: attributes associations
Jan 2003Ron McFadyen Figure 26.7 Payment Amount: money Cash Payment Credit PaymentCheque Payment Sale Pays-for 1 1 Every payment, regardless of whether it is cash, credit, or cheque, has an Amount and it is associated with a Sale CreditCardCheque *
Jan 2003Ron McFadyen Motivation for partitioning a conceptual class into subclasses: the subclass has additional attributes of interest the subclass has additional associations of interest the subclass is operated on, handled, reacted to, or manipulated differently than the superclass or other subclasses the subclass concept represents an animate thing that behaves differently than the superclass or other subclasses Examples a chequing account will accrue interest differently from a savings account a loan account will have different associations from a savings account
Jan 2003Ron McFadyen Figure The name Payment is italicized - meaning it is an abstract class An abstract class is a class that will never be instantiated; only its subclasses can exist If “Payment” was not in italics then a Payment could exist that is not a Cash, Credit, or Check payment
Jan 2003Ron McFadyen Figure 26.7 Payment Amount: money Cash Payment Credit PaymentCheque Payment Sale Pays-for 1 1 Credit and Cheque participate in other associations CreditCardCheque *
Jan 2003Ron McFadyen Watch for objects that are performing roles, or moving from one state to another. ROT: Do not model with subclasses. Model with states. Text: Consider payments that begin as unauthorized and may eventually become authorized. Do not model as: Payment Unauthorized Payment Authorized Payment
Jan 2003Ron McFadyen Text: Instead of Payment Unauthorized Payment Authorized Payment Use: PaymentState Unauthorized StateAuthorized State Payment Is-in * 1 Figure 26.13
Jan 2003Ron McFadyen PaymentState Unauthorized StateAuthorized State Payment Is-in * 1 authorize() cancel() getStatus() cancel() A payment that is not authorized has an authorize operation, but authorize cannot be executed by a payment that has already been authorized. Cancel has two different implementations (polymorphism). Every payment has getStatus and cancel operations
Jan 2003Ron McFadyen dogcat Constraints Shown inside curly braces ({constraint}) incomplete complete disjoint overlapping mammal {disjoint, incomplete}
Jan 2003Ron McFadyen Ch 27 - Refining the Domain Model 27.1 Association Classes 27.2 Aggregation and Composition 27.4 Association Role Names 27.5 Roles as Concepts vs Roles in Associations 27.8 Reflexive Associations Packages
Jan 2003Ron McFadyen Aggregation and Composition both are associations used to denote that an object from one class is part of an object of another class HonoursProgrammeCourse An example of Aggregation: a course is part of an honours programme. The same module could be part of several honours courses “Software Engineering with Objects and Components” is part of both the “Software Engineering” and the “Computer Science” honours programmes **
Jan 2003Ron McFadyen Aggregation and Composition BoardSquare Composition is similar to, but stronger than aggregation. If you specify composition, then you are saying that one object owns its parts. A Board is made up of several Squares. A Square will belong to just one Board. If a Board is deleted, then its Squares are deleted too. What is the multiplicity at the composition end of the association?
Jan 2003Ron McFadyen Aggregation and Composition InvoiceInvoiceLine Consider Invoices and their Invoice Lines Question: Is the association aggregation or composition? ? ? *
Jan 2003Ron McFadyen Aggregation and Composition SaleSalesLineItem Consider Sales and their SalesLineItems Is the association an aggregation or a composition? ? ? * Consider the Product Catalogue and its Product Specifications. Is the association an aggregation or a composition?
Jan 2003Ron McFadyen Aggregation and Composition Figure 27.6 Hand Finger Palm Thumb Several associations sharing the same aggregation/composition can be drawn with converging lines
Jan 2003Ron McFadyen Aggregation and Composition Suppose a document comprises a TOC, a preface, a number of sections, and possibly an index. Use composition or aggregation?
Jan 2003Ron McFadyen Association Class Figure: 27.3: Business rule: a store has a different merchant ID for each service Association Class: a modeling element that is both an association and a class. It has attributes, operations, multiplicities, etc. It can participate in other relationships.
Jan 2003Ron McFadyen Top of Figure 27.4 (ignore rest of it) Many to many associations likely candidate for an Association Class Limitation : each company object can be associated to a person object only once. If we wanted to provide for a person to be employed by the same company more than once, we would need to promote Employment to be a regular class. How do we model this?
Jan 2003Ron McFadyen Reflexive Association An association involving the same class more than once. marries Person 1 1 comprises Part * *
Jan 2003Ron McFadyen Figure Contrasting two models Can be very accurate: one person plays more than one role More difficult to implement: may need to mutate an object from one class to another
Jan 2003Ron McFadyen Packages Packages are used to organize model elements. Figures shows the POS Domain package comprising the Payments, Product, etc. packages the core package the payments package … name