Laden...

Interface-Schnittstelle

Letzter Beitrag vor 19 Jahren 6 Posts 1.791 Views
Interface-Schnittstelle

Hallo Forum!
Ich hätte da mal eine allgemeine frage.
Warum sollte man bei einem Projekt auf eine Interface-Schnittstelle nicht verzichten??

Vorteile??

Nachteile??
Mehr Tipslarbeit

Ps.: Ich versteh denn sinn nicht ganz.
mfg

Hallo Qt21580,

siehe z.B. Interface, Klassen und Vererbung ?

herbivore

In c# gibts keine Mehrfachvererbung. Ein solches Problem musst du mit Interfaces lösen.

Ich verwnde Interfaces, wenn ich Klassen bestimmte eigenschaften geben möchte. Wie z.B. istInDatenbankAbspeicherbar, istProtokollierbar, istMitTCPVersendbar....

Vererbung gebrauche ich, wenn ich sage, dass eine Klasse etwas anderes ist
Ein Auto ist ein Fahrzeug.

Ich hab da ein Beispiel:

ein Auto is ein Fahrzeug -> Vererbung
ein fahrrad is ein Fahrzeug -> Verergung
ein Auto ist Reparierbar -> Interface
ein Auto ist Blitzbar (von der Polizei weils zu schnell ist) -> Interface
ein Fahrrad ist NICHT Blitzbar ->
ein Motorrad ist ein Fahrzeug -> Vererbung
ein Motorrad kann geblitzt werden -> Interface
....
....
....

Ausserdem solltes du mit .NET Remoting immer Interfaces verwenden. Das erleichtert das Deployment von Software

Das Problem "Mehrfachvererbung " mit Interfaces zu lösen halte ich für schlecht. Wäre da Komposition nicht die bessere Wahl?

Ja, das wird ja auch so gemacht. In der Praxis wird Mehrfachvererbung mit Hilfe von Schnittstellen und Aggregationen umgangen.

Vererbung modelliert einen "Ist-Ein"-Aspekt (Hund "ist-ein" Säugetier). Man nennt das auch Generalisierung/Spezialisierung. Mittels Interfaces lassen sich "Verhält-sich-wie"-Aspekte modellieren, die ja nicht zwangsweise mit dem "Ist-ein"-Aspekt einhergehen müssen (Beispiel: "Kann-Schwimmen" wäre in ISwimmable bzw. ISwimmer-Interface).

Hund erbt also von Säugetier und implementiert ISwimmable. Insofern definieren Interfaces Verhalten quer zur Vererbungshierachie.