OOP Konform?
-
Hi,
ich habe mal eine Frage zur OOP:Mein Standardprogramm hat meistens einen ApplicationController, der wie die Spinne im Netz sitzt und alles kontrolliert. Mir hat allerdings mal jemand gesagt das das wohl nicht so richtig OOP wäre. Meine UML Diagramme sehen so auch ziemlich Sonnenförmig aus.
Bspw:
Ein Programm das Textdateien(Verzeichnisse) nach Stichwörtern durchsucht und das ganze in einer einer UI/GUI ausgibt.Hier habe ich Beispielhaft folgende Klassen:
Application Controller - ruft den Rest auf
Param - wertet die Übergabeparameter aus und speichert diese in einem Objekt (sich selbst)
Input - zuständig für das bestimmen und einlesen der Dateien
Search - durchsucht die Strings die von Input kommen
Result - Objekt in dem das Ergebnis gespeichert wird
GUI - Ausgabe
UI - AusgabeAblauf:
AppController
-> ruft param auf
-> ruft input auf
-> leitet input an search weiter
-> search speichert ergebnisse in result Objekten
-> leitet result von input an je nach param GUI/UI weiter(Falls die GUI aktiv ist ruft diese natürlich noch den AppController auf und startet den ganzen Vorgang)
Ist diese Art der Programmierung jetzt OOP konform bzw guter Stil oder nicht?
Konstruktive Kritik ist erwünscht!
Gruß
-
Mach so wie du es denkst. So lange funktioniertund halbwegs wartbar ist, hast du es richtig gemacht. Die Leute die dir einreden, dass es nicht wirklich OOP wäre, die plappern doch nur das nach was sie in Büchern augeshcnappt haben.
Du kannst dir sicher sein: diese Leute haben 0 Praxiserfahrung und deren gesamtes Wissen ist halbwissen. Es gibt nicht DIE Lösung, es gibt nur bessere und schlechtere.
-
Das wird irgendwann ein Alptraum, eine solche God-Klasse zu warten. Such mal nach dem Single-Response-Ansatz. Da geht es im wesentlichen darum, daß eine Klasse genau eine Verantwortung haben sollte und nicht alle :).
Irgendwann ist so etwas sehr schwer zu warten und warten darf man seinen Code leider öfter als man anfangs denkt.Gruß Kimmi
-
kimmi schrieb:
Das wird irgendwann ein Alptraum, eine solche God-Klasse zu warten. Such mal nach dem Single-Response-Ansatz. Da geht es im wesentlichen darum, daß eine Klasse genau eine Verantwortung haben sollte und nicht alle :).
Irgendwann ist so etwas sehr schwer zu warten und warten darf man seinen Code leider öfter als man anfangs denkt.Gruß Kimmi
naja also iwie müssen die schon miteinander kommunizieren... und eine god klasse find ich da schon nicht soo schlecht, kommt natürlich auf die religiöse einstellung an
-
Eine Möglichkeit wäre den "AppController" auf zu teilen in einem "SeachController", "CoffeeCoockingController" etc, dein "AppController" ist dann nur noch der Vermittler zwischen der UI und den Spezifizierten Controller.
User macht eingaben und Klickt
AppController <-> SearchController -> DoSomething
AppController <-> CoffeeCoockingController -> DoSomethingDer AppController bleibt dann schön übersichtlich da er nur weiter delegiert, und du hast Pro Aktion ein Object welche den Ablauf steuert.
Aus deinem
AppController
-> ruft param auf
-> ruft input auf
-> leitet input an search weiter
-> search speichert ergebnisse in result Objekten
-> leitet result von input an je nach param GUI/UI weiterWird dann
AppController
-> ruft SearchController auf
SearchController
-> ruft param auf
-> ruft input auf
-> leitet input an search weiter
-> search speichert ergebnisse in result Objekten
-> Gibt result Objekte an AppController zwecks Darstellung zurückDas ist nur eine Möglichkeit.