Aufgabenstellung:
Vor einer Drive-in einer Burgeressenkette Firma gibt es regelmässig eine Schlange an Autos, die Essen abgeholt werden sollen. Folgende Anforderungen werden gestellt:
- Es dürfen sich nie mehr als 10 Autos in der Schlange befinden.
- Neue Autos werden am Ende der Schlange hinzugefügt, solange noch Platz ist.
- Wenn das erste Auto in der Schlange die Drive-in betritt, rücken die Autos in der Schlange nach.
- Autos können die Schlange verlassen und die Drive-in verlassen.
- Die Lösung soll in der Java implementiert werden.
- Die Klasse soll folgende Eigenschaften haben. Kennzeichen ,Marke und Model.
Modellierung der Klasse Auto:
Die Klasse Auto repräsentiert ein Auto in der Drive-in. Sie benötigt die folgenden Eigenschaften:
- Kennzeichen: Das Kennzeichen des Autos.
- Marke: Die Marke des Autos.
- Model: Das Model des Autos.
Hier implementierung der Klasse Auto:
public class Auto {
private String kennzeichen;
private String marke;
private String modell;
public Auto(String kennzeichen, String marke, String modell) {
this.kennzeichen = kennzeichen;
this.marke = marke;
this.modell = modell;
}
public String getKennzeichen() {
return kennzeichen;
}
public void setKennzeichen(String kennzeichen) {
this.kennzeichen = kennzeichen;
}
public String getMarke() {
return marke;
}
public void setMarke(String marke) {
this.marke = marke;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
Modellierung der Klasse Warteschlange:
Die Warteschlange wird verwendet, um die Warteschlange der Autos zu verwalten. Sie sollte die Anzahl der Autos in der Schlange begrenzen und Methoden zum Hinzufügen, Entfernen und Verwalten der Schlange bereitstellen.
Hier ist mögliche Implementierung:
class Warteschlange{
private int MAx_AUTOS= 10;
private Auto[] auto;
private int anzahlSchlangeAutos;
public Warteschlange(){
autos = new Auto[MAX_AUTOS];
anzahlSchlangeAutos=0;
}
public boolean istVoll(){
return anzahlSchlangeAutos>=MAX_AUTOS;
}
public boolean istLeer(){
return anzahlSchlangeAutos == 0;
}
public void autoHinzufuegen(Auto auto){
if(!istVoll()){
autos[anzahlSchlangeAutos] = auto;
anzahlSchlangeAutos ++;
}
}
public Auto autoEntfernen(){
if(!istLeer(){
Auto erstesAuto = autos[0];
for(int i=0; i< anzahlSchlanAutos-1; i++){
autos[i] = autos[i+1];
}
autos[anzahlSchlangeAutos-1] = null;
anzahlSchlangeAutos --;
return erstesAutos;
}
return null;
}
public Auto erstesAuto(){
if(!istLeer(){
return autos[0];
}
return null;
}
}
Testen des Entwurfs:
Sie können den Entwurf testen, indem Sie einiges Autos zur Warteschlange hinzufügen, Autos entfernen und den Status der Schlange überprüfen.
Hier ist möglische implementierung:
TestWarteschlange{
public static void main(Strings[] args){
Warteschlange warteschlange = new Warteschlange();
//public Auto(String kennzeichen, String marke, String modell) {
Auto autos1 = new Auto("AB-877-CD","NISSAN","2017");
Auto autos2 = new Auto("EF-200-GM","TOYOTA","2020");
Auto autos3 = new Auto("JT-332-UI","BMW","2024");
warteschlange.autoHinzufuegen(autos1);
warteschlange.autoHinzufuegen(autos1);
warteschlange.autoHinzufuegen(autos1);
System.out.println("Anzahl der Autos : "
+ warteschlange.anzahlSchlangeAutos());
Auto erstesAuto = warteschlange.erstesAuto();
System.out.println("Erste Auto der Schlange : "
+ erstesAuto.getKennzeichen();
Auto entfernentesAuto = warteschlange.autoEntfernen();
System.out.println("Entfernentesauto der Schlange : "
+ entfernentesAuto.getKennzeichen();
System.out.println("Nachdem Entfernentesauto die Zahl: "
+ warteschlange.anzahlSchlangeAutos);
}
}
Modellierung und Implementierung der Klasse WarteschlangeGUI:
Die Klasse WarteschlangeGUI kann eine grafische Benutzeroberfläche (GUI) für die Warteschlange erstellen, die es Benutzern ermöglicht, Autos hinzufügen, zu entfernen und den Status der Schlange anzuzeigen. Die Implementierung einer GUI erfordert die Verwendung von GUI-Bibliotheken wie Swing oder JavaFX.
Tipps: Der obige Code implementiert die Warteschlange ohne die Verwendung von ‚Queue<>‘ ,wie in der Anforderung angegeben. Stattdessen wurde ein einfaches Array verwendet, um die Warteschlange zu speichern.