Tach!
Meiner Auffassung nach sind das ganz normale Methodenaufrufe, die du da beschreibst. Auch wenn es Methoden von anderen Objekten sind, zu denen du eine Referenz hast, wird das noch keine Delegation.
Ich kann mich nur wiederholen. Der entscheidende Aspekt einer Delegation ist (laut Wikipedia und allen Beispielen, die ich außerdem dazu gefunden haben), dass die Bindung zwischen Aufrufer und dem Aufgerufenen erst zur Laufzeit hergestellt wird, sie damit variabel ist und nicht bereits fest im Code verankert ist. In deinem jetzigen Beispiel ist bereits im Code festgelegt, dass vom selbst erstellten CGI-Objekt und keinem anderen eine Methode aufgerufen wird. Eine Delegation wird es erst dann, wenn im Klassencode noch nicht ersichtlich ist, von welcher konkreten Instanz die Methode aufrufen wird.
Wenn man die Objektorientierung mal beiseite lässt, wäre nach deiner Auffassung jeder stinknormale Funktionsaufruf bereits eine Delegation. Eine dynamische Bindung kommt jedoch erst dann zustande, wenn die auszuführende Funktion zur Laufzeit bekanntgegeben wird. Bei Callbacks in PHP zum Beispiel bekommt der Aufrufer den Namen der aufzurufenden Funktion erst bei seinem Aufruf als Parameter übergeben. Somit kann die Bindung erst jetzt hergestellt und nicht gleich vom Bytecode-Compiler erzeugt werden.
Oder mit anderen Worten: Wenn ein Mitarbeiter fest angestellt ist, dann erledigt er zwar (Teil-)Aufgaben, ist aber trotzdem Teil des großen Ganzen namens Firma. Eine Delegation kommt zustande, wenn im laufenden Betrieb ein Externer hinzukommt, um eine Aufgabe zu erledigen.
dedlfix.