Tkinter objektorientiert?

1 Antwort

(...) und daher irgendwie die schlechte Angewohnheit, alles objektorientiert zu programmieren. (...)

Wenn es die Komplexität des Anwendungfalls hergibt, spricht nichts gegen die Anwendung des objektorientierten Konzepts.

(...) Funktionen einer Klasse, die bei bestimmten Aktionen durch andere Klassen aufgerufen werden, sind als @staticmethod definiert. (...)

Das wäre ein Bruch des objektorientierten Konzepts. Es sollen doch nicht durchgehend Klassen über globale Aufrufe miteinander kommunizieren (und dabei vielleicht auch noch Zustände ändern), sondern Objekte.

Wenn du dein Programm also in Klassen aufteilst, dann lege Instanzen dieser Klassen an. Wenn es einer Kommunikation bedarf, gib eine Objektreferenz via Parameterübergabe an den Kommunikationspartner weiter (entweder erst bei Aufruf oder schon früher, z.B. via Konstruktor). Statische Funktionen sollten in dem Konstrukt die Ausnahme sein.

Auf diesem Weg wird der Programmverlauf nachvollziehbarer, so etwas wie Polymorphie kann stärker ausgespielt werden und du schränkst die Stakeholder ein, die Einfluss auf ein Objekt nehmen können.

Konkret würde ich dir empfehlen, dir das MVC Pattern anzuschauen. Dessen Idee ist es, die einzelnen Anwendungsschichten (grafische Oberfläche und Anwendungslogik) möglichst voneinander zu trennen. Dieser Artikel zeigt ein praktisches Beispiel.

LF1885 
Fragesteller
 09.03.2024, 18:26

Mir ist erst jetzt aufgefallen, dass man ein Objekt zuerst in einer Variable speichern muss bevor man seine Methoden aufrufen kann.... Jetzt macht es Sinn, damit wären Funktionen mit Staticethod sowieso unnötig.... Hätte mich genauer mit OOP beschäftigen müssen....

0
LF1885 
Fragesteller
 17.03.2024, 22:22

Hab es jetzt komplett nach dem MVC Modell umgeschrieben... Jetzt gibt es keine globalen Funktionen oder Variablen mehr, alles ist in Klassen definiert

0