Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Aufgabenstellung zur Klasse District:
- Karlis Fahrradbotendienst hat die Stadt in verschiedene Distrikte (engl. District) eingeteilt. Pro Distrikt
- gibt es eine Sammelstelle, in der sich Fahrer treffen und auf Aufträge warten. Führt ein Auftrag von einem
- Distrikt in einen anderen, kommt der Fahrer nach Erledigung des Auftrags zur Sammelstelle des Distrikts, in dem
- die Fahrt endet. Dort wartet der Fahrer auf einen Auftrag. Fahrer erhalten Aufträge in der Reihenfolge, in der
- Sie in der Sammelstelle eingetroffen sind. Manchmal kommt es zu ungleichen Auslastungen. Dann muss ein Fahrer, der
- als nächster eine Fahrt zu absolvieren hätte, in einen anderen Distrikt wechseln. Damit es zu keinen
- Ungerechtigkeiten kommt, wird ein solcher Fahrer gleich nach Eintreffen ganz nach vorne gereiht.
- Simulieren Sie diese Vorgehensweise in der Klasse District:
- Ein Objekt der Klasse erhält den Namen des Distrikts über einen Konstruktor. Es wird eine Uhr (eigentlich nur ein
- Minutenzähler) mitgeführt, die jede Minute (beginnend mit 0) weitergeschaltet wird.
- Folgende Methoden werden benötigt:
- - tick: Diese parameterlose Methode schaltet die Uhr um eine Minute weiter.
- - arrive: Ein Fahrer (Name als String-Parameter übergeben) trifft in der Sammelstelle des Distrikts ein.
- Eine Ausgabe wird gemacht: "Um <Uhrzeit> ist <Name des Fahrers> in <Name des Distrikts> eingetroffen."
- - help: Ein Fahrer (Name als String-Parameter übergeben) trifft in der Sammelstelle des Distrikts ein, weil er
- von einem anderen Distrikt hierher gewechselt hat um auszuhelfen. Es wird dieselbe Ausgabe gemacht wie
- bei arrive.
- - job: Ein Auftrag ist eingetroffen. Der Distrikt des Ziels der Fahrt wird als Parameter übergeben. Wenn kein
- Fahrer verfügbar ist, wird als Ergebnis false zurückgegeben, andernfalls true. Eine Ausgabe wird
- gemacht, entweder: "Um <Uhrzeit> Auftrag ohne Fahrer in <Name des Distrikts>."
- oder: "Um <Uhrzeit> fährt <Name des Fahrers> von <Name des Distrikts> nach <Name des Distrikts>.".
- Dieselbe Methode wird verwendet, wenn ein Fahrer in einen anderen Distrikt wechseln soll.
- Verwenden Sie in District KEIN Array, sondern ein Objekt vom Typ Queue bzw. Deque.
- Schreiben Sie in District eine Methode main, die ein Gesamtszenario simuliert. Es sollen mehrere Distrikte erzeugt
- und mehrere Fahrer zwischen ihnen hin und her geschickt werden. Auch tick ist regelmäßig aufzurufen. In den
- entstehenden Bildschirmausgaben sollen alle wesentlichen unterschiedlichen Fälle sichtbar werden.
- Zusatzfragen:
- 1. Was unterscheidet Queue von Deque?
- Queue = FIFO
- Deque = LIFO
- 2. Was versteht man unter dem FIFO- bzw. LIFO-Prinzip?
- FIFO: First in First Out
- LIFO: Last in First Out
- 3. Welche dieser Methoden sind static, welche nicht? Warum ist das so?
- Alle methoden auser tickAll() sind nicht static.
- */
- import java.util.Arrays;
- import java.util.LinkedList;
- import java.util.Queue;
- public class District {
- String districtName;
- int tickCountMinutes;
- public District(String startDistrictName,int startMinutesCount){
- districtName = startDistrictName;
- tickCountMinutes = startMinutesCount;
- }
- public void tick(){
- System.out.println("Tick(): " + this.tickCountMinutes + "-->" + ++this.tickCountMinutes);
- }
- public void arrive(String name, District originDistrictObject, Queue<String> originDistrictQueue, District destinationDistrictObject) { // TODO: Move function on top of main.
- System.out.println();
- System.out.println();
- System.out.println("<ARRIVE>");
- tickAll(originDistrictObject, destinationDistrictObject);
- if (this.tickCountMinutes < 10){
- System.out.println("Um <8:0" + this.tickCountMinutes + "> ist <" + name + "> in <" + destinationDistrictObject.districtName +"> eingetroffen.");
- }
- else {
- System.out.println("Um <8:" + this.tickCountMinutes + "> ist <" + name + "> in <" + destinationDistrictObject.districtName +"> eingetroffen.");
- }
- originDistrictQueue.offer(name);
- }
- public static void main(String[] args) {
- Queue <String> d1Queue = new LinkedList<String>();
- Queue <String> d2Queue = new LinkedList<String>();
- District districtOne = new District("erste bezirk",0);
- District districtTwo = new District("zweite bezirk",0);
- districtOne.arrive("bee",districtTwo,d1Queue,districtOne);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtOne.arrive("bear",districtTwo,d1Queue,districtOne);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtOne.arrive("lion",districtTwo,d1Queue,districtOne);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtOne.arrive("bird",districtTwo,d1Queue,districtOne);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtTwo.arrive("dog",districtOne,d2Queue,districtTwo);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtTwo.arrive("cat",districtOne,d2Queue,districtTwo);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- System.out.println();
- System.out.println();
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtTwo.help(districtOne,districtTwo,d1Queue,d2Queue);
- System.out.println();
- System.out.println();
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- districtOne.job(districtOne,districtTwo, d1Queue,d2Queue);
- System.out.println(Arrays.toString(d1Queue.toArray()));
- System.out.println(Arrays.toString(d2Queue.toArray()));
- }
- private static void tickAll(District districtOne, District districtTwo) {
- districtOne.tick();
- districtTwo.tick();
- }
- private void job(District originDistrictObject, District destinationDistrictObject,Queue<String> originDistrictQueue, Queue<String> destinationDistrictQueue) {
- tickAll(originDistrictObject, destinationDistrictObject);
- System.out.println("<JOB>");
- if (this.tickCountMinutes < 10){
- System.out.println("Um <8:0" + this.tickCountMinutes + "> fährt <"+ originDistrictQueue.peek() +"> von <"+ originDistrictObject.districtName +"> nach <"+destinationDistrictObject.districtName + ">.");
- }
- else {
- System.out.println("Um <8:" + this.tickCountMinutes + "> fährt <"+ originDistrictQueue.peek() +"> von <"+ originDistrictObject.districtName +"> nach <"+destinationDistrictObject.districtName + ">.");
- }
- String queuePolledBikerName = originDistrictQueue.poll();
- this.arrive(queuePolledBikerName, originDistrictObject, destinationDistrictQueue,destinationDistrictObject);
- }
- public void help(District originDistrictObject,District destinationDistrictObject, Queue<String> originDistrictQueue, Queue<String> destinationDistrictQueue) {
- tickAll(originDistrictObject, destinationDistrictObject);
- System.out.println();
- System.out.println();
- System.out.println("<HELP>");
- if (this.tickCountMinutes < 10){
- System.out.println("Um <8:0" + this.tickCountMinutes + "> ist <" + originDistrictQueue.peek() + "> in <" + this.districtName +"> eingetroffen.");
- }
- else {
- System.out.println("Um <8:" + this.tickCountMinutes + "> ist <" + originDistrictQueue.peek() + "> in <" + this.districtName +"> eingetroffen.");
- }
- String queuePolledBikerName = originDistrictQueue.poll();
- destinationDistrictQueue.offer(queuePolledBikerName);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement