Endlich mal jemand, der es so versteht, dass man es versteht. Entwickle zwar schon eine halbe Ewigkeit und steige jetzt auf C# um, aber bislang hat es noch nie einer wirklich verständlich rübergebracht. Übrigens wirkt dein Video auch gut vorbereitet, keine nervigen Füllsätze wie "so, war das jetzt alles?", "ich muss mal kurz schauen... ach nee", ... wie sie leider viele andere Dozenten zu Hauf haben. Gefällt mir.
Hallo Jannick, ein schönes Video. Leider hast Du elementare Funktionen der Interfaces vergessen und ich denke, dass es wichtig ist, so etwas auch anzusprechen. Im großen Ganzen sind Interfaces Verträge. Contracts, die eine einheitliche Struktur an Zugriffsmethoden etc. abbildet. Wie Du richtig beschrieben hast, handelt es sich bei Interfaces, also Schnittstellen, um eine Schnittstelle, die von den ableitenden Klassen, nach außen abgebildet wird. Die Klassen, können aber noch eigene Properties und/oder Methoden besitzen, die nicht in der Schnittstelle definiert wurden. Der Vorteil ist ein ganz mächtiger. Denn auch wenn es sich bei einer Schnittstelle, wie bei abstrakte Klassen, um Typen handelt die sich nicht instanziieren lassen, ist es dennoch ein Typ. Ein Typ der nach außen immer die gleichen Zugriffe bedient. Dadurch ist Dependency Injection erst richtig möglich. Denn durch die Polymorphy ist es möglich, dass alle abgeleiteten Klassen vom selben Typ sind. Sie bieten die gleichen Funktionen, was eine Typsicherheit gewährt. Ich kann eine Liste durchlaufen, die Typen von IAnimal (List) hält. Und es ist gewährleistet, dass ich bei jedem Item die Funktion Move aufrufen kann, obwohl es sich um unterschiedliche Klassen handelt, die aber eine Gemeinsamkeit haben, den einheitlichen Vertrag. Durch Polymorphy und DI sind Pattern, wie das Strategie Muster erst möglich. Nur zur Ergänzung Deines Vortrages.
Super tolle Videos Jannik! Du kannst das fantastisch erklären. Dein Intensivkurs auf Udemy hat mir echt die Augen geöffnet. Und man bekommt Lust auf eigene Projekte. Habe zwar erst die Hälfte durch aber bin fast schon traurig das er bald wieder vorbei ist. Kann man nur weiterempfehlen 🍀
Hammer, bei dir habe ich denke ich verstanden wozu Interfaces gut sind, erklärst das richtig gut. Könntest du evtl passend dazu auch ein Video raus bringen was IEnumerable und Ienumerator sind oder wie diese funktionieren?
Für mich waren Interfaces bis jetzt immer ein warum soll ich den extra aufwand betreiben, aber mit dem Grundgedanken das man dadurch eine art Checklist für eine neu klasse hat um wichtige elemente nicht zu vergessen gibt durch aus sinn
Sehr gut erklärt. Aber das Beispiel ist evtl. noch nicht ganz geeignet um zu erklären warum Interfaces und keine abstrakten Klassen. Für dein Beispiel könntest du auch eher eine abstrakte Klasse "Animals" anlegen, die diese Attribute abstrakt vorgibt zu implementieren, wenn du die abstrakte Klasse vererbst. All deine Beispiele, z.B. Fisch oder Hund, könnten von dieser abstrakten Klasse erben, da sie ja offensichtlich auch Animals sind. Aber anders als bei abstrakten Klassen (und deren Vererbungshierarchy) bieten Interfaces die Möglichkeit, diese Bedingungen an komplett unterschiedliche Klassen anzuheften, die nichts miteinander zu tun haben (nicht zur gleichen Vererbungshierarchy gehören).
🔥C# Bestseller Bootcamp ➡bit.ly/c-sharp-bootcamp
Endlich mal jemand, der es so versteht, dass man es versteht. Entwickle zwar schon eine halbe Ewigkeit und steige jetzt auf C# um, aber bislang hat es noch nie einer wirklich verständlich rübergebracht. Übrigens wirkt dein Video auch gut vorbereitet, keine nervigen Füllsätze wie "so, war das jetzt alles?", "ich muss mal kurz schauen... ach nee", ... wie sie leider viele andere Dozenten zu Hauf haben. Gefällt mir.
@@Stani_Badger Na, dan erhell mich doch mal mit deinen Erkenntnissen...
Hallo Jannick,
ein schönes Video.
Leider hast Du elementare Funktionen der Interfaces vergessen und ich denke, dass es wichtig ist, so etwas auch anzusprechen.
Im großen Ganzen sind Interfaces Verträge. Contracts, die eine einheitliche Struktur an Zugriffsmethoden etc. abbildet.
Wie Du richtig beschrieben hast, handelt es sich bei Interfaces, also Schnittstellen, um eine Schnittstelle, die von den ableitenden Klassen, nach außen abgebildet wird.
Die Klassen, können aber noch eigene Properties und/oder Methoden besitzen, die nicht in der Schnittstelle definiert wurden.
Der Vorteil ist ein ganz mächtiger. Denn auch wenn es sich bei einer Schnittstelle, wie bei abstrakte Klassen, um Typen handelt die sich nicht instanziieren lassen,
ist es dennoch ein Typ.
Ein Typ der nach außen immer die gleichen Zugriffe bedient.
Dadurch ist Dependency Injection erst richtig möglich. Denn durch die Polymorphy ist es möglich, dass alle abgeleiteten Klassen vom selben Typ sind.
Sie bieten die gleichen Funktionen, was eine Typsicherheit gewährt.
Ich kann eine Liste durchlaufen, die Typen von IAnimal (List) hält.
Und es ist gewährleistet, dass ich bei jedem Item die Funktion Move aufrufen kann, obwohl es sich um unterschiedliche Klassen handelt, die aber eine Gemeinsamkeit haben, den einheitlichen Vertrag.
Durch Polymorphy und DI sind Pattern, wie das Strategie Muster erst möglich.
Nur zur Ergänzung Deines Vortrages.
Super erklärung :-) danke für die Ergänzung
Top Video,danke 😊
Super tolle Videos Jannik! Du kannst das fantastisch erklären. Dein Intensivkurs auf Udemy hat mir echt die Augen geöffnet. Und man bekommt Lust auf eigene Projekte. Habe zwar erst die Hälfte durch aber bin fast schon traurig das er bald wieder vorbei ist. Kann man nur weiterempfehlen 🍀
Hammer, bei dir habe ich denke ich verstanden wozu Interfaces gut sind, erklärst das richtig gut. Könntest du evtl passend dazu auch ein Video raus bringen was IEnumerable und Ienumerator sind oder wie diese funktionieren?
Hi :) kommt direkt auf meine Liste, dann gibt es dazu auch Videos!
@@CodingmitJannick Freu mich da schon sehr drauf.
Super Video. Danke für deine tolle und einfache Erklärung!
Sehr gerne!
Für mich waren Interfaces bis jetzt immer ein warum soll ich den extra aufwand betreiben, aber mit dem Grundgedanken das man dadurch eine art Checklist für eine neu klasse hat um wichtige elemente nicht zu vergessen gibt durch aus sinn
Sehr cool erklärt, danke.
Sehr gut erklärt. Aber das Beispiel ist evtl. noch nicht ganz geeignet um zu erklären warum Interfaces und keine abstrakten Klassen. Für dein Beispiel könntest du auch eher eine abstrakte Klasse "Animals" anlegen, die diese Attribute abstrakt vorgibt zu implementieren, wenn du die abstrakte Klasse vererbst. All deine Beispiele, z.B. Fisch oder Hund, könnten von dieser abstrakten Klasse erben, da sie ja offensichtlich auch Animals sind.
Aber anders als bei abstrakten Klassen (und deren Vererbungshierarchy) bieten Interfaces die Möglichkeit, diese Bedingungen an komplett unterschiedliche Klassen anzuheften, die nichts miteinander zu tun haben (nicht zur gleichen Vererbungshierarchy gehören).
Top erklärt...