Hallo, ich hoffe ihr könnt mir helfen.
Wir sollen für eine Hausübung in der Uni quasi eine kleine Patientendatenbank entwerfern, in der jeder Fall eine Fallzahl zugewiesen bekommt. Soweit so gut, nun versuche ich schon dauernd, dass der 1. Fall die 1 bekommt, der 2. die 2 und so weiter. Die Fallzahl am Ende (also insgesamt) ist richtig, nur das mit dem mitzählen bekomme ich irgendwie nicht hin.
Meine Klasse Patient sieht folgendermaßen aus:
public class Patient {
private String vorname;
private String name;
private String aufnahme;
private String entlassung;
// Klassenvariablen
private static int fallzahl;
private static int fallzahlzaehler = 0;
public Patient (String vorname, String name, String aufnahme, String entlassung){
this.vorname = vorname;
this.name = name;
this.aufnahme = aufnahme;
this.entlassung = entlassung;
fallzahl = fallzahlzaehler;
fallzahlzaehler++;
}
public static int getFallzahl() {
return fallzahl;
}
public static int getFallzahlzaehler() {
return fallzahlzaehler;
}
public String getVorname() {
return vorname;
}
public String getName() {
return name;
}
public String getAufnahme() {
return aufnahme;
}
public String getEntlassung() {
return entlassung;
}
}
Soweit so gut, nun kommen wir also zu meiner Main-Methode, wo das ganze auch ausgegeben wird.
public class Application {
public static void main(String[] args) {
Patient p1 = new Patient("Müller", "Horst", "01.01.2014", "05.01.2014");
Patient p2 = new Patient("xy", "abc", "07.11.2014", "22.11.2014");
System.out.println("Erster Patient: "+p1.getVorname()+" "+p1.getName()+" "+p1.getAufnahme()+" "+p1.getEntlassung()+" "+Patient.getFallzahl());
System.out.println("Zweiter Patient: "+p2.getVorname()+" "+p2.getName()+" "+p2.getAufnahme()+" "+p2.getEntlassung()+" "+Patient.getFallzahl());
System.out.println("Fallzahl "+Patient.getFallzahlzaehler());
}
}
Die richtige komplette Fallzahl ist ja 2, sind ja 2 Fälle. Allerdings steht diese 2 nun auch hinter den beiden Fällen, und da ist mein Problem. Wie behebe ich das am besten?
fallzahl darf nicht statisch sein, muss pro Objekt einzeln gespeichert werden
eine statische Methode dafür bisher und Aufruf Patient.getFallzahl() ist zwar konsequent,
aber zeigt doch umso mehr, wie abwegig dann die Annahme getrennter Werte ist, warum sollte das ausgegeben werden?
es muss natürlich ein Aufruf auf p1 und p2 sein, wie die anderen
edit:
wie könnte das nicht weiterhelfen? oder mein Posting deutlicher?
für so ein kontrolliertes Konstrukt bietet sich dann auch nur eine Zeile fallzahl = fallzahlzaehler++;
an, wenn man einmal geprüft hat, ob richtig,
obwohl ich normalerweise eher die Variante getrennter Zeilen wegen der Eindeutigkeit lobe
Nagut, das war ein Trade-off. private static FallGen fallGen = new FallGen(); => das Programm braucht etwas länger zum Starten, private synchronized static FallGen newFallGen() { => jeder Aufruf der Methode braucht etwas länger. Neben dem auch nicht ganz richtig, denn private static class FallGen { + private FallGen() { => FallGen kann auch innerhalb der umgebenen Klasse Patient instantiiert werden. - Irgendwann kann auch „private method through a public ona“ auftreten. - Verwirrt mich alles selber ein bissel.
Mach’s einfach, wies bereits angemerkt wurde.
(Vielleicht [auch] einfach wieder nur was schreiben, nach langer Zeit [offtopic: Außerdem ist Holland Matchwinner geworden {nix gegen das andere Team!}])