Frage von Powerbuddy, 25

Was sind Schnittstellen?

Was sind Schnittstellen in C#?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von icekeuter, 9

Interfaces oder Schnittstellen schließen eine Art Vertrag mit der Klasse ab, die sagt das die Klasse bestimmte Funktionen enthalten muss. Werden die Funktionen nicht implementiert erscheint ein Fehler und du kannst den Code gar nicht erst compilieren.

Ein einfaches Beispiel. Stell dir vor du willst ein Spiel programmieren und hast dafür verschiedene Helden (also Menschen) wie z.B. Diablo und Tyrael entwickelt. Beide Helden, wie unterschiedlich sie auch sein mögen, haben bestimmte eigenschaften die sie sich Teilen. Z.B. die Lebenspunkte und den Schaden den sie verursachen wenn sie Angreifen. Zwar sind die Lebenspunkte und der Angriff unterschiedlich, aber beide brauchen dafür eine Funktion.

Also erstellst du die Klasse ICharakterEigenschaft mit den Funktionen Lebenspunkte und Angriff. Um es einfach zu halten, wollen wir einfach die höchstmögliche Anzahl an Lebenspunkten und den verursachten Schaden zurückgeben.


Das Interface (Schnittstelle) ICharakterEigenschaft implementierst du jetzt in die Klassen Diablo und Tyrael (deine Helden). Beide Helden müssen nun die Funktionen implementiert haben. Dort kannst du z.B. bei Tyrael sagen:

public class Tyrael() : ICharakterEigenschaft
{
public int Schaden()
{
return 254;
}
}

Bei Diablo gibst du einfach einen anderen Wert ein. Anschließend machst Du das selbe für die Lebenspunkte.

Nun stell dir vor du bietest dem Spieler an den Helden den er spielen will selber auszusuchen. Nehmen wir mal an der Spieler sucht sich Diablo aus. Ohne eine Schnittstelle würdest du warscheinlich die Klasse Diablo initzialisieren um auf dessen Eigenschaften und Funktionen zu zu greifen. Doch was ist wenn der Held anstatt Diablo, Tyrael wählen würde?

Du müsstest für jeden einzelnen Helden abfragen, welcher Held gewählt wurde und welche Funktion ausgeführt werden soll. Und das musst du unter umständen sogar mehrmals machen. Und wenn du jetzt anstatt 2, 50 Helden hättest, könntest du dir vorstellen wie Aufwendig, Wartungsbedürftig und Fehleranfällig so etwas sein kann.

Mit einer Schnittstelle kannst Du es dir viel einfacher machen (um auf unser Beispiel zurückzukommen):

Du kannst z.B. einfach eine Member Variable (nennen wir sie "m_AusgewählterHeld") anlegen (die in der gesammten Klasse gültig ist) vom Typ ICharakterEigenschaft. Egal welcher Held ausgewählt wird du kannst einfach schreiben:

switch (NameDesHelden)
            {
case "Tyrael":
                    m_AusgewählterHeld = new Tyrael();
                    break;
case "Diablo":
                    m_AusgewählterHeld = new Diablo();
                    break;
...
}

Eine Variable aktzeptiert beide Helden. Willst du jetzt z.B. die Lebenspunkte eines Helden abrufen kannst du es einfach mit

int WieVielLebenspunkteHatMeinHeld = AusgewählterHeld.Lebenspunkte()

abrufen.

Ich hoffe ich konnte dir das einigermaßen erklären :D

MfG. icekeuter

Kommentar von Powerbuddy ,

Wow vielen Dank jetzt hab ich es verstanden:) Und was sind eigentlich namespaces? Und so nebenbei: Wie kann ich dich zur besten Antwort machen?

Kommentar von icekeuter ,

Namespaces sind die using Derektive (die stehen ganz am Anfang deiner Klasse). Die dienen Hauptsächlich zur Organisation.

Hier würde ich einfach mal auf die MSDN Verweisen:

https://msdn.microsoft.com/de-de/library/dfb3cx8s.aspx

Die MSDN ist die erste Anlaufstelle für Entwickler - egal für welche Programmiersprache (im .NET bzw. Microsoft Universum), bei Fragen.

Im übrigen: Erscheint ein Fehlermeldung bzw. benutzt du eine Funktion die du nicht kennst etc. kannst du einfach mit der Maus drauf klicken und F1 drücken (funktioniert nur in Visual Studio ;)). Dann wirst du Automatisch zur MSDN Webseite geleitet und du bekommst Hilfe zu dem Fehler, der unbekannten Funktion etc.

Antwort
von Tetmin, 14

Schnittstellen sind sogesagt der Zugang auf (z.B.) Variabeln aus einer anderen Klasse. (Mit get und set)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten