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.
ich habe vor einiger Zeit begonnen mich intensiv mit der Java-Programmierung zu befassen. Mittlerweile habe ich etliche Bücher durch und wollte endlich mein erstes richtiges Projekt beginnen (nicht nur Übungsaufgaben).
Jedoch stellen sich mir nun Praxis-Fragen, die in sämtlichen Büchern nicht behandelt wurden. Ich hoffe Ihr könnt mir hier weiterhelfen, da es mir wahrscheinlich einfach an Erfahrung fehlt.
1. Es gibt ja Namenskonventionen für Packages. Diese sind mir auch bekannt. Nur frage ich mich, welche Packages erstellt man "standardmäßig"? Klar hängt es von dem jeweiligen Programm ab aber es muss doch trotzdem eine Art "Standard" geben. Habe mir schon einige Programme aus dem "Codeschnippsel-Thread" angeschaut aber irgendwie macht es jeder anders... core, main, gui, ui, dao, data, ...
2. Wenn ich eine Anwendung mit grafischer Oberfläche erstellen möchte, was ist dann die Startklasse/Hauptklasse? Macht man das so:
Java:
public class Hauptfenster extends javax.swing.JFrame {
public static void main(String args[]) { ....
oder so:
Java:
public class Programm {
public static void main(String[] args) {
Hauptfenster.main(args); ....
abhängig vom Programmumfang bzw. Klassen die in einem Paket landen würden überlege ich mir auch, ob es einzelne module sein können, die ich nach belieben auswechseln können möchte.
Frage 2: persönlich bevorzuge ich die alternative "oder so" da ich noch weiter Programmteile laden kann z. B. DB-Connection.
Zu ersten Frage. Da gibt es auch keine richtige regel. Es kommst wie du es schon gesagt hast, darauf an was du machst. Sinnvoll würde ich aber main oder core zum Beispiel finden, da man dort sofort sieht, wo die main-Methode zum Beispiel vorhanden ist oder was das ganze Programm grundlegend ausmacht.
Zu der zweiten Frage. Ich benutze persönlich die erste Methode. Da ich das ganze dann einfach nur doppelt gemobblet finde und wenn du dich dann in den späteren Jahren mal mit z.B. DB-Connection beschäftigst kannst du immer noch diese andere Methode angucken.
Zu 1.: Ich dachte halt, dass es einen Satz an Paketen gibt (z. B. die oben genannten) aus welchem man sich je nachdem, welche Komponenten ein Programm hat, die passenden heraussucht. Also wenn ich z. B. eine reine Konsolenanwendung habe, brauche ich natürlich kein package "gui". Wenn ich hingegen eine Webanwendung erstellen möchte, sollten z. B. packages "client", "server" oder so genutzt werden?! "core" bzw. "main" sind wohl immer sinnvoll.
Zu 2. Da gehen die Meinungen ja schon auseinander. Ich habe auch nur gelesen, dass es eben beide Möglichkeiten gibt aber nicht, welches die Vor-/Nachteile der einen oder anderen sind bzw. wann man welche Methode einsetzt. In der 2. Variante hätte ich ja in einer Anwendung mehrere main-Methoden. Ist das überhaupt "sauber"? Eine DB-Connection kann ich doch auch in der ersten Variante aufbauen. Wie sieht es aus, wenn ich Programmeinstellungen (Preferences-API) laden will. Eigent sich da eine der beiden Varianten besser für?
Zu 1.: Ich dachte halt, dass es einen Satz an Paketen gibt (z. B. die oben genannten) aus welchem man sich je nachdem, welche Komponenten ein Programm hat, die passenden heraussucht. Also wenn ich z. B. eine reine Konsolenanwendung habe, brauche ich natürlich kein package "gui". Wenn ich hingegen eine Webanwendung erstellen möchte, sollten z. B. packages "client", "server" oder so genutzt werden?! "core" bzw. "main" sind wohl immer sinnvoll.
Doch, das macht sinn. Allerdings nicht als "core" oder "server" Package, sondern immer auf dein Programm benannt (z.B. org.javaforum.main oder com.apache.commons).
Zu 2. Da gehen die Meinungen ja schon auseinander. Ich habe auch nur gelesen, dass es eben beide Möglichkeiten gibt aber nicht, welches die Vor-/Nachteile der einen oder anderen sind bzw. wann man welche Methode einsetzt. In der 2. Variante hätte ich ja in einer Anwendung mehrere main-Methoden. Ist das überhaupt "sauber"? Eine DB-Connection kann ich doch auch in der ersten Variante aufbauen. Wie sieht es aus, wenn ich Programmeinstellungen (Preferences-API) laden will. Eigent sich da eine der beiden Varianten besser für?
zur 1. Frage
Also ich habe mir jetzt ersteinmal 4 Pakete angelegt:
- core: für die eigentlichen Funktionen des Programms
- gui: für die ganze Oberflächendinge
- util: für die Hilfsklasse (meist static)
- data: für sämtliche Dateien (Bilder, Icons, etc.)
Daran sieht man jedenfalls, dass es durchaus einen völlig programmunabhängigen Standardsatz an Paketen geben kann. Dachte halt, so etwas haben sich schon andere vor mir ausgedacht...
zur 2. Frage
Ich habe mich jetzt auch für die 2. Variante entschieden. Ist doch irgendwie objektorientierter, da man ja noch viele andere Dinge zum Programmstart erledigen muss (z. B. Voreinstellungen laden, DB-Connection herstellen, GUI aufbauen, etc.). Das wird besser zentral gesteuert und nicht in der Klasse, die die GUI aufbaut.