Title: CIS224 Software Projects: Software Engineering and Research Methods
1CIS224Software Projects Software Engineering
and Research Methods
- Lecture 4
- Class Models
- (Based on Fowler (2004, Chapters 3 5) and
Stevens and Pooley (2006, Chapters 5 6))
David Meredith d.meredith_at_gold.ac.uk www.titanmus
ic.com/teaching/cis224-2007-8.html
2Class diagrams
- UML class diagrams document the static structure
of a system - What classes there are
- How the classes are related
- Each class represented in UML diagram as a
rectangle containing the name of the class
3What makes a class model good?
- Ultimate aim
- Build, as quickly and cheaply as possible, a
system which satisfies the users requirements - Objects must provide every piece of required
behaviour - Build a system which will be easy to maintain and
adapt to future requirements - Use encapsulated modules with low coupling and
high cohesion - Use classes which represent enduring types of
domain concepts
4How to build a good class model
- Can use any method you like!
- Unlikely to get it right first time
- Classes that correspond to classes of domain
object (e.g., book, copy of book, library member)
are easiest to identify - What drives the design?
- Data-driven design (DDD)
- Identify all the data and divide it up into
classes before considering classes
responsibilities - Noun identification technique
- Responsibility-driven design (RDD)
- Identify all the responsibilities of the system
and divide between classes before considering the
data - Class-responsibility-collaboration (CRC) cards
- In practice, DDD and RDD can be used together
5Identifying classes in DDDNoun identification
- Identify candidate classes by selecting all nouns
and noun phrases in the requirements
specification - Use singular form of each noun or phrase
- Do not include or or and in a single class
name - Discard inappropriate candidate classes to get
initial class list
6Noun identification techniqueDiscarding
candidate classes
- Consider discarding candidate classes if they are
- Redundant
- Different nouns or phrases correspond to the same
class (e.g., library member, member of the
library) - Vague
- Not clear what the noun or phrase means
- Events or operations
- Is the event or operation a thing with state,
behaviour and identity? If not, discard it! - e.g., short term loan
- Part of the meta-language
- Nouns and phrases that refer to aspects of the
project, not domain objects - e.g., requirements, system
- Outside the scope of the system
- Nouns and phrases that refer to objects that are
not inside the system - e.g., library
- Actors often discarded for this reason if no need
to represent them by objects within the system - Attributes
- Nouns and phrases that refer to simple things
with no interesting behaviour of their own - e.g., name of library member, duration of loan
- May also be other reasons to discard a candidate
class
7What sorts of things are represented by classes?
- Most commonly
- Tangible or real-world objects and concepts
- e.g., book, copy, course, hovercraft
- Roles
- e.g., library member, customer, manager
- Less commonly
- Events
- e.g., loan, arrival, departure
- Interactions
- e.g., match, meeting
- Events and interactions can help with identifying
associations between classes representing domain
concepts and roles - Main class that just provides program entry point
usually not included in class model - e.g., class containing main method in Java
8Associations
- Classes correspond to nounsAssociations
correspond to verbs - An association between two classes often
represents a real-world relationship between the
classes of real-world things or concepts
represented by the classes - Just as an object is an instance of a class, a
link is an instance of an association - A link connects a pair of objects (not classes)
- e.g., link between objects representing David
Meredith and copy 4 of Fowler (2004) might
represent the fact that David Meredith borrows or
returns copy 4 of Fowler (2004)
9Associations
- Class A and class B are associated if an object
of class A has to know about an object of class
B, i.e., - An object of class A sends a message to an object
of class B - An object of class A creates an object ofclass B
- An object of class A has an attribute whose
values are objects of class B or collections of
objects of class B - An object of class A receives a message with an
object of class B as an argument
10Associations
- Class model should represent well the real-world
relationships between domain concepts - Class model should make sense to a domain expert
- Class model should also permit a sensible
implementation that realizes the required use
cases - Satisfying both these criteria leads to a system
that is easy to maintain because it is easy to
understand
11Association in a class diagram
- May be two or more different associations between
same pair of classes - e.g., LibraryMember has reserved Copy,
LibraryMember has Copy on loan - Represented by multiple labelled lines on class
diagram
12Attributes and Operations
- In order for the objects of a class to have state
and behaviour, the class must have attributes and
operations - Attributes variables inside objects where data
is stored - Declared in second compartment of class icon
- Do not include attributes that implement
associations (e.g., copies Copy1..) - Types of attributes should not be classes in the
diagram - Operations the messages that the objects in a
class understand and respond to - Declared in third compartment of class icon
- Provide selector, arguments and return type
- Same operation may be implemented by different
methods in different classes related by
inheritance
13Generalization
- MemberOfStaff is specialization of LibraryMember
- Can do everything that a LibraryMember can do and
more (e.g., borrow a journal) - MemberOfStaff should conform to interface of
LibraryMember - Liskov substitution principle
- May override methods in LibraryMember
- Should be no conceptual gulf between what a
derived class and its base class do on receipt of
the same message
14Generalization
- Class B may be a specialization of class A if
- every member of class B is a member of class A
- e.g., Every member of the class MemberOfStaff is
a member of the class LibraryMember - All members of class B share one or more
properties or behaviours that they do not share
with the other members of class A - e.g., all members of the class MemberOfStaff can
borrow journals whereas the other membes of class
LibraryMember cannot - But inheritance increases coupling so only use
when necessary - Every member of the class Border Collie is a
member of the class Dog - But may not need subclass Border Collie if the
only relevant property or behaviour that Border
Collies do not share with other dogs is the name
of their breed - Could implement this as an attribute called Breed
in an object of class Dog
15Class models and class diagrams
- Each system has only one class model or static
structural model which describes the static
structure of the system, particularly the classes
and the relationships between them - Maybe two or more class diagrams used to
graphically represent the single class model of a
system (e.g., at different levels of detail) - May represent the same class more than once on
the same class diagram, but all icons
representing a class must be consistent with the
single class that they all represent - Suggestion only represent a class once on any
given diagram unless using a tool that enforces
consistency
16Aggregation
- An aggregation is a special association that
shows that objects of one class are parts of
objects of another class - e.g., degree programme consists of 12 or more
courses - Each instance of the part class may be
associated with more than one instance of the
whole class - e.g., the course CIS109 is part of several
different computing degree programmes
17Composition
- A composition is a special association that shows
that each object of one class is part of at most
one object of another class - If an object of the whole class is copied or
deleted, so are all the objects of the part
class that are associated with it - e.g., an object representing a chess board may
contain a collection of objects of class Square - Each Square object only associated with one
ChessBoard object - Square objects deleted or copied when ChessBoard
object deleted or copied
18Examples of aggregation and composition
- Are the associations between the following
examples of aggregation or composition? - Player and Team
- Aggregation
- Wheel and Car
- Composition
- Account and Customer
- Composition (What about joint accounts?)
- Song and Playlist
- Aggregation
19Role names on associations
- Can label roles of classes within relationship
represented by association in class model
20Navigability of associations
- If class A must know about class B, then draw
arrow with stick arrowhead from class A (source)
to class B (target) - Each object of class Course must know which
students are taking that course in order to
generate a list of students for that course
(e.g., to print registers) - Each Course object must be able to send messages
to the Student objects that are linked to it
(e.g., to retrieve the names of the students) - Each Course object might have an
attribute students Students0..would not
explicitly give this attribute in the attribute
compartment of the Course icon because implied by
the directed association - If class A knows about class B, then class A
cannot be reused without class B - Increases coupling
- Dont introduce navigability unless required!
- Does the association between Student and Course
need to be bidirectional? - What if we want to know the courses that each
student is taking?
21Bidirectional navigability and non-navigability
- Show bidirectional navigability by putting arrow
heads at both ends of the association - Leaving both arrowheads off means unspecified
navigability - Fact that class A does not know about class B
indicated by placing a cross on the association
near class B (new in UML 2.0)
22Qualified associations
- Multiplicity of 1 at Square end of association
indicates that, if we take a ChessBoard object,
b, then there is exactly 1 Square object
associated with any specific pair of values
assigned to the row and column attributes of b - Only one or zero lines in any given order
associated with a particular product - Order object has (at most) one OrderLine per
product
23Derived associations
- Fact that Lecturer class is associated with
Student class is implied by association between
Lecturer and Course and association between
Course and Student - Three options
- Can leave out association between Lecturer and
Student - Can put it in as an ordinary association
- Can indicate that it can be derived from other
associations by preceding label with a forward
slash, / - Indicates that association exists by virtue of
other associations no need to be implemented
separately
24Constraints
- A constraint is a condition that must be
satisfied by a correct implementation of a design - In UML, a constraint must be given between
braces, e.g., xor, total number of items
borrowed must be no more than 12 - Can use either formal language, such as Object
Constraint Language (OCL), or natural language or
a programming language to express a constraint
25Association classes
- An association class allows an association to
have attributes and operations - Where do we store the result a student gets for a
course? In the Student object or in the Course
object? - Can make an association class and store result
there - Alternatively can make a Result class and
associate it with the Course object and the
Student object - If student takes course twice, can make two
Result objects, but cannot make two association
objects - Can only be at most one association object for
any given pair of linked objects
26Interfaces and abstract classes
- Abstract operation is declared but not
implemented - Written in italics in class icon
- Class is abstract if at least one of its
operations is abstract - Class name written in italics
- Abstract class cannot be instantiated
- All operations of an interface are abstract
(i.e., no implementation provided) - Dependency arrow used to show that class requires
interface - Dashed generalization arrow shows that class
provides interface - Weak form of inheritance
- Class may provide more than one interface
- Good idea to depend on as general a class as
possible to allow for different implementations - Order depends on List interface
- get, equals and add operations dynamically bound
to implementations in ArrayList
27Dependency
Employee data gateway
Employee
Benefits window
Benefits data gateway
- Class A depends on class B if a change in class B
may necessitate a change in class A - A is client, B is supplier or server
- Dependency indicated by dashed arrow with stick
head on class diagram - Difference between dependency and assocation
- Dependency indicates relationship between class
definitions - Change in definition of class A may necessitate
change in defiinition of class B - Association indicates relationship between
objects within classes - Objects of class A need to know about objects of
class B - Can usually be more specific about the nature of
a dependency than merely stating that it exists
(e.g., generalization, implementation of
interface) - Dependency can exist between A and B if
- A sends a message to B
- A has an attribute of class B
- A has an operation parameter of class B
- Change in Employee might mean Benefits window has
to be changed - Change in Benefits window will not affect
Employee - Change in Employee data gateway may also
necessitate change in Benefits window, but only
if it necessitates change in public interface of
Employee
28Summary
- UML class diagrams document static structure of
system - Object-oriented approach should allow us to
build, cheaply and quickly, systems that can be
adapted to satisfy changes in requirements - Can use various techniques for identifying the
classes in a system - (e.g., noun identification technique)
- Classes often represent tangible "real-world"
objects and concepts - less often, they represent events and
interactions - Associations represent the relationships between
classes - Classes are associated if one has to know about
the other - Two classes can be connected by two or more
associations - Multiplicities
- Attributes and operations
- Generalization
- Distinction between class models and class
diagrams - Aggregation and composition
- Role names
- Navigability
- Qualified associations
- Derived associations
- Constraints