wann statische klassen?

Status
Nicht offen für weitere Antworten.

Mercutio

Mitglied
hi

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..
 
B

Beni

Gast
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.
 

Mercutio

Mitglied
@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?
 

Orillion

Mitglied
Mercutio hat gesagt.:
oder macht es sinn, mehrere DB-Verbindungen öffnen zu können, bzw offen zu halten?
Ich denke, dass das schon einen Sinn hat!

Generell finde ich, dass die Benutzung einer komplett statischen Klasse oft wenig mit Objektorientierung zu tun hat.
 

Mercutio

Mitglied
Orillion hat gesagt.:
Generell finde ich, dass die Benutzung einer komplett statischen Klasse oft wenig mit Objektorientierung zu tun hat.
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?
 

Orillion

Mitglied
Es ist wahrscheinlich wirklich eine Glaubensfrage.

Wenn du aber komplett objektorientiert programmieren willst, sind statische Klassen keine Lösung.

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.
 

Mercutio

Mitglied
Orillion hat gesagt.:
Wenn du aber komplett objektorientiert programmieren willst, sind statische Klassen aber keine Lösung.
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.
ist in diesem falle nicht so.
 
B

Beni

Gast
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.
 

Mercutio

Mitglied
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)
 

byte

Top Contributor
Mercutio hat gesagt.:
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).
 

Mercutio

Mitglied
byto hat gesagt.:
ne ist es nicht.....
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.
 

Bleiglanz

Gesperrter Benutzer
Mercutio hat gesagt.:
byto hat gesagt.:
ne ist es nicht.....
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.
ist doch völlig egal wenn sie nur einmal benötigt werden

würds aber trotzdem nicht static machen, hat den vorteil dass du im konstruktor dann noch dynamisch "Kontext" abhängige Variablen übergeben kannst

so nach dem Motto: ManagerA braucht Referenz auf ManagerB usw
 

KSG9|sebastian

Top Contributor
zum Thema Datenbank (eine oder mehrere Verbindungen=:

- Bei genau EINER Verbindung zu EINER Datenbank würde ich da lieber ein Singletonpattern einsetzen

- Bei genau EINER Verbindung PRO Datenbank würde ich ein FactoryPattern implementieren, die einzelnen Datenbankklassen als Singleton

- Bei MEHREREN Verbindungen zu EINER/zu MEHREREN Datenbanken : gibt keinen Sinn :)


Ich bin auch kein Freund von statischen Klassen und/oder Methoden. Die machen IMHO nur Sinn in Hilfsklassen (z.B. StringUtils, IOTools (*hihi*)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
W Wann Rückgabewerte 0, 1, -1? Java Basics - Anfänger-Themen 27
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
K Warum funktioniert das und wann erden die Objektmethoden nun ausgeführt? Java Basics - Anfänger-Themen 7
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Wann final verwenden? Java Basics - Anfänger-Themen 5
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
P Threads Wann läuft es parallel ab ? Java Basics - Anfänger-Themen 4
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
W Wann nutze ich "import"? Java Basics - Anfänger-Themen 12
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
H Wann ein Objekt der Programmklasse in main anlegen Java Basics - Anfänger-Themen 2
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
T Wann for und wann while?? Java Basics - Anfänger-Themen 35
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
C this - wann verwende ich das? Java Basics - Anfänger-Themen 10
T Threads - Ab wann wirds Kritisch?! Java Basics - Anfänger-Themen 7
M Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben? Java Basics - Anfänger-Themen 19
G field public/private wann Java Basics - Anfänger-Themen 11
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
N Wann und wie oft finalize Methode verwenden( überschreiben ) Java Basics - Anfänger-Themen 6
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
M wann, welche schleife Java Basics - Anfänger-Themen 3
M Ab wann ist die Datei sichtbar? Java Basics - Anfänger-Themen 3
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
G Überprüfen wann ein Dokument abläuft? Java Basics - Anfänger-Themen 3
N SAX, StAX, JDOM oder DOM , ab wann welches für XML Java Basics - Anfänger-Themen 14
M Wann ist ein Programm beendet? Java Basics - Anfänger-Themen 6
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
R Wann benutzt man << oder >> ? Java Basics - Anfänger-Themen 2
G Klassen: Wann initialisiere ich wo meine Variabeln Java Basics - Anfänger-Themen 6
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben