Das Verhalten des Programms kann (ggfs. zur Laufzeit) modifiziert werden, z.B. durch Änderung der Semantik von Instantiierungen, Methodenaufrufen, Attributzugriffen, etc.
Das funktioniert üblicherweise durch Reflection bzgl. des Metaprogramms
class Class alias oldNew new def new(*args) print "Creating a new ", self.name, "\n" oldNew(*args) end end class Name end n = Name.new
Creating a new Name