Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: Was sind Interfaces und wie wendet man sie an? (brauche tut)

  Alt 27. Mai 2014, 07:57
Die Idee dahinter ist, das viele unterschiedliche Klassen das gleiche Interface implementieren können.
Das schafft man auch mit einer abstrakten Basisklasse.

Interfaces sind Spezifikationen ohne jegliche Implementierung. Während bei einer abstrakten Basisklasse noch Implementierungen bzw. Geschäftslogik enthalten sein können, definieren Interfaces ausschließlich die Außendarstellung einer Klasse, sie sind also so etwas wie ein Vertrag, den eine Klasse einhalten muss, um vom Anwender des Interfaces verwendet werden zu können.

Interfaces verbergen die Implementierung, d.h. Du kannst eine Klasse unsichtbar machen, sodass Sie nie direkt instantiiert werden kann. Über eine Factorymethode zwingst Du den Anwender dann, bei Bedarf eine Instanz kontrolliert zu instantiieren, z.B. um bestimmte und notwendige Eigenschaften vorzubelegen. Das geht mit einer Klasse so nicht.

Interfaces beschreiben, salopp ausgedrückt, was eine Klasse alles (an Eigenschaften) hat und (über Methoden) können muss, aber nicht wie. Eine Klasse macht das im 'interface' Teil zwar auch, aber Du kannst die Klasse nicht ohne Implementierung weitergeben.

Als Programmierpattern haben wir uns (in C#) angewöhnt, Klassen stets als internal zu deklarieren, deren Interface (also die Eigenschaften und Methoden für den korrekten Umgang) als public. Die Klasse definiert wesentlich mehr Methoden als das Interface, aber nicht 'nach außen'. 'Außen' ist hier jede andere Assembly.

Das geht -glaube ich- so nicht in Delphi. Es gibt keinen Zugriffsmodifizierer (private, protected, public) auf Typebene. Leider.

Geändert von Dejan Vu (27. Mai 2014 um 08:01 Uhr)
  Mit Zitat antworten Zitat