Inheritance (Cont.)
Types
Each class is assigned a type which defines the attributes applicable to the objects.
Substitutability
An object should be substitutable by objects of its subclasses.
Thus, the type of the subclass must be a subtype of the type of the superclass in an appropriate sense.
A type
T’ is a subtype of the type
T and vice versa
T is a supertype of
T’, if either
T =
T’ or the following conditions apply:
- If
T is a class, then every subclass T’ of T is a subtype of T.
- If
T is a tuple type, then T’ is a subtype of T, if T’ is also of tuple type and every attribute in T is defined for T’ as well.
Moreover, for corresponding attributes the T’-type must be a subtype of the T-type.
- If
T is a set type, then T’ is a subtype of T, if T’ is also a set type and the element type of T’ is a subtype of the element type of T.
Find all employees who have the same domicile as their drivers.
SELECT a FROM a IN employee
WHERE a.domicile.location = a.driver.domicile.location;
|
Late Binding
Substitutability of objects and redefinition of methods requires late binding.
Determine all employees whose successindicator > 50.
|
|
successindicator ( employee ): INTEGER
successindicator ( manager ): INTEGER
SELECT a FROM a IN employee
WHERE a.successindicator > 50;
|
|
I’ve just invented a great new iPhone alarm app.
If you press the snooze button 3 times it automatically emails
your boss telling them that your gonna be sick.
|