Unit 5 Flashcards
Why do object modellers concentrate on nouns?
The nouns represent the things in the domain being modelled, and things are more stable than actions, which are expressed as verbs.
What are the main criteria for filtering a list of nouns in order to remove inappropriate ones and settle upon a more suitable set of candidate classes?
There are three basic criteria that can be applied as follows:
- redundancy (the use of words or data that could be omitted without loss of meaning or function; repetition or superfluity of information).;
- not important or independent enough, such as an attribute of another class rather than a class in its own right;
- lack of relevance to the problem domain; either beyond the scope of the desired system, or part of the language used for modelling.
In addition to these basic criteria, we should pay particular attention to events. Will an instance of that kind of event have state, behaviour and identity that are significant in the problem domain? A loan of a book from a friend might not be worth modelling, for example, but a bank loan is significant: it must be paid back and it attracts interest so that you pay back more than the original loan. In all cases, you should clear up any ambiguity with a domain expert or the users themselves.
Explain why object diagrams cannot form the basis for a software specification.
Object diagrams represent particular states of the system at particular moments in time,
whereas a specification must describe all valid states of the system, at all possible times.
In a windowing system, a window may be converted to an icon, and back to a full window. What operations can be performed on full windows but not on iconised windows? Would a model containing the classes Icon and FullWindow be able to capture the distinction adequately?
Scrolling and maximising can be done on full windows but not on iconised ones. It will be difficult to model the distinction between a full window and its iconised version adequately by using two different classes, since an object (in this case, the window) cannot dynamically change its class. A solution to this problem might be to have a single class in which an attribute makes the distinction.
In connection with rooms, the hotel manager’s vocabulary includes the words ‘occupied’ and ‘free’. How might such words be represented in a class diagram?
Two ways come immediately to mind:
- as an attribute of the Room class;
- as an association between the Room and Guest classes.
Either is quite acceptable as a way of recording the information.
In your model in part (b), will your decision about occupancy change if you have to include the fact that a room must be cleaned before the next guest occupies it?
(b) Question
In connection with rooms, the hotel manager’s vocabulary includes the words ‘occupied’ and ‘free’. How might such words be represented in a class diagram?
(b) Answer
Two ways come immediately to mind:
- as an** attribute** of the Room class;
- as an association between the Room and Guest classes.
No. The cleaning of a room certainly depends upon whether or not it is occupied, but not on how we choose to model occupancy. (You would include this requirement relating to cleaning in a dynamic model, such as a sequence diagram or state diagram. This will be discussed in a later unit.)
Does invoking an operation on an instance of a class always change the object’s state?
No. Not all operations are intended to change an object’s state. For example, you might provide an operation on the Guest class to respond with the address for any particular instance (object) of that class.
What does an attribute of a class represent?
An attribute represents a particular property (a named value) of the class that each instance of that class will have. Whatever else the attributes of a class are used for, at any one time they collectively define the state of an instance of the class.
Does a multiplicity of 1 indicate that there can be no change in the object to which the multiplicity relates?
No. It merely means that at any one time there will be exactly one object at that end of the relationship. The attributes, or even the identity, of this object may change over time.
If an airline system models flights and pilots, and each flight needs two pilots, would you use a multiplicity of 2?
Probably not. There are probably times during the life of a Flight object when fewer than two pilots are allocated, such as when the flight has been scheduled but crew details have not yet been settled.
Suppose that each person has a number of wardrobes, and each wardrobe contains an even number of shoes. How would you model the evenness of the shoes?
You might use a multiplicity on the association between the classes Wardrobe and Shoe, indicating that valid values were 0, 2, 4, 6, 8 and so on up to some reasonable limit.
Alternatively, you could say that a Wardrobe contains an arbitrary number of instances of a class called ShoePair, where each ShoePair contains one left shoe and one right shoe.
This approach generalises more easily to situations where the groups are not homogeneous. For example, a table setting contains one knife, one fork and one spoon.
If a model contains role names, do you also need to use association names?
No, but it is sometimes convenient to have a name for the association as a whole. For example, you might focus on what is meant by works for, rather than the need to consider both the role employer and the role employee (at the same time).
What is a navigation expression used for?
It provides a way of naming another object or its attributes relative to a starting object, by referring to intermediate role names.
What is a recursive association?
A recursive association is an association where both ends terminate at the same class.
When considering attributes, what is the effect of moving from a conceptual model to a specification model?
The conceptual model records attributes of classes that will be familiar to a domain expert. For example, a hotel manager will be familiar with the daily rate for a room and whether or not it is occupied.
In the specification model, the developer must consider the representation of attributes within a software system. For instance, daily rates for rooms involve money, and you can use a true/false (Boolean) expression to represent the occupancy of rooms.