OMT Object Model
Identify object classes
Here are the nouns found in the video-store
example:
Video store, tape request, tape customer, tape supplier, tape
overdue notice, store assistant, information, film, tape, list of
rentals, tape return, task, activity, submission of rate changes,
submission of new tapes, store management, production, rental
report, store administration.
For this example we only consider the nouns that are related to the
problem of video-renting. These are the classes that remain if we
discard all the unnecessary and incorrect classes, following the
given criteria (the remaining classes are in italics):
Video store: irrelevant
Tape
(tape) Request: operation
(tape) Customer: role
(tape) Supplier: role
(tape) Overdue notice: vague
Store assistant: irrelevant
Information: vague
Film
Rental: vague
List (of rentals): vague
(tape) Return: operation
Task: irrelevant
Activity: irrelevant
Submission of rate changes: operation
Rate: attribute
Submission of new tapes: operation
Store management: irrelevant
Production: operation
(rental) Report: vague
Store administration: irrelevant
Customer is a role-name. It is better to say something about the
intrinsic nature of the class instead of its role in an association. So
we rename "Customer" to "Person". The same counts for
"Supplier".
Prepare a data dictionary
Next, we prepare a data-dictionary, in which we describe each
class.
Person: A person can rent video-tapes, if he is a supplier
he can submit supply tapes
Film: this is what a customer wants to see, and what's on
a tape
Tape: a tape contains a film, there may exist many tapes
of the same film.
Define associations
Next, we define the associations. After having rejected some
candidate-associations, we come to the following associations:
Person rents a tape
Person is supplies of a tape
Tape contains a film
This gives us the following schema:

After specifying the semantics of the associations, we come to the
following schema:

These are the attributes we could find for the classes:
Person: address
Tape: tape number
Film: name, rental price, late charge
Furthermore, there also exists a link-attributes in the association
rents. For every rental the following things are
recorded:
Date
Return date
After having found the attributes we can draw the following
schema:

The class person can be refined using inheritance. We can make
two specializations, namely "customer" and "supplier".
This gives us the following schema:

In this last schema access-paths for the most likely queries do exist.
All information concerning the tapes and films is available in the
attributes of this objects. Overdue notices can be generated by
looking at the 'return-date' attribute of the 'rents'-association. This
way, the store assistant can also check if the customer is late with
the return of tapes.
This last schema can be further enhanced using iteration, i.e. going
back to earlier stages in the design-trajectory.
Last modified: February 8th, 1996
Henk Enting, h.d.enting@cs.utwente.nl