Read First: Object Type
Specializing is another word for subtyping. The mappings, relations,
and operations that apply to a specialized type should generally result
in a smaller set of objects that are instances of that type. For
example, if we subtype the Animal object type into the Dog object type,
then we are adding features to Dog, such as long teeth, which reduces
the number of objects that can be in the set of Dogs. This is the
set-based interpretation of specialization, which OOIE adopts.
Read First: Relation, Mapping
There are various ways to specialize an object type:
1) Add relations, mappings, or operations to the type.
As new features are added to the object type, fewer objects
will generally have those features. For example, if we have
an object type that says nothing at all, all objects will
conform to it. As we say things about the object type, it
will apply to fewer objects.
2) Restrict the types associated with the relations, mappings, and
operations.
For example, suppose we have a driving relation between
vehicles and people. If we restrict the people that can
drive a particular kind of vehicle, then we have made a
specialization of vehicles. For example, trucks can only be
driven by people with a particular kind of license. Similarly
specializations can be created by restricting the range of
mappings, and the types input to and output from operations,
as well as the events resulting from operations.
3) Restrict the cardinalities associated with the relations,
mappings, and operation.
For example, suppose that have a relation between restaurants
and the customers it has in it at any given time. In general
we might not restrict this number, but if we restrict it to
20, for example, then we are forming a specialization for
smallrestaurants.
The first technique adds new features to those that are inherited,
whereas the second two modify inherited features. This means that the
second two techniques. reduce the reusability of the subtypes, because
the subtypes cannot be used in all the ways that their supertypes can.
Read First: Object Type, Relation, Mapping