Using transient properties
Using transient properties is a comfortable feature of extending data types when being active, i.e. when persisting in memory. Usually, transient properties contain any sort of derived data, as e.g. the age of father. Thus, one may define a transient attribute fathers_age with a source father(0).age (where age is probably defined as another transient attribute with the source {Date().Year - birth_date.Year;}.
Moreover, one may also define transient collections or references in many different ways. Usually, ODABA cares about calculating transient properties at the right moment, which is usually, when accessing a transient property. On the other hand, ODABA also cares about invalidating transient properties, when its parent has changed (e.g. by selecting another person).
Another possibility is controlling transient properties by context class functions. This might perform better in case of calculating transient properties in very rare cases.
One might define transient attributes or transient references. Transient base types or relationships cannot be defined. One may define, however, a base type containing transient properties, only.