OOP Kleines Schülerverwaltungsprogramm

jensWolf

Neues Mitglied
Hey bin neu in der Java-OOP-Programmierung,

um mich ein wenig zu verbessern, habe ich mir folgendes Szenario überlegt, um zu üben:

- Es gibt einen Schüler mit Namen und Alter
- Jeder Schüler gehört zu einer Schulklasse. Diese hat einen Namen und verwaltet die Schüler. Dabei muss jede Klasse einzigartig sein.
- Des Weiteren gibt es mehrere Jahrgangsstufe. Diese besteht aus einem Integer.
- Insgesamt gibt es dann noch die Schule, die unteranderem die Anzahl der Schüler beinhaltet

So als Software Design habe ich mir überlegt:
  • Klasse Schule
    • HasListe mit den Jahrgängen
  • Klasse Jahrgang
    • Integer für die Jahrgangsnummer
    • Hashliste mit den Klassen
  • Klasse Schulklasse
    • ArrayListe mit Schülern
    • Namen für die Klasse
  • Klasse Schüler
    • Name des Schülers
    • Alter des Schülers
Das wäre so mein grobes Design. Ist das ok so oder gibt es vielleicht Verbesserungsvorschläge? Die Hashliste habe ich genommen, damit die Elemente Klasse und Jahrgänge einzigartig sind oder gibt es hier eine bessere Möglichkeit?

Des Weiteren habe ich folgende Frage: Ich würde gerne die Anzahl der Schule ermitteln. Ist es hier geschickt diese über die Elemente Liste Jahrgang dann Liste der Klassen und dann über die Listengröße der Schüler zu ermitteln oder für jedes Objekt zusätzlich die größe der Gruppe zu speichern?

Wie gehe ich jetzt am besten vor wenn ich einen neuen Schüler erstellen möchte? Verwalte ich diese Erstellung am besten in der Klasse Schule?
 
Zuletzt bearbeitet:

Java20134

Bekanntes Mitglied
Also ich finde den Aufbau gut. Ich weiß nicht ob du unter einer HashList eine HashMap verstehst, aber ich würde eine HashMap nehmen, da du dort die Einzigartigkeit und zudem auch noch der Zugriff auf die Elemente über den Jahrgang bspw gegeben ist.

Und das Hinzufügen eines Schülers würde ich allgemein in der Klasse Schule machen, aber zudem auch Methoden in den Jahrgangsstufen und Klasse hinzufügen! In der Schule müsste dann die Methode wie folgt aussehen:
Java:
public void addStudent(int year, int clazz){
     //TODO zum Jahrgang und Klasse hinzufügen u.a.
}

Überlegenswert wäre es vllt. noch, ob du in der Klasse Schulklasse statt der ArrayList eine HashMap nehmen könntest. Dabei könnte man als key den Namen und Vornamen des Schülers nehmen. Dadurch wäre der Zugriff auf die Daten etwas schneller, als wenn du dann nach jedem Schüler suchen müsstest.

Ob du dann die HashMap nimmst oder ein HashSet ist Dir überlassen, je nachdem wie es Dir besser gefällt. Und dann kann man sich auch noch überlegen, ob man alle Variablen braucht, wenn man eine HashMap nutzt.
 
Zuletzt bearbeitet:

Jardcore

Top Contributor
Schule könnte noch ein Sekretariat haben und dafür sorgen das Schüler eingeschult werden :p
Schule könnte dann eine einschul()-Methode haben, welche das Sekretariat beauftragt einen Schüler in die Schule aufzunehmen. Das Sekretariat möchte dann nur ein Einschulformular, welches den Vor- und Nachnamen des Schülers, den Jahrgang und natürlich die Klasse enthält. Das Einschulformular wäre eine neue Klasse, die einfach Daten beinhaltet, damit du nicht Methoden mit n Parametern hast.

Wenn du die Anzahl der Schulen haben willst, könntest du eine statische Variable in Schule anlegen und diese im Konstruktor hochzählen. Und mit einer statischen Methode (getAnzahl()) kannst du die Anzahl abfragen.
 

Tobse

Top Contributor
Wenn du die Anzahl der Schulen haben willst
Ich dachte, der TE will die Anzahl der Schüler bei der Schule?
@TE: Anmerkung hierzu: nimm blos keine Variable int anazahlSchüler in die Schule auf o.ä. Diese Variable auf dem richtigen Wert zu halten ist ein mega aufwand und total unnötig. Lieber einfach sowas:

