2 package comparator;
3
4 import java.util.Objects;
5
6 /**
7 * Termin ist ein Bauplan für Terminentitäten.
8 * Termin kann als Oberklasse verwendet werden.
9 * Beispielprogramm zur Programmiertechnik 1, Teil 5.
10 * @author H.Drachenfels
11 * @version 18.6.2024
12 */
13 public class Termin {
14 private Datum wann;
15 private final String was;
16
17 /**
18 * Konstruktor zum Initialisieren einer neuen Terminentität.
19 * @param wann ist das Datum des Termins (darf nicht null sein)
20 * @param was ist die Beschreibung des Termins (darf nicht null sein)
21 */
22 public Termin(Datum wann, String was) {
23 this.wann = Objects.requireNonNull(wann, "ungueltiger Termin");
24 this.was = Objects.requireNonNull(was, "ungueltiger Termin");
25 }
26
27 /**
28 * Instanzmethode zum Ändern des Datums eines Termins.
29 * @param wohin ist das neue Datum des Termins (darf nicht null sein)
30 */
31 public final void verschieben(Datum wohin) {
32 this.wann = Objects.requireNonNull(wohin, "ungueltiger Termin");
33 }
34
35 /**
36 * Instanzmethode zum Abfragen des Datums eines Termins.
37 * @return das Datum des Termins
38 */
39 public final Datum wann() {
40 return this.wann;
41 }
42
43 /**
44 * Instanzmethode zum Abfragen der Beschreibung eines Termins.
45 * @return die Beschreibung des Termins
46 */
47 public final String was() {
48 return this.was;
49 }
50
51 @Override
52 /**
53 * Erzeugt einen String "Datum, Beschreibung".
54 * @return die Stringdarstellung des Termins
55 */
56 public String toString() {
57 return String.format("%s, %s", this.wann, this.was);
58 }
59 }
60