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