Wenn Sie einen Burrito essen, singt jeder Ihrer Geschmacksrezeptoren vor Freude. Jeder Bissen bringt eine Kombination verschiedener Geschmacksrichtungen wie salzig, süß, scharf und umami mit sich. Jeder Bissen danach schmeckt etwas anders, da eine neue Sammlung von Zutaten ihre Aromen miteinander verbindet.

Sie haben vielleicht die Zutaten aus der Speisekarte gelesen, wissen aber nicht genau, wie die Salsa zubereitet wird. Das Gewürz, das sie für ihr Gemüse verwenden, könnte eine geheime Mischung sein. Sie müssen jedoch nicht jede Zutat genau kennen. Es reicht zu wissen, dass es lecker ist.

Die Zutaten, die Sie kennen, wie einfacher weißer Reis, sind konkret. Die anderen Elemente sind abstrakt. Du weißt, es ist Salsa, aber welche Art? Oder wenn dir jemand einfach aus dem Nichts einen Burrito überreicht, dann ist der ganze Burrito abstrakt.

Abstraktion im Abstrakten

Zusammen mit Erbschaftist Abstraktion ein wichtiges Konzept in der objektorientierten Programmierung. Die Theorie besagt, dass jedes Objekt einfache und vorhersagbare Ergebnisse liefern sollte. Objekte sollten auch nur teilen, was geteilt werden muss.

Sie können sich einen Burrito als Objekt vorstellen. Im Burrito befinden sich mehrere andere Gegenstände wie Bohnen, Reis, Käse und scharfe Soße. Die Bohnen können gewürzt sein. Der Käse könnte eine Mischung sein. Und die scharfe Sauce könnte eine Kombination aus in Essig gereiften Paprikaschoten sein.

Sie müssen nicht wissen, wie alle Zutaten in einem Burrito hergestellt wurden. Und im Fall von Hot Dogs möchten Sie es wahrscheinlich nicht wissen. Wichtig ist nur, dass es beim Essen nicht auseinanderfällt und super lecker ist.

Abstraktion ist eng mit Kapselung verbunden

Dasselbe gilt für Programmierobjekte. Wenn Sie ein Objekt instanziieren (es aus einer Klasse erstellen), ist das so, als würde man einen Burrito an der Imbisswagentheke bestellen. Sie haben Zugriff auf einige Daten, aber nicht auf alle. Sie müssen nicht wissen, wie das Objekt funktioniert, solange die Funktionen die richtigen Daten zurückgeben. Hier ist ein Burrito in JavaScript/Typescript:

Die angegebene Sprache: tsx existiert nicht'
Codegenerierung fehlgeschlagen!!
'

Sie können Spielen Sie mit diesem Code in der TypeScript-Sandbox.

Im obigen Beispiel werden die Salsa- und Käsezutaten entfernt. Zunächst werden sie eingekapselt, um die besonderen Inhaltsstoffe zu verbergen. Dann werden Getter hinzugefügt, um Zugang zu den Zutaten zu erhalten. Aber die Zutaten geben nur eine abstrakte Darstellung dessen wieder, was sie wirklich sind.

Abstraktion im Konkreten

Abstraktion ist jedoch mehr als ein Konzept. Klassen können auch abstrakt sein. Das bedeutet, dass sie andere Klassen definieren können. Aber sie können nicht selbst instanziiert werden.

Warum Klassen manchmal abstrakt sein sollten

Stellen Sie sich vor, Sie gehen in ein Restaurant und setzen sich hin. Der Kellner reicht Ihnen eine Speisekarte. Sie öffnen es und stellen fest, dass es nur einen Gegenstand gibt: Essen.

Das ist ziemlich abstrakt. Würdest du es bestellen? Würdest du es essen? Wahrscheinlich nicht. Zu sagen, dass etwas Essen ist, reicht nicht aus. Es muss in etwas Konkreteres zerlegt werden.

Was ist mit Nudeln? Nun, das ist eine spezifischere Art von Nahrung. Und wir wissen, dass es wahrscheinlich Nudeln und Soße gibt. Aber es gibt viele verschiedene Arten von Pasta da draußen, also ist es immer noch abstrakt.

Was ist abstrakt und was ist konkret?

Fettuccine Alfredo ist ein konkretes Beispiel für Essen und Pasta. Dasselbe gilt für Klassen. Nicht jede Klasse sollte instanziiert werden. Einige Klassen sollten nur die Struktur anderer Klassen definieren.

Hier ist ein Beispiel mit einem Abstract Essen Klasse und ein Kind Macadamianüsse Klasse:

Die angegebene Sprache: tsx existiert nicht'
Codegenerierung fehlgeschlagen!!
'

Hier ist der Code.

Abstrakte Klassen sagen anderen Klassen, wie sie sich verhalten sollen. Wenn Sie im obigen Beispiel eine Lebensmittelklasse sein wollen, müssen Sie über Funktionen verfügen, die den Zugriff auf Ihren Namen, Geschmack, Beschreibung und Kalorien ermöglichen.

Beachten Sie, dass die Macadamianüsse Klasse erweitertEssen. Das sagt das Macadamianüsse verpflichtet sich, die Regeln von zu befolgen Essen. Beachten Sie auch, dass der Konstruktor aufruft super. Dieser Befehl instanziiert die übergeordnete Klasse, bevor der Konstruktor instanziiert Macadamianüsse.

Wenn Sie Programmieren lernen, können Sie das haben Sie mehr Spaß mit diesen Programmierspielen.

Abstraktionspraxis

  • Besuchen Sie den obigen Link und verwenden Sie die Sandbox, um eine abstrakte Klasse mit dem Namen zu erstellen Suppe.
  • Erstellen Sie ein konkretes Kind des Suppe Klasse, genannt Müsli.
  • Benutzen Konsole.log um deinen Code zu testen. Was passiert, wenn Ihre Müsli Klasse fehlt eine der in definierten Funktionen Suppe?

Aber was ist der Sinn einer Klasse, die Sie nicht instanziieren können?

Auf den ersten Blick mögen abstrakte Klassen unnötig erscheinen. Schließlich können Sie sie nicht wirklich verwenden, um ein Objekt zu erstellen. Und es ist nicht so, dass sie ihre Funktionen weitergeben. Funktionen müssen in jeder untergeordneten Klasse neu geschrieben werden.

Es gibt zwei Hauptgründe, warum Sie abstrakte Klassen benötigen. Sie halten Ihren Code konsistent und stellen sicher, dass andere Entwickler ebenfalls konsistenten Code schreiben. Sie werden nicht immer alleine arbeiten. Das gesamte Team muss die gleichen Regeln befolgen. Sie können mehr von lernen die TypeScript-Dokumentation zu abstrakten Klassen.

So organisieren Sie Ihren objektorientierten Code mit Vererbung

Lesen Sie weiter

TeilenTwitternTeilenEmail

Verwandte Themen

  • Programmierung
  • Programmierung
  • Objekt orientierte Programmierung

Über den Autor

Lee Nathan (19 veröffentlichte Artikel)

Lee ist Vollzeit-Nomade und Universalgelehrter mit vielen Leidenschaften und Interessen. Einige dieser Leidenschaften drehen sich um Produktivität, persönliche Entwicklung und Schreiben.

Mehr von Lee Nathan

Abonnieren Sie unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich anzumelden