Objekte interagieren, indem sie sich Botschaften (Messages) zusenden. Wie der Empfänger auf die Botschaft reagiert, ist seine Sache. Im Normalfall wird eine Methode aufgerufen, in der das gewünschte Verhalten implementiert ist.
Klassen erzeugen Objekte und speichern die Implementationen der Methoden, die von den Objekten unterstützt werden. Daneben speichern Klassen noch Daten, die nicht von einzelnen Objekten abhängen, in so genannten Klassenvariablen oder Klasseninstanzvariablen. Auch diese sind von außen nicht direkt zugänglich.
Module sind in Ruby Klassen, die keine Objekte erzeugen können
und nicht wie Klassen in einer Hierarchie angeordnet sind. Module
können andere Module mit include einschließen, aber nicht voneinander
abgeleitet werden. Sie werden in Kapitel 16 näher besprochen.
Klassen können voneinander abgeleitet werden. Dabei vererbt die vorhandene Klasse Wissen und Fähigkeiten an ihren Abkömmling. In der abgeleiteten Klasse müssen dann nur noch die Änderungen implementiert werden, die sie von ihrem Vorfahren unterscheiden.
Jedes Objekt in Ruby ist Instanz (Ausprägung) einer Klasse und enthält
auch einen Verweis auf diese. Auch Klassen sind Objekte, nämlich Instanzen der
Klasse Class. Alle Klassen sind (implizit und oft über mehrere Stufen)
von der Klasse Object abgeleitet.