Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
in der schule haben wir gerade ein projekt, welches in java geschrieben wird. im grossen und ganzen gibt es da businessobjects (user, fahrzeuge,...) und manager (klassen, welche die programmlogik übernehmen und mit den businessobjects hantieren). nun die frage: macht es sinn diese managerklassen statisch zu machen? sie werden eigentlich im gesamten programm jeweils nur einmal gebraucht.
von mir aus gesehen gibt es eigentlich keinen sinn diese klassen zu instanzieren, nur: ich hab keine java-erfahrung :roll:! deshalb: was sagen die cracks? dass die businessobjects instanziert werden müssen, ist mir klar..
Ich bin der Meinung, dass statische Klassen nur ganz selten Sinn machen.
Ein paar nette Beispiele:
Icons von der Festplatte lesen: es sind immer dieselben, statische Klasse.
Tastatur beschreiben... Man kann auch mehrere Tastaturen an einen PC anschliessen, oder eine Tastatur auswechseln... nicht statisch!
Managerklasse: kannst du beweisen, dass es wirklich nur eine Managerobjekt gibt? Falls ja, ok, dann statisch. Falls nur die leisesten Zweifel bestehen (ein "es könnte ja sein..." reicht schon), dann nicht statisch.
@Bleiglanz
ja, alle methoden, alle variablen bzw. die klasse wird nie instanziert.
@Beni
es gibt zum beispiel einen object-manager, in welchen sonst wahrscheinlich sogar ein singleton implementiert werden müsste. ich denke, bei dem wäre es eindeutig. aber die klasse, welche die db-verbindung organisiert? sie ist eigentlich auch nur einmal nötig.. oder macht es sinn, mehrere DB-Verbindungen öffnen zu können, bzw offen zu halten?
mitunter deswegen frage ich. aber objekte erzeugen, nur um der objektorientierung willen macht doch keinen sinn..?! oder doch? ist irgendwo eine glaubensfrage; aber ich denke, der code wird übersichtlicher und handlicher wenn man nur dort objekte erzeugt, wo sie auch sinn machen.
und wegen der DB, wieso macht das sinn, mehrere verbindungen aufrecht zu erhalten innerhalb einer applikation?
Es kann doch mal passieren, dass du ein Programm schreibt, welches zwei verschiedene Datenbanken abfragen muss, z.B. eine auf dem lokalen Rechner und eine andere auf dem Firmen Server.
ist mir schon klar. aber ich will nicht unbedingt objektorientiert programmieren, sondern die jeweils vernünftigste und angebrachteste technik verwenden.
Es kann doch mal passieren, dass du ein Programm schreibt, welches zwei verschiedene Datenbanken abfragen muss, z.B. eine auf dem lokalen Rechner und eine andere auf dem Firmen Server.
Glaubensfrage, da stimme ich zu.
Da ich aber trotzdem ein bisschen missionieren will 8): Mit dem OO-Ansatz bringst du (viel) mehr Flexibilität in dein Programm. Wenn sich die Spezifikationen plötzlich ändern (der Kunde weiss per Definition nicht, was er überhaupt will... Sozusagen das Grundmotto für jedes Programm :bae: ), wirst du mit OO weniger Probleme haben das Progi gegebenenfalls umzuschreiben.
Oder anders: mit OO, sobald man damit Übung hat, kann man wie mit Legos spielen: mal dies mal das zusammenstecken und gucken, was passiert (Modulartiger Aufbau).
Ohne OO hingegen ist es eher wie in einem Sandkasten: nur ja nichts berühren, sonst stürzt die Burg zusammen (Jedes Methoden-Sandkorn hat seinen ganz bestimmten Platz, und andere Körner liegen darauf).
Und ein Gemisch, Sand + Lego... den armen Plastikbausteinchen tut das gar nicht gut.
also gut. auch wenn die metapher sand und lego (insbesondere das mischen) etwas weithergeholt ist, schallt der tenor offenbar doch aus einer richtung, und das war ja, was ich hören wollte. deshalb habt ihr mich bekehrt und fortan will ich alles instanzieren was ich schreibe. :wink:
nochwas: was macht man eigentlich am anfang des programms am besten (in der main funktion). erzeugt man da einen haufen statische objekte oder ein statisches objekt mit den instanzen als objektvariablen? (hoffe ist klar, was ich meine)
nochwas: was macht man eigentlich am anfang des programms am besten (in der main funktion). erzeugt man da einen haufen statische objekte oder ein statisches objekt mit den instanzen als objektvariablen? (hoffe ist klar, was ich meine)
ne ist es nicht. :roll: wozu willst du statische objekte instanzieren? die main ist statisch (logischerweise), was du darin wie instanzierst, hängt ganz vom implementierten programm ab. meistens ist es wohl das objekt wo die gui elemente initialisiert werden (falls grafische benutzeroberfläche vorhanden ist).
ok, beim start werden oben erwähnte managerobjekte erzeugt und initialisiert. die frage ist nun: sollen diese objekte statisch in der main-klasse (die klasse, welche die main-methode enthält, heisst in meinem projekt 'head') deklariert sein, oder soll ich die main (bzw. head)-klasse selbst instanzieren und die managerobjekte dann als instanzvariablen der main-(head)klasse anlegen. oder gibts da ganz andere ansätze? ein GUI gibts nicht. ist eine reine konsolenanwendung.
ok, beim start werden oben erwähnte managerobjekte erzeugt und initialisiert. die frage ist nun: sollen diese objekte statisch in der main-klasse (die klasse, welche die main-methode enthält, heisst in meinem projekt 'head') deklariert sein, oder soll ich die main (bzw. head)-klasse selbst instanzieren und die managerobjekte dann als instanzvariablen der main-(head)klasse anlegen. oder gibts da ganz andere ansätze? ein GUI gibts nicht. ist eine reine konsolenanwendung.