OOP - Hab ichs richtig verstanden?^^
Verfasst: Samstag 15. September 2012, 02:14
Hi @ all,
als jemand, der über 10 Jahre lang ausschließlich prozedural programmiert hat, brauche ich ehrlichgesagt jetzt etwas Bestätigung, ob meine Interpretation von OOP einigermaßen alltagstauglich ist. Die Grundzüge zur OOP-Programmierung habe ich mir von dieser Tutorialreihe abgeschaut (dort geht es zwar um C++ , aber im Kontext von OOP sollte das eigentlich großteils egal sein, würde ich meinen^^)...
Basierend auf das Tutorial habe ich ein relativ kleines Beispiel geschrieben: Ich wollte eine Art (sehr kleines) GUI-Framework bauen - und ich wollte einfach mal so dreist fragen, ob man diesen Code als OOP-tauglich bzw. generell brauchbar bezeichnen kann^^. Mir gehts dabei wirklich nur um OOP ansich und wollte sicherheitshalber einfach im Forum nachfragen, bevor ich mit einer eventuell falschen Herangehensweise weiterprogrammieren würde^^. (Aktuell hat das Programm noch keinen wirklichen Sinn, es dient nur dazu, mir selbst OOP beizubringen...)
Quellcodes (hab ich in Python 2.7 und 3.2 erfolgreich getestet):
Direktdownload als ZIP
pastebin main.py
pastebin imenu.py
pastebin icreate.py
pastebin menu_label.py
---
Kurze Erklärung zum Quellcode, wie ich mir das vorgestellt hätte: Alle möglichen GUI-Elemente (z.B. ein Textlabel), die man darstellen kann, werden in der "main" erstmal in "imenu" registriert. "imenu" kümmert sich darum, GUI-Elemente zu erstellen (Methode "Create"), und Methoden u. Attribute für alle GUI-Elemente zu setzen (Methoden "show" und "hide_all"). Wenn mittels "imenu" ein neues GUI-Element erstellt wird, gibts als Rückgabewert eine Instanz von "icreate", dass die Optionen des jew. GUI-Elements verwaltet und deren Methoden aufruft. Ein Beispiel-GUI-Element wär "menu_label"...
Wie ich mir das mit den GUI-Elementen gedacht habe: Beim Programmieren kann man so problemlos neue hinzufügen (z.B. eine "button.py", welche Buttons zeichnet), die man lediglich in der imenu.py registrieren muss (was in der main.py geschieht). Die GUI-Elemente selbst haben einerseits einen eindeutigen Bezeichner (sinnigerweise den Variablennamen "NAME"), mit dem man auf sie zugreifen kann und definierte Funktionen (im Beispiel hier "show", aber man kann z.B. später problemlos sowas wie "mouseover" o.Ä. hinzufügen). Den Zugriff auf die GUI-Elemente selbst findet ausschließlich über "icreate" statt, sodass ich bei zusätzlichen Methoden der GUI-Elemente nur diese Klasse erweitern muss.
Tjoar, wie gesagt: Ich würde gerne wissen, ob das eine für Python-Verhältnisse einigermaßen brauchbare Form von OOP ist, oder ob ich da irgendwo viel zu kompliziert gedacht hatte^^. Schonmal im Voraus Danke fürs Überfliegen meines Quelltextgewurschtels^^...
als jemand, der über 10 Jahre lang ausschließlich prozedural programmiert hat, brauche ich ehrlichgesagt jetzt etwas Bestätigung, ob meine Interpretation von OOP einigermaßen alltagstauglich ist. Die Grundzüge zur OOP-Programmierung habe ich mir von dieser Tutorialreihe abgeschaut (dort geht es zwar um C++ , aber im Kontext von OOP sollte das eigentlich großteils egal sein, würde ich meinen^^)...
Basierend auf das Tutorial habe ich ein relativ kleines Beispiel geschrieben: Ich wollte eine Art (sehr kleines) GUI-Framework bauen - und ich wollte einfach mal so dreist fragen, ob man diesen Code als OOP-tauglich bzw. generell brauchbar bezeichnen kann^^. Mir gehts dabei wirklich nur um OOP ansich und wollte sicherheitshalber einfach im Forum nachfragen, bevor ich mit einer eventuell falschen Herangehensweise weiterprogrammieren würde^^. (Aktuell hat das Programm noch keinen wirklichen Sinn, es dient nur dazu, mir selbst OOP beizubringen...)
Quellcodes (hab ich in Python 2.7 und 3.2 erfolgreich getestet):
Direktdownload als ZIP
pastebin main.py
pastebin imenu.py
pastebin icreate.py
pastebin menu_label.py
---
Kurze Erklärung zum Quellcode, wie ich mir das vorgestellt hätte: Alle möglichen GUI-Elemente (z.B. ein Textlabel), die man darstellen kann, werden in der "main" erstmal in "imenu" registriert. "imenu" kümmert sich darum, GUI-Elemente zu erstellen (Methode "Create"), und Methoden u. Attribute für alle GUI-Elemente zu setzen (Methoden "show" und "hide_all"). Wenn mittels "imenu" ein neues GUI-Element erstellt wird, gibts als Rückgabewert eine Instanz von "icreate", dass die Optionen des jew. GUI-Elements verwaltet und deren Methoden aufruft. Ein Beispiel-GUI-Element wär "menu_label"...
Wie ich mir das mit den GUI-Elementen gedacht habe: Beim Programmieren kann man so problemlos neue hinzufügen (z.B. eine "button.py", welche Buttons zeichnet), die man lediglich in der imenu.py registrieren muss (was in der main.py geschieht). Die GUI-Elemente selbst haben einerseits einen eindeutigen Bezeichner (sinnigerweise den Variablennamen "NAME"), mit dem man auf sie zugreifen kann und definierte Funktionen (im Beispiel hier "show", aber man kann z.B. später problemlos sowas wie "mouseover" o.Ä. hinzufügen). Den Zugriff auf die GUI-Elemente selbst findet ausschließlich über "icreate" statt, sodass ich bei zusätzlichen Methoden der GUI-Elemente nur diese Klasse erweitern muss.
Tjoar, wie gesagt: Ich würde gerne wissen, ob das eine für Python-Verhältnisse einigermaßen brauchbare Form von OOP ist, oder ob ich da irgendwo viel zu kompliziert gedacht hatte^^. Schonmal im Voraus Danke fürs Überfliegen meines Quelltextgewurschtels^^...