Flutter -- ohne Dart geht es nicht Klassen Teil 1

Wie dem interessierten Leser sicherlich schon bekannt sein dürfte, ist Dart eine objektorientierte Programmiersprache, kurz OOP.
Zu OOP gehören Objekte und Klassen. Wie vieles im Leben ist der Start in das Thema einfach, kann und wird aber mit zunehmender Tiefe anspruchsvoller.

Klassen


Eine Klasse, oder auch Objekttyp, kann man als Bauplan verstehen, um eine reale Problemstellung in einem Softwareobjekt abzubilden. Wir könnten zum Beispiel die Klasse Schach definieren, um anschließend die einzelnen Figuren aus dieser Klasse zu generieren.

Eine Klasse besitzt Attribute und Methoden/Funktionen. Wenn wir jetzt das Beispiel Schach umsetzen möchten, können wir uns an dem realen Schach orientieren. In der Theorie ist das immer die richtige Vorgehensweise, das heißt: ein Objekt / Problemstellung aus der realen Welt, wird analysiert und in eine Klasse umgewandelt.


  • class Schach
  • Farbe
  • Form
  • erlaubteBewegungen
Mit der Klasse Schach könnten wir jetzt ein Objekt erzeugen, das einen weißen Bauern darstellt.
Dazu generieren wir aus der Klasse ein Objekt und geben ihm einen Namen: weisserBauer.

weisserBauer = neu Schach (weiß, bauer, einoderzwei)

Dies ist natürlich nur eine Abstrakte Schreibweise, die das Prinzip aber erklärt. Mit der Klasse Schach erzeugen wir ein Objekt weisserBauer. Bei der Erzeugung geben wir ihm die notwendigen Attribute mit. Mit der gleichen Klasse Schach könnten wir auch ein Objekt für den König oder für den Läufer erstellen, von beiden Spielfarben.

Alles ist Familie


Sehen wir uns jetzt einmal eine ganz einfache Klasse in Dart an:


Diese Klasse ist wirklich gaaanz einfach oder ? Ein Programm besteht meistens aus verschiedenen Klassen, die eine Anzahl von Objekten schaffen, welche wiederum in einer Beziehung zu einander stehen. Im ersten Moment liest sich das kompliziert, wird aber mit einem weiteren Beispiel deutlicher:


Mit dem Schlüsselwort extends erweitern wir unsere gaaaanz einfache Klasse. Die Erweiterung definiert dabei eine neue Variable.

Aus der Sicht von GanzEinfach ist IchHabeEltern ein Kind. Aus Sicht von IchHabeEltern ist GanzEinfach die Eltern. In OOP kehren die Begriffe Eltern und Kinder immer wieder. Sie sind immer aus dem Kontext heraus zu verstehen. D.h. das Objekt / Klasse die ich gerade bearbeite kann Eltern oder Kinder haben.
Zurück aber zu unserem Beispiel. In Dart hat jede Klasse einen Konstruktor. Entweder geben wir ihn explizit an, oder falls nicht, generiert Dart einen.

Konstruktor ? Sind wir jetzt in der Baubranche ?


Wenn wir die Klasse GanzEinfach anschauen, ist klar, das der ganze Aufwand um nur eine Variable zu deklarieren, wohl total übertrieben ist. Der Konstruktor gibt unserer Klasse  mehr Funktionalität. Bei der Erzeugung eines Objekts können wir Informationen mitgeben, die in das neue Objekt eingebunden werden. Ein Konstruktor ist Teil der Klasse, hat den gleichen Namen wie die Klasse und kann als Funktion betrachtet werden. Im Unterschied zu einer gewöhnlichen Funktion, gibt der Konstruktor aber keine Werte zurück. Er hat also kein Return Statement. Hier ein Beispiel:


Im übrigen wird im Beispiel von Zahl gesprochen, aber es werden Strings benutzt. Das ist ein gutes Beispiel dafür, wie wichtig gute und passende Variablen Namen sind.
Im nächsten Teil geht es weiter mit Klassen....demnächst!

Kommentare

Beliebte Posts aus diesem Blog

Flutter -- ohne Dart geht es nicht 2 -- einfache Variablen Typen

Dart Final Const

Material Design in Flutter Teil 2