Eine Klasse repräsentiert einen Entity-Typ zusammen mit einer Struktur- und Verhaltensbeschreibung, welche ggf. an Unterklassen vererbt werden können. Binäre Beziehungen können durch mengenwertige Attribute modelliert werden:
class Studenten {
attribute long Matrnr;
attribute String Name;
relationship set <Vorlesungen> hoert inverse Vorlesungen::Hoerer
}
class Professoren {
attribute long PersNr;
attribute String Name;
relationship set <Vorlesungen> liest inverse Vorlesungen::gelesenVon
}
class Vorlesungen {
attribute long VorlNr;
attribute String Titel;
relationship Professoren gelesenVon inverse Professoren::liest
relationship set <Studenten> Hoerer inverse Studenten::hoert
}
Beispiel-Query: Welche Studenten besuchen Vorlesungen von Sokrates ?select s.Name from s in AlleStudenten, v in s.hoert where v.gelesenVon.Name = "Sokrates"