Model answer

advertisement
CIS224 Workshop 4
Interpreting class diagrams
Study each of the class diagrams given below and explain what they mean. You may use separate
text and/or annotate the diagrams. Make sure you identify and explain the presence of each element
in each diagram. Identify any errors and suggest any improvements.
1.
«interface»
Collection
equals
add
AbstractList
«interface»
List
Order
orderLines : OrderLine[0..*]
get
equal
get
add
ArrayList
get
add
List is an interface that is derived from the interface Collection.
Collection has two abstract operation, equals and add.
List defines a new abstract operation, get.
Order is a class which requires the interface List.
Order has an attribute orderLines which is a collection of OrderLine objects.
AbstractList is an abstract class which implements the List interface.
AbstractList contains one abstract operation, get, and two methods, equal and add which are
implementations of the equals and add abstract operations in the Collection interface.
The "equal" method in AbstractList should actually be called "equals".
ArrayList is a subclass of AbstractList which contains no abstract operations and which can
therefore be instantiated.
The add method in ArrayList overrides the add method in Abstractlist.
(10)
2.
Order
List
orderLines : OrderLine[0..*]
ArrayList
Collection
The Order class requires the List interface.
The ArrayList class provides (i.e., implements) the List interface.
The ArrayList class also provides the Collection interface.
(3)
3.
1..*
12..*
Degree programme
Course
The association between Degree programme and Course is an aggregation.
Each Degree programme class contains a collection of 12 or more Course objects.
Each Course object can occur within 1 or more Degree programme objects.
(3)
4.
1
64
ChessBoard
Square
The assocation between the ChessBoard class and the Square class is a composition.
Each ChessBoard object contains 64 Square objects.
When a ChessBoard class is destroyed, the Square objects within it are destroyed along with it.
(3)
5.
Personal tutor
Tutee
Lecturer
Student
1
is the personal tutor of
0..*
An object of the Lecturer class can be the personal tutor of an object of the Student class.
When this is the case, the Lecturer object plays the role of Personal tutor and the Student plays the
role of Tutee.
A Lecturer can be the personal tutor of 0 or more Students.
Each Student only has one Personal Tutor.
(4)
6.
Student
Course
0..*
12..*
is taking
getStudentList() : Student[0..*]
Each Student object is associated with (is taking) 12 or more Course objects.
Each Course object is associated with (is taken by) 0 or more Student objects.
Each Course object contains an operation, getStudentList(), which returns a collection of Student
objects.
The Student objects associated with a Course object can be accessed from the Course object (i.e.,
the association is navigable from the Course class to the Student class).
However, the diagram does not indicate that a Student object can return a list of the courses taken
by that student.
The diagram could be improved by placing an open arrow head at the Course end of the association
between the Student and Course classes.
An operation could then be defined in the Student class to return the list of Courses taken by a
particular Student object.
(7)
7.
1
ChessBoard
64
X
Square
The association between the ChessBoard class and the Square class is a composition.
If a ChessBoard object is destroyed, all the Square objects that it owns are also destroyed.
Each ChessBoard object contains 64 Square objects that can be accessed from the ChessBoard
object.
A Square object cannot send messages to the ChessBoard object that owns it.
(4)
8.
ChessBoard
row : {1..8}
column : {1..8}
1
1
Square
There is a qualified association between a ChessBoard object and a Square object.
There is a single Square object associated with each distinct pair of values for the row and column
attributes in a ChessBoard object.
The row and column attributes can each take integer values between 1 and 8, inclusive.
(3)
9.
Book
0..1
1..*
Copy
{xor}
1..*
0..1
Journal
A Copy object can be associated with 0 or 1 Book objects.
A Copy object can be associated with 0 or 1 Journal objects.
For each Book object, there can be 1 or more Copy objects associated with it.
For each Journal object, there can be 1 or more Copy objects associated with it.
There is a constraint on the associations between the Copy class and the Book and Journal classes.
A Copy object can be associated with a Book object or a Journal object, but not both.
(6)
10.
OrderLine
Order
0..1
Product
quantity
There is a qualified association between Order and OrderLine.
For each Product, there may (or may not) be a single OrderLine object associated with that Product
in an Order object.
Each OrderLine object contains an attribute, quantity.
Messages can be sent to OrderLine objects from the Order object that owns them.
(4)
11.
Copy
borrows
1
MemberOfStaff
1
0..12
{ (number of Copies borrowed)
+ (number of Journals borrowed)
<= 12 }
borrows
0..12
Journal
A MemberOfStaff object may borrow up to 12 Copies.
A MemberOfStaff object may borrow up to 12 Journals.
There is a constraint on the associations between the MemberOfStaff, Copy and Journal classes.
The sum of the number of Copies borrowed by a MemberOfStaff and the number of Journals
borrowed by a MemberOfStaff must be less than or equal to 12.
Each Journal is associated with 1 MemberOfStaff.
Each Copy object is associated with 1 MemberOfStaff.
It is an error to state that each Journal object is associated with 1 MemberOfStaff. The multiplicity
at the MemberOfStaff end of the association between Journal and MemberOfStaff should be "0..1",
since a Journal object may not be on loan to anyone.
It is an error to state that each Copy object is associated with 1 MemberOfStaff. The multiplicity at
the MemberOfStaff end of the association between Copy and MemberOfStaff should be "0..1",
since a Copy object may not be on loan to anyone.
(8)
12.
is taking
Student
Course
teaches
/teaches
Lecturer
The association between the Student class and the Course class indicates that Students take Courses.
The association between the Lecturer class and the Course class indicates that Lecturers teach
Courses.
There is a derived association between the Lecturer class and the Student class which indicates that
Lecturers teach Students.
This derived association can be inferred from the other associations in the diagram. There is
therefore no need to consider separately how to implement this association.
(4)
13.
0..*
12..*
Student
Course
1
1
12..*
0..*
Result
mark : Integer
year : Integer
Each Student object is associated with 12 or more Result objects.
Each Student is associated with 12 or more Course objects.
Each Result object is associated with a single Course
Each Result object is associated with a single Student.
Each Course object is associated with 0 or more Results.
Each Course object is associated with 0 or more Student objects.
Each Result object has two integer attributes, mark and year.
(7)
14.
Loan
dateOut : Date
dateDue : Date
getFine() : Money
0..12
1
Copy
MemberOfStaff
1..*
is a copy of
1
Item
Journal
Book
Each Copy object is associated with a single MemberOfStaff.
This is an error - it is possible for a Copy object not to be associated with anyone. The multiplicity
at the MemberOfStaff end of the association between Copy and MemberOfStaff should therefore be
0..1.
Each MemberOfStaff object has up to 12 Copy objects.
There is an association class on the association between the Copy and MemberOfStaff classes.
Each instance of this association class represents a link between a specific Copy object and a
specific MemberOfStaff object.
This association class has two Date type attributes, dateOut and dateDue, and an operation,
getFine() which returns a value of type Money.
Each Copy object is a copy of exactly 1 Item object.
Each Item object may have 1 or more Copy objects associated with it.
The Journal class is a subclass of Item.
The Book class is a subclass of Item.
Possible error - Item should be an interface since every item will be either a Journal or a Book.
(11)
Download