Klassen - Ich verstehe es nicht

Hallo Forum Besucher, Wer hat eine Quelle um die Verwendung von Klassen in Xojo zu lernen?

Wer hat einfache Beispiele?
Wann machen Klassen Sinn?
Was ist Vererbung?
Wann benutze ich das Klassen Prinzip in Xojo?

Theorie habe ich zwar gelesen, aber das ist mir zu Abstrakt. Gibt es ein Xojo Cheat Sheet für das Klassen Thema.

Wie spreche ich Klassen an?
Wo brauche ich das Konzept?

Hillllllffffeeeeee…

Danke für eure Ideen.

Viele Grüße

Heiko

Es gibt ein fantastisches Buch zu dem Thema “Head First Design Patterns”. Das Buch ist älter. Aber es geht um Prinzipien und die altern nicht. Es gibt dafür auch eine deutsche Übersetzung. Vor langer Zeit habe ich den Code in Xojo übersetzt:

Head First Design Patterns

2 Likes

Was machst Du nun mit den Klassen?

Der Code wächst normalerweise. Was mal elegant und kurz war, ist nun ein Wust von Methoden. Die Klassen schaffen Ordnung.

  • Im Fenster sollte nur die einfache Verwaltung sein. Alle andere gehört ins Backend (Model-View-Controller Pattern).
  • Das Fenster an sich sollte aus Containern bestehen, die miteinander kommunizieren. Die Controls sollten private sein. Das verhindert z.B. den direkten Aufruf.
  • Standard-Pattern 1: observer. Wenn mein Programm registriert wird, dann müssen verschiedene Fenster darüber Bescheid wissen. Die Fenster melden sich an und fertig.
  • Standard-Pattern 2: factory. Statt vielen ifs bekommt jede Bedingung eine eigene Klasse.
2 Likes

Hallo liebe Beatrix, danke für deine Antwort. Ich bin entzückt. Weil ich deine Software im Einsatz habe und du dir die Zeit nimmst mir hier zu antworten. Ich werde mir deine Tipps mal ansehen und bedanke mich dafür. Viele Grüße Heiko

2 Likes

Je nachdem, wo man sich im Projekt befindet, kann man Klassen grundsätzlich erstmal aus zwei verschiedenen Perspektiven betrachten.

Zum einen ist eine Klasse eine Art “Blaupause” für eine beliebige Anzahl konkreter Objekte gleichen Typs. Angenommen zu brauchst einen Bruch, kannst du eine Klasse “Bruch” anlegen, die als Attribute einen Zähler und einen Nenner hat. Damit kannst du dann beliebig viele konkrete Brüche anlegen (etwa indem du ihnen beim Initalisieren via Konstruktor konkrete Werte für Zähler und Nenner übergibst o.Ä.).

Zum anderen kann man eine Klasse einfach als (komplexen) Datentyp behandeln. Im Code “Var b As Bruch = New Bruch(2, 3)” beispielsweise hat b dann den Datentyp Bruch, so wie man Integer- oder String-Variablen hat etc. Mit Getter- und Setter-Methoden etwa kann man dann die einzelnen Werte eines Bruchs auslesen oder überschreiben.

Die Entwurfsmuster, von denen Beatrix spricht (und mit denen man wundervolle Sachen machen kann), sind dann komplexere Anwendungsfälle dieser grundlegenden Prinzipien.

Mir hat einmal ein IT-Fortbilder gesagt, dass “alte Hasen”, die mit prozeduraler Programmierung sozialisiert wurden, oft größere Schwierigkeiten hätten, sich in objektorientierte Programmierung (also mit Klassen und Objekten) einzudenken, als Anfänger, die ihre ersten Schritte machen.
Nun weiß ich nicht, zu welcher Kategorie du eher gehörst, aber in jedem Fall würde ich mich dem Thema Objektorientierung möglichst voraussetzungslos (mit entsprechenden Tutorials oder Büchern) nähern.

Ich bin übrigens selbst nur Hobbyprogrammierer, also bitte meine 2 Cent hier nicht zu hoch hängen! :wink:

Aus meiner Evangelistenzeit existiert noch der Anfang des Xojo-Nichthandbuchs. Ich habe von einigen Leuten gehört, dass es ihnen geholfen hat, einige Grundlagen zu verstehen. Ist natürlich nicht auf API 2-Stand, aber die Basics haben sich ja nicht verändert.

2 Likes

Hallo Jens, alter Hase (c64 war meine Jugend). Danke für deine Ausführungen. Ich bin Hobby Programmierer. Es reizt mich immer tiefer einzutauchen.

Hallo Ulrich, Danke für deine Rückmeldung. Dein Werk Nicht-Buch habe ich. Das muss ich noch durchackern. Ich bin Fan von der I wish…Reihe, da diese sehr logisch konsequent auf einander aufbauen und schnell zum Punkt kommen. Schade Ulrich, das du keine Videos mehr produziert hast. Als Xojo Evangelist. Ich komme von Livecode und bin zu Xojo gewechselt. Die Leute sind hier echt auf Zack. Macht Spaß…

So eine Klasse oder Object wie auch immer man das nennt ist mehr so eine Variable aber
mit Funktionalität und Datenspeicher.
Das tolle ist man kann viele solcher Objekte haben mit unterschiedlichen Daten.
Bei einem Modul werden die Methoden/Funktionen ja nur kurz durch laufen.
Bei einer Klasse hat man meistens noch Zusatz Infos wo man sich bedienen kann
das man nicht jeder Methode immer allen Input als Parameter übergeben muss.
Mit Klassen kann man sehr komplizierte Aufgaben lösen in dem man kleine Aufgaben (Methoden)
kombiniert.
Vererbung ist son vermischen von Klassen. Du hast z.B. ein Object was aber aus vielen Klassen besteht. Kannst Du gut in der Xojo Dokumentation sehen bei den User Interface Komponenten.
Gut für wiederverwendbare Sachen. Das verhindert quasi copy/paste.
Objekte werden mit “New” erzeugt wie
Var a As New MyClass
Methoden aufrufen mit
a.MeineMethode(parameter)
und üblicherweise damit das objekt nicht nur in der Methode existiert speichers Du das in Propertys vom typ MyClass
z.B. im Fenster in Open einmal das Objekt erstellen
MyClass1 = New MyClass
ohne dieses New ist MyClass1 = Null also es existiert nicht.
Das Objekte in Propertys mal automatisch (optional) initialisiert werden habe ich mal angefragt wurde aber aus desinteresse an Features ignoriert.
Das beste an Klassen finde ich diese Kapselung.