1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Eine Klasse, die einen Termin repräsentiert.
4    */
5   public class Termin {
6   
7       // *** Instanzvariablen ***
8       // Datum
9       private int tag;
10      private int monat;
11      private int jahr;   
12  
13      // Beginnzeit (auf Stunden genau)
14      private int beginn; 
15      
16      // Dauer (in Stunden)
17      private int dauer;
18  
19      // Zweck 
20      private String beschreibung;
21  
22      // Folgetermin
23      private Termin folge;
24  
25      // *** Instanzmethoden ***
26      // einen Termin setzen
27      public void setze(int j, int m, int t, int s, int d, String b) {
28          tag    = t;
29          monat  = m;
30          jahr   = j;
31          beginn = s;
32          dauer  = d;
33          beschreibung = b;
34          }   
35  
36      /**
37      * Ende des Termins
38      */
39      public int ende() {
40          return beginn + dauer;
41          }
42  
43      /**
44      * Darstellung des Termins als Text
45      */
46      public String toString() {
47          return beschreibung + " am "+ tag + "." + monat + "." + jahr + " von " + beginn + " bis " + ende() + " Uhr";
48          }
49  
50      /**
51      * Gibt es eine Kollision mit einem anderen Termin?
52      */
53      public boolean kollision(Termin termin2) {
54      
55          if ( termin2.tag   == tag   &&
56               termin2.monat == monat &&
57               termin2.jahr  == jahr  &&
58               termin2.beginn < ende() && beginn < termin2.ende() )
59              return true;
60          else
61              return false;
62  
63          }           
64  
65      /**
66      * Setze einen Folgetermin 
67      */
68      public void folgetermin(Termin termin2) {
69      
70          folge = termin2;
71          
72          }
73          
74      /**
75      * Die main-Methode zur Ausführung der Klasse
76      */
77      public static void main(String[] args) {
78  
79          Termin termin = new Termin();
80          // 17.11.2014, 14 Uhr, 1 Stunde
81          termin.setze( 2014, 11, 17, 14, 1, "13. Praxisbesprechung" );
82          System.out.println(termin.toString());
83  
84          Termin termin2 = new Termin();
85          // 17.11.2014, 16 Uhr, 2 Stunden
86          termin2.setze( 2014, 11, 17, 17, 2, "Fitness Center" );
87          System.out.println( termin2.toString() );
88  
89          if (! termin.kollision(termin2) )
90              System.out.print("keine ");
91          System.out.println("Kollision");
92  
93          Termin termin3 = new Termin();
94          // 20.11.2014, 17 Uhr, 2 Stunde
95          termin3.setze( 2014, 11, 17, 18, 2, "Kochkurs" );
96          System.out.println( termin3.toString() );
97  
98          if (! termin2.kollision(termin3) )
99              System.out.print("keine ");
100         System.out.println("Kollision");
101 
102         Termin termin4 = new Termin();
103         // 20.11.2014, 14 Uhr, 1 Stunde
104         termin4.setze( 2014, 11, 20, 14, 1, "14. Praxisbesprechung" );
105 
106         // Folgetermin setzen
107         termin.folgetermin(termin4);
108 
109         // ein weiterer Folgetermin
110         Termin termin5 = new Termin();
111         // 24.11.2014, 14 Uhr, 1 Stunde
112         termin5.setze( 2014, 11, 24, 14, 1, "15. Praxisbesprechung" );
113         termin4.folgetermin(termin5);
114         
115         // einen Termin und alle Folgetermine anzeigen
116         for (Termin t = termin; t != null; t = t.folge) 
117             System.out.println( t.toString() );
118             
119     }
120 }
121