Java:
public int getAnzahlSchueler() {
    int n = 0;
    for (Klasse klasse : klassen) {
        n += klasse.getSchueler().size();
    }
    return n;
}
 

Jardcore

Top Contributor
Ich würde gerne die Anzahl der Schule ermitteln.
Ich mach nur das was dort steht :p

TE: Anmerkung hierzu: nimm blos keine Variable int anazahlSchüler in die Schule auf o.ä. Diese Variable auf dem richtigen Wert zu halten ist ein mega aufwand und total unnötig. Lieber einfach sowas:
Btw. man kann das aber auch hier durch eine statische Variable lösen und jedes Mal wenn ein Schüler zu einer Schule hinzugefügt wird diese erhöhen. Dann muss man nicht ständig iterieren.

Und mega Aufwand? Du hast eine Schüler hinzufüge Methode und eine Schüler entferne Methode... anzahlSchüler++... anzahlSchüler--. Das ist nicht gerade aufwendig finde ich^^... und O(1)

Meinetwegen kann man auch eine normale Variable mit einem Getter anlegen.
 
Zuletzt bearbeitet:

Tobse

Top Contributor
Ich mach nur das was dort steht :p
Stimmt, hatte ich überlesen, sorry :D

Und mega Aufwand? Du hast eine Schüler hinzufüge Methode und eine Schüler entferne Methode... anzahlSchüler++... anzahlSchüler--. Das ist nicht gerade aufwendig finde ich^^... und O(1)
Ja, kann man, ist letztendlich Geschmackssache. Aber: jetzt kommt jemand und macht sowas: klasse.getSchueler().add(new Schueler("Hans", "Peter")); Um das zu verhindern muss man jetzt die nach außen gegebene Liste schützen. Selbiges gilt für schule.getKlassen().add(new Klasse("4b")).
Die Lösung hierfür, welche ich nutze, ist, Zugriff aut Iterator<Schueler> und Iterator<Klasse> zu geben und die Listenobjekte nicht nach außen zu geben. Für so ein Übungsprojekt ist dann IMO die berechnende Methode der deutlich kleinere Schmerz... (und sie ist auch unmöglich auszutricksen).
 

Jardcore

Top Contributor
Sowas soll man nicht machen ^^ Listen sollten generell in den meisten Fällen nicht nach außen sichtbar sein. ("generell" und "in den meisten Fällen" in einem Satz klingt nicht sehr glaubwürdig... ich weiß :p)
 

JAVAKEK

Mitglied
Ich mach nur das was dort steht :p
Btw. man kann das aber auch hier durch eine statische Variable lösen und jedes Mal wenn ein Schüler zu einer Schule hinzugefügt wird diese erhöhen. Dann muss man nicht ständig iterieren.

Und mega Aufwand? Du hast eine Schüler hinzufüge Methode und eine Schüler entferne Methode... anzahlSchüler++... anzahlSchüler--. Das ist nicht gerade aufwendig finde ich^^... und O(1)

Meinetwegen kann man auch eine normale Variable mit einem Getter anlegen.

Falls eine HashMap oder ArrayList Implementierung genutzt wird, macht sie schon genau das was du hier beschreibst, nämlich eine interne Zähler-Variable verwalten. -> List.size() = O(1)

Sowas soll man nicht machen ^^ Listen sollten generell in den meisten Fällen nicht nach außen sichtbar sein. ("generell" und "in den meisten Fällen" in einem Satz klingt nicht sehr glaubwürdig... ich weiß :p)

Es gibt 3 Möglichkeiten:
- Zugriff auf die Liste von aussen und lass die Liste alles handlen
- Zugriff auf eine nicht modifizierbare Liste
- Zugriff auf Methoden, die die Liste intern modifizieren
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
T erstes kleines Programm Java Basics - Anfänger-Themen 17
S Kleines Quiz Programm Java Basics - Anfänger-Themen 4
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
J Mal wieder ein kleines Toleranzproblem Java Basics - Anfänger-Themen 20
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
R Kleines Programm, benötige Hilfe! Java Basics - Anfänger-Themen 6
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
R Login mit Datenbankabfrage: Kleines Problem! Java Basics - Anfänger-Themen 6
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
X Kleines JMenuBar Problem Java Basics - Anfänger-Themen 8
D Kleines Abfrageproblem Java Basics - Anfänger-Themen 3
K kleines Rekursionsproblem Java Basics - Anfänger-Themen 7
P RSA Verschlüsselung kleines Problem Java Basics - Anfänger-Themen 5
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
P Kleines Problemm mit einer NullPointerException Java Basics - Anfänger-Themen 2
R kleines Kunstprogramm "mkbox" perfektionieren Java Basics - Anfänger-Themen 13
P wahrscheinlich ein kleines Problem Java Basics - Anfänger-Themen 7
P Kleines Projekt -> Große Überlegungen Java Basics - Anfänger-Themen 2
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
K Kleines Spiel / Daten speichern Java Basics - Anfänger-Themen 8
T Kleines Spiel realisieren - wie? Java Basics - Anfänger-Themen 6
H Kleines Problem mit der Polymorphie Java Basics - Anfänger-Themen 2
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
K kleines Array-Problem Java Basics - Anfänger-Themen 6
C Kleines 2D Spiel. Problem. Java Basics - Anfänger-Themen 5
T Kleines Verständnissproblem mit Regex Java Basics - Anfänger-Themen 4
U Kleines Problem mit Konstruktor^^ Java Basics - Anfänger-Themen 7
S Kleines Kartenspiel mit Java Java Basics - Anfänger-Themen 2
D kleines Eclipse-Problem ! Java Basics - Anfänger-Themen 2
I Kleines Program, fehler? Java Basics - Anfänger-Themen 2
S kleines Würfelspiel Java Basics - Anfänger-Themen 10
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4
F kleines Programm für ungerade oder gerade Zahl. Java Basics - Anfänger-Themen 18
C kleines Menü erzeugen und anzeigen Java Basics - Anfänger-Themen 11
S Kleines TickTackTou Java Basics - Anfänger-Themen 10
O Kleines Problem mit Konstruktor mit Parametern aus generischer Klasse...oder so ;) Java Basics - Anfänger-Themen 2
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
J Java, kleines denkproblem. :) Java Basics - Anfänger-Themen 4
N Kleines Problemchen mit ButtonGroup Java Basics - Anfänger-Themen 2
W ein kleines Projekt! Aber wie beginnen Java Basics - Anfänger-Themen 4
S Kleines Problem... NaN, Infinity? Java Basics - Anfänger-Themen 9
B Drag and Drop fähige Trackliste..nurnoch ein kleines Problem Java Basics - Anfänger-Themen 16
G Kleines Problem mit File Java Basics - Anfänger-Themen 7
O Neuen Blackberry 8800 oder Curve gegen kleines Programm Java Basics - Anfänger-Themen 9
Z kleines projekt Java Basics - Anfänger-Themen 3
G ein kleines java prog - hat aber einen fehler-bitte um hilfe Java Basics - Anfänger-Themen 5
GambaJo Brauche Bewertung + Tipps für mein kleines Projekt Java Basics - Anfänger-Themen 4
N Nur ein kleines Installationsproblem . Java Basics - Anfänger-Themen 5
G Kleines Problem mit Nimmspiel Java Basics - Anfänger-Themen 8
U kleines problem bei ner aufgabe :( Java Basics - Anfänger-Themen 8
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
S Kleines Programm mit ArrayList Java Basics - Anfänger-Themen 7
M Kleines Programm Java Basics - Anfänger-Themen 5
M DBCP - Kleines Beispiel Java Basics - Anfänger-Themen 3
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
G Kleines Problem Java Basics - Anfänger-Themen 3
D kleines script abhaengig von Ordner Bilder kopieren Java Basics - Anfänger-Themen 11
G Kleines Grundsatzproblem Java Basics - Anfänger-Themen 5
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
S Hab ein kleines Problem :) Java Basics - Anfänger-Themen 4
K kleines bild ausgeben Java Basics - Anfänger-Themen 4
D noch ein kleines Problem Java Basics - Anfänger-Themen 4
M kleines generics problem Java Basics - Anfänger-Themen 15
B Kleines? Jedenfalls Problem mit Borland-Together! Java Basics - Anfänger-Themen 4
M kleines Java Programm (Verwaltung) Java Basics - Anfänger-Themen 16
K Kleines Programm zur Stapelverarbeitung schreiben, aber wie? Java Basics - Anfänger-Themen 7
D Kleines Problem mit JDBC Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben