Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#8

Re: message <> methode oder?

  Alt 6. Nov 2004, 02:57
Hallo Nicodius,

Nachrichten, auch bekannt als Operationen sind in diesem Beitrag kurz umrissen.

Um den Kern meiner Aussage hervorzuheben: Eine Operation kann definiert werden, ohne dass eine Methode implementiert worden ist. Es können beliebig viele Methoden exisiteren, aus denen "das Laufzeitsystem" zur "Beantwortung" einer Nachricht (Operation) wählt.

In einigen Diagrammen der UML (zB dem Klassendiagramm) werden (Klassen-)Operationen modelliert und stellen tatsächlich zT konkrete Methoden dar (sofern nicht kursiv markiert oder Teil eines Schnittstelle). Möchtest Du, wie in Delphi zB möglich, eine Klasse mehrere Schnittstellen (Interfaces) implementieren lassen, könnten auf diese Weise Operationen im Interface definiert werden, eine Bindung andersbenannter Methoden zu Operationen identischer Signatur unterschiedlicher Interfaces können jedoch nur schwer ausgedrückt werden.
Delphi-Quellcode:
type
  IMyInterface = interface
    function InkrementiereZaehler: Integer; stdcall;
    function DekrementiereZaehler: Integer; stdcall;
  end;

  TMyObject = class(TObject, IInterface, IMyInterface)
  private
    function ErhoeheZaehler: Integer; stdcall;
    function VeringereZaehler: Integer; stdcall;
    function ErfrageSchnittstelle(const IID: TGUID; out Obj): HResult; stdcall;

    function IInterface._AddRef = ErhoeheZaehler;
    function IInterface._Release = VeringereZaehler;
    function IInterface.QueryInterface = ErfrageSchnittstelle;

    function IMyInterface._AddRef = ErhoeheZaehler;
    function IMyInterface._Release = VeringereZaehler;
    function IMyInterface.QueryInterface = ErfrageSchnittstelle;
    function IMyInterface.InkrementiereZaehler = ErhoeheZaehler;
    function IMyInterface.DekrementiereZaehler = VeringereZaehler;
  end;
Bei dynamischen Proxies oder einem "double dispatch" aus Smalltalk stößt diese Art der Darstellung ebenfalls an seine Grenzen. Zwar lassen sich die Methoden zu "messageNotUnderstood" etc. modellieren, der semantische Zusammenhang geht jedoch ohne Kommentare verloren.

Andere Diagramme der UML (zB Sequenzdiagramme oder Aktivitätsdiagramme) abstrahieren jedoch von einer konkreten Methode und stellen dar, dass einem Objekt eine "Nachricht" gesendet wird.
gruß, choose
  Mit Zitat antworten Zitat