C# Interfaces

Eine Thema welches in Kursen häufig einen Knackpunkt bildet sind Interfaces.
Ein Interface ähnelt einem Vertrag über die äußere Struktur von Daten. Das Interface definiert Properties und Methoden welche eine abgeleitete Klasse haben muss.
Beginnen wir nun mit einem kleinen Beispiel:

public Interface ILebewesen
{

string Name {get; set;}

string Art { get; }

string Klasse { get; }

}

Wie unschwer zu erkennen müssen Lebewesen nun mindestens die Eigenschaften Name(z.B. Miezi) eine Art(z.B. Säugetier) und eine Klasse(z.B. Raubtier) haben. Diese Liste ist natürlich beliebig erweiterbar

Versucht man nun eine Klasse Katze zu erzeugen wäre der Anfang klar.

private class Katze : ILebewesen
{

}

Allerdings wäre jetzt sofort erkenntlich das die Klasse Katze so nicht kompiliert werden kann da ILebewesen nicht korrekt implementiert wird.
Visual Studio erleichtert euch das implementieren von Interfaces indem Ihr einen Rechtsklick auf das Interface der Klasse macht und "Implement Interface" auswählt.

 

private class Katze : ILebewesen

{

public Katze(string name)

{

this.Name = name;

}

public string Name{ get; set; }

public string Art

{

get { return "Katze"; }

}

public string Klasse

{

get { return "Saeugetier"; }

}

}

 

Somit können wir ein Objekt vom Typ "Katze" erstellen und ihm einen Namen zuweisen.
nach dem selben Muster könnten man nun noch Vogel und Hund erzeugen.

Aber was kann ich nun damit anfangen?
Schauen wir uns ein Codefragment an:

List<ILebewesen> lebewesenliste = new List<ILebewesen>();

lebewesenliste.Add(new Hund("Bello"));

lebewesenliste.Add(new Vogel("Birdie"));

lebewesenliste.Add(new Katze("Lady"));

lebewesenliste.Add(new Hund("Kira"));

lebewesenliste.Add(new Hund("Bonka"));

foreach (ILebewesen wesen in lebewesenliste)

{ tuwas()}


Dieser Liste fügen wir ein paar Testobjekte hinzu.
Der große Vorteil ist nun, dass wir über die ganze Liste iterieren können, da wir eine Liste von Objekten haben deren Klassen ILebewesen implementieren.
In der Praxis liegt der größte Wert von Interfaces in Projekten an denen mehrere Entwickler beteiligt sind.
Ein zweiter Entwickler kann sich einfach anschauen welche Interfaces die Klassen eines ersten Entwicklers implementieren und auf diesem Wissen aufbauen ohne die Klassen selbst zu kennen.
Und wer noch viel genauere Infos zu Interfaces und der ganzen Welt des C# braucht ist in Kursen der ppedv gut aufgehoben.

Kommentare sind geschlossen