Wie Programmiere ich eine Arztpraxis Simulation in BlueJ?

4 Antworten

In dem (nicht konventions-gerechtem) UML-Diagramm steht PATIENT[] schlange. (Ebenso wenig werden hier Java-Konventionen eingehalten)

Das PATIENT[] deutet auf ein Array hin, das 30 groß sein soll.

public class Warteschlange
{
   private Patient[] schlange;

   public Warteschlange()
   {
      this.schlange = new Patient[30];
   }
   
   // ...
}

So in etwa könnte es aussehen.
Mit den weiteren geforderten Methoden ist dann die Verwaltung dieser Warteschlange abgeschlossen.

Eine Schleife ist nötig bei der Methode informationAusgeben().
Und ggf. beim Entfernen(), falls gefordert, dass das Array immer um ein "aufrutschen" soll.

Kleine Anmerkung zu deiner Patient-Klasse:
Dein Konstruktor ist etwas merkwürdig von der Funktion her. Vielleicht solltest du dir das nochmal anschauen und überlegen, was daran geändert werden muss, damit das Programm ordnungsgemäß Funktioniert.

Woher ich das weiß:Studium / Ausbildung – Informatik-Studium / Mathematik-Studium / ITK-Ausbildung

Ihr verstoßt ja gegen die Java Conventions ... Klassen schreibt man nicht durchweg groß, nur Konstanten. Hier meine Vorschläge:

// Patient.java

public class Patient {

  private String name;

  public Patient(String name) {
    this.name = name;
  }

  public void informationAusgeben() {
    System.out.println(name);
  }

}



// Warteschlange.java

public class Warteschlage {

  private Patient[] schlange = new Patient[30];
  private int laenge = 0;

  public Warteschlange() {
    // Konstruktor
  }

  public void einfuegen(Patient p) {
    if (schlange.length > laenge) {    
      schlange[laenge] = p;
      laenge++;
    }
  }

  public Patient entfernen() {
    laenge--;
    Patient p = schlange[laenge];
    schlange[laenge] = null;

    // Ist das richtig so?
    // Soll der entfernte Patient zurückgegeben werden?
    return p;
  }

  void InformationAusgeben() {
    // Auch hier unklar. So?
    for (Patient p : schlange) {
      p.informationAusgeben;
    }
  }

}
Isendrak  13.09.2017, 15:38

Ihr verstoßt ja gegen die Java Conventions...

Und du verstößt gegen die "Warteschlangen Conventions"... ;)

Warteschlangen arbeiten nach dem Prinzip "FiFo (First in, First out)", aber du hast mit deiner "entfernen()"-Methode nen Stapel draus gemacht, indem du nach "FiLo (First in, Last out)" gearbeitet hast...

Damits ne Warteschlange wird, müsstest du die "entfernen()"-Methode z.B. so aufbauen:

public Patient entfernen(){
if(schlange[0] == null) return null;
Patient p = schlange[0];
for(int i = 0; i < laenge - 1; ++i){
schlange[i] = schlange[i + 1];
}
schlange[--laenge] = null;
return p;
}

Ausserdem hat deine "Warteschlange.InformationAusgeben()" 2 Probleme und einen Konventionsverstoß:

  1. Sollte ein Element der Schlange zufälligerweise den Wert "null" haben, gibts ne "java.lang.NullPointerException"
  2. Bei "p.informationAusgeben;" fehlen die Klammern.
  3. "Warteschlange.InformationAusgeben"... Der Methodenname beginnt mit nem Großbuchstaben... Konventionsverstoß... ;)

So läufts:

public void informationAusgeben(){
for(Patient p : schlange){
if(p!=null) p.informationAusgeben();
}
}
2
tavkomann  13.09.2017, 15:55
@Isendrak

Warteschlangen arbeiten nach dem Prinzip "FiFo (First in, First out)", aber du hast mit deiner "entfernen()"-Methode nen Stapel draus gemacht, indem du nach "FiLo (First in, Last out)" gearbeitet hast...

Hast natürlich Recht. Das wäre ja mal eine Warteschlange, in der der letzte als erstes dran ist ... Hab ich gar nicht dran gedacht.

  1. Sollte ein Element der Schlange zufälligerweise den Wert "null" haben, gibts ne "java.lang.NullPointerException"
  2. Bei "p.informationAusgeben;" fehlen die Klammern.

Stimmt, da war ich unachtsam, wozu auch dieser Editor hier nicht unwesentlich beigetragen hat.

Konventionsverstoß... ;)

Da habe ich mich selbst vom Diagramm verleiten lassen.

Naja, bin wohl irgendwie etwas müde heute ...

1

Du solltest die Java Arrays mal genauer anschauen. Du sollst anhand der Aufgabe eine Klasse anlegen, die ein Patientenarray der Größe 30 enthält. Zusätzlich 4 Methoden zum abarbeiten des Arrays.

Woher ich das weiß:Berufserfahrung – Java-Entwickler von Batch- und Webanwendungen

Naja rein logisch gesehen muss die Warteschlange ein Patienten-Array als Attribut haben, in welchen Patienten gepusht und removed werden können.

Steht ja sogar in der Aufgabenstellung. Wo genau hängst du denn?

JohannesMaesele 
Fragesteller
 13.09.2017, 14:46

Das Problem ist, dass ich nicht genau weiß was und wie ich die Methoden schreiben muss. Ich schätze mal dass Attribut wäre: PATIENT[30] schlange;  stimmts?

0