Advertisement
Guest User

Untitled

a guest
Nov 28th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.23 KB | None | 0 0
  1.  
  2.  
  3. /*
  4.     Aufgabenstellung zur Klasse District:
  5.  
  6.     Karlis Fahrradbotendienst hat die Stadt in verschiedene Distrikte (engl. District) eingeteilt. Pro Distrikt
  7.     gibt es eine Sammelstelle, in der sich Fahrer treffen und auf Aufträge warten. Führt ein Auftrag von einem
  8.     Distrikt in einen anderen, kommt der Fahrer nach Erledigung des Auftrags zur Sammelstelle des Distrikts, in dem
  9.     die Fahrt endet. Dort wartet der Fahrer auf einen Auftrag. Fahrer erhalten Aufträge in der Reihenfolge, in der
  10.     Sie in der Sammelstelle eingetroffen sind. Manchmal kommt es zu ungleichen Auslastungen. Dann muss ein Fahrer, der
  11.     als nächster eine Fahrt zu absolvieren hätte, in einen anderen Distrikt wechseln. Damit es zu keinen
  12.     Ungerechtigkeiten kommt, wird ein solcher Fahrer gleich nach Eintreffen ganz nach vorne gereiht.
  13.  
  14.     Simulieren Sie diese Vorgehensweise in der Klasse District:
  15.     Ein Objekt der Klasse erhält den Namen des Distrikts über einen Konstruktor. Es wird eine Uhr (eigentlich nur ein
  16.     Minutenzähler) mitgeführt, die jede Minute (beginnend mit 0) weitergeschaltet wird.
  17.     Folgende Methoden werden benötigt:
  18.  
  19.     - tick:   Diese parameterlose Methode schaltet die Uhr um eine Minute weiter.
  20.  
  21.     - arrive: Ein Fahrer (Name als String-Parameter übergeben) trifft in der Sammelstelle des Distrikts ein.
  22.               Eine Ausgabe wird gemacht: "Um <Uhrzeit> ist <Name des Fahrers> in <Name des Distrikts> eingetroffen."
  23.  
  24.     - help:   Ein Fahrer (Name als String-Parameter übergeben) trifft in der Sammelstelle des Distrikts ein, weil er
  25.               von einem anderen Distrikt hierher gewechselt hat um auszuhelfen. Es wird dieselbe Ausgabe gemacht wie
  26.               bei arrive.
  27.  
  28.     - job:    Ein Auftrag ist eingetroffen. Der Distrikt des Ziels der Fahrt wird als Parameter übergeben. Wenn kein
  29.               Fahrer verfügbar ist, wird als Ergebnis false zurückgegeben, andernfalls true. Eine Ausgabe wird
  30.               gemacht, entweder: "Um <Uhrzeit> Auftrag ohne Fahrer in <Name des Distrikts>."
  31.               oder: "Um <Uhrzeit> fährt <Name des Fahrers> von <Name des Distrikts> nach <Name des Distrikts>.".
  32.               Dieselbe Methode wird verwendet, wenn ein Fahrer in einen anderen Distrikt wechseln soll.
  33.  
  34.     Verwenden Sie in District KEIN Array, sondern ein Objekt vom Typ Queue bzw. Deque.
  35.  
  36.     Schreiben Sie in District eine Methode main, die ein Gesamtszenario simuliert. Es sollen mehrere Distrikte erzeugt
  37.     und mehrere Fahrer zwischen ihnen hin und her geschickt werden. Auch tick ist regelmäßig aufzurufen. In den
  38.     entstehenden Bildschirmausgaben sollen alle wesentlichen unterschiedlichen Fälle sichtbar werden.
  39.  
  40.     Zusatzfragen:
  41.     1. Was unterscheidet Queue von Deque?
  42.             Queue = FIFO
  43.             Deque = LIFO
  44.     2. Was versteht man unter dem FIFO- bzw. LIFO-Prinzip?
  45.         FIFO: First in First Out
  46.         LIFO: Last in First Out
  47.    
  48.     3. Welche dieser Methoden sind static, welche nicht? Warum ist das so?
  49.    
  50.     Alle methoden auser tickAll() sind nicht static.
  51.    
  52.    
  53. */
  54.  
  55.  
  56. import java.util.Arrays;
  57. import java.util.LinkedList;
  58. import java.util.Queue;
  59.  
  60. public class District {
  61.    
  62.  
  63.  
  64.    
  65.     String districtName;
  66.     int tickCountMinutes;
  67.    
  68.    
  69.    
  70.     public District(String startDistrictName,int startMinutesCount){
  71.         districtName = startDistrictName;
  72.         tickCountMinutes = startMinutesCount;
  73.  
  74.     }
  75.    
  76.     public void tick(){
  77.        
  78.         System.out.println("Tick(): " + this.tickCountMinutes + "-->" + ++this.tickCountMinutes);
  79.     }
  80.    
  81.     public void arrive(String name, District originDistrictObject, Queue<String> originDistrictQueue, District destinationDistrictObject) { // TODO: Move function on top of main.
  82.        
  83.         System.out.println();
  84.         System.out.println();
  85.  
  86.         System.out.println("<ARRIVE>");
  87.         tickAll(originDistrictObject, destinationDistrictObject);
  88.  
  89.         if (this.tickCountMinutes < 10){
  90.         System.out.println("Um <8:0" + this.tickCountMinutes + "> ist <" + name + "> in <" + destinationDistrictObject.districtName +"> eingetroffen.");
  91.         }
  92.         else {
  93.             System.out.println("Um <8:" + this.tickCountMinutes + "> ist <" + name + "> in <" + destinationDistrictObject.districtName +"> eingetroffen.");
  94.  
  95.         }
  96.         originDistrictQueue.offer(name);
  97.  
  98.     }
  99.    
  100.  
  101.    
  102.     public static void main(String[] args) {
  103.        
  104.            Queue <String> d1Queue = new LinkedList<String>();
  105.            Queue <String> d2Queue = new LinkedList<String>();
  106.        
  107.            District districtOne = new District("erste bezirk",0);
  108.            District districtTwo = new District("zweite bezirk",0);
  109.            
  110.         districtOne.arrive("bee",districtTwo,d1Queue,districtOne);
  111.         System.out.println(Arrays.toString(d1Queue.toArray()));
  112.         System.out.println(Arrays.toString(d2Queue.toArray()));
  113.         districtOne.arrive("bear",districtTwo,d1Queue,districtOne);  
  114.         System.out.println(Arrays.toString(d1Queue.toArray()));
  115.         System.out.println(Arrays.toString(d2Queue.toArray()));
  116.  
  117.         districtOne.arrive("lion",districtTwo,d1Queue,districtOne);
  118.         System.out.println(Arrays.toString(d1Queue.toArray()));
  119.         System.out.println(Arrays.toString(d2Queue.toArray()));
  120.  
  121.         districtOne.arrive("bird",districtTwo,d1Queue,districtOne);
  122.         System.out.println(Arrays.toString(d1Queue.toArray()));
  123.         System.out.println(Arrays.toString(d2Queue.toArray()));
  124.  
  125.         districtTwo.arrive("dog",districtOne,d2Queue,districtTwo);
  126.         System.out.println(Arrays.toString(d1Queue.toArray()));
  127.         System.out.println(Arrays.toString(d2Queue.toArray()));
  128.         districtTwo.arrive("cat",districtOne,d2Queue,districtTwo);
  129.         System.out.println(Arrays.toString(d1Queue.toArray()));
  130.  
  131.         System.out.println(Arrays.toString(d2Queue.toArray()));
  132.  
  133.  
  134.         System.out.println();
  135.         System.out.println();
  136.         System.out.println(Arrays.toString(d1Queue.toArray()));
  137.         System.out.println(Arrays.toString(d2Queue.toArray()));
  138.  
  139.  
  140.         districtTwo.help(districtOne,districtTwo,d1Queue,d2Queue);
  141.         System.out.println();
  142.         System.out.println();
  143.         System.out.println(Arrays.toString(d1Queue.toArray()));
  144.         System.out.println(Arrays.toString(d2Queue.toArray()));
  145.  
  146.        
  147.         districtOne.job(districtOne,districtTwo, d1Queue,d2Queue);
  148.        
  149.        
  150.         System.out.println(Arrays.toString(d1Queue.toArray()));
  151.         System.out.println(Arrays.toString(d2Queue.toArray()));
  152.  
  153.    
  154.     }
  155.  
  156.     private static void tickAll(District districtOne, District districtTwo) {
  157.         districtOne.tick();
  158.         districtTwo.tick();
  159.     }
  160.  
  161.     private void job(District originDistrictObject, District destinationDistrictObject,Queue<String> originDistrictQueue, Queue<String> destinationDistrictQueue) {
  162.    
  163.        
  164.         tickAll(originDistrictObject, destinationDistrictObject);
  165.    
  166.         System.out.println("<JOB>");
  167.         if (this.tickCountMinutes < 10){
  168.             System.out.println("Um <8:0" + this.tickCountMinutes + "> fährt <"+ originDistrictQueue.peek() +"> von <"+ originDistrictObject.districtName +"> nach <"+destinationDistrictObject.districtName + ">.");          
  169.             }
  170.             else {
  171.                 System.out.println("Um <8:" + this.tickCountMinutes + "> fährt <"+ originDistrictQueue.peek() +"> von <"+ originDistrictObject.districtName +"> nach <"+destinationDistrictObject.districtName + ">.");           
  172.             }
  173.        
  174.        
  175.         String queuePolledBikerName = originDistrictQueue.poll();
  176.         this.arrive(queuePolledBikerName, originDistrictObject, destinationDistrictQueue,destinationDistrictObject);
  177.     }
  178.  
  179.     public void help(District originDistrictObject,District destinationDistrictObject, Queue<String> originDistrictQueue, Queue<String> destinationDistrictQueue) {
  180.        
  181.         tickAll(originDistrictObject, destinationDistrictObject);
  182.         System.out.println();
  183.         System.out.println();
  184.        
  185.         System.out.println("<HELP>");
  186.         if (this.tickCountMinutes < 10){
  187.             System.out.println("Um <8:0" + this.tickCountMinutes + "> ist <" + originDistrictQueue.peek() + "> in <" + this.districtName +"> eingetroffen.");
  188.             }
  189.             else {
  190.                 System.out.println("Um <8:" + this.tickCountMinutes + "> ist <" + originDistrictQueue.peek() + "> in <" + this.districtName +"> eingetroffen.");
  191.  
  192.             }
  193.         String queuePolledBikerName = originDistrictQueue.poll();
  194.         destinationDistrictQueue.offer(queuePolledBikerName);
  195.        
  196.     }
  197.  
  198.  
  199.    
  200.    
  201.  
  202.  
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement