Eine Klasse ist in Operno eine Gruppe aus Funktionen und statischen Variablen. Somit ist eine Klasse mit all ihren Methoden und Attributen zur Laufzeit modifizierbar.
Der Name der Gruppe bestimmt den Namen der Klasse. Alle weiteren Unterobjekte sind für jedes Objekt der jeweiligen Klasse bekannt und können durch ":" angesprochen werden. Darunter gehören einige Klassenmethoden, die zu bestimmten Ereignissen automatisch aufgerufen werden.
person{ 'Kopf der Klasse
say hello(){ 'Eigene Klassenmethode
out "Hello, I am #(name)!"
}
_new(){ 'Konstruktor
this\name.s
this\age.i
}
_def(name.s, age.i){ 'Sofortdefinition
this\name = name
this\age = age
}
}
Die Referenz "this" ist eine Gruppe aus Instanz-Objekten. Meist werden neue Instanz-Objekte im Konstruktor ("_new") definiert. Ein Objekt kann durch "\" auf dessen Instanz-Objekte zugreifen. Falls die Instanz-Objekte als eine Gruppe behandelt werden sollen, kann man auch ein Slash ohne einen nachfolgenden Bezeichner angeben.
In jeder Klassenmethode sind die Instanz-Objekt mit im Namensraum eingebunden. Man muss also beim Zugriff kein "this\" verwenden.
myself.person
myself\name = "Josef"
myself\age = 16
myself:say hello 'Gibt "Hello, I am Josef!" aus