The Galileo Object Database Language
and its main memory implementation
Place: University of Pisa
Project Leader: Antonio Albano
- Galileo 97 is a safe language. Each denotable value of the language possesses a type. Besides predefined types, type constructors exist to define new types, form predefined or previously defined types. They are: pairs, tuple, sequence, discriminated union, function and abstract or semi-abstract types. When defining semi-abstract types, the set of possible values can be restricted with assertions. In general, any expression has a type that can be statically determined, so that every type violation can be detected by textual inspection (static type checking).
- Galileo 97 has subtyping. If a type T is a subtye of a type T’, then a value of T can be used as an argument of any operation defined for values of type T’.
- Galileo supports objects with a set of roles which can change over time to model the dynamic and context dependent behavior of real-world entities. A message is sent to an object only through one of its roles and the answer to the message may depend on the role the message is addressed to and on the roles possessed by the object.
- Galileo supports virtual objects to model different interfaces to the same conceptual entity. A virtual object has the same identity as the object from which it has been constructed, but it may have a different structure and behavior of the object from which it has been constructed.
- Galileo supports the abstraction mechanisms and the query language of object databases. Classes are the mechanism to represent a database by means of modifiable sequences of interrelated objects, which are the computer representation of certain facts of entities of the world that is being modeled. Predefined assertions on classes are provided and the oeprators for including or eliminating elements in a class are automatically defined.