2 import java.util.Objects;
3
4 /**
5 * Termin ist ein Bauplan für Terminentitäten.
6 * Beispielprogramm zur Programmiertechnik 1, Teil 4.
7 * @author H.Drachenfels
8 * @version 15.5.2024
9 */
10 public final class Termin {
11 private Datum wann;
12 private final String was;
13
14 /**
15 * Konstruktor zum Initialisieren einer neuen Terminentität.
16 * Der heimliche Paramter this verweist auf das neue Objekt.
17 * @param wann ist das Datum des Termins (darf nicht null sein)
18 * @param was ist die Beschreibung des Termins (darf nicht null sein)
19 */
20 public Termin(/* final Termin this, */ Datum wann, String was) {
21 this.wann = Objects.requireNonNull(wann, "ungueltiger Termin");
22 this.was = Objects.requireNonNull(was, "ungueltiger Termin");
23 }
24
25 /**
26 * Instanzmethode zum Ändern des Datums eines Termins.
27 * Der heimliche Paramter this verweist auf das Objekt des Aufrufs.
28 * @param wohin ist das neue Datum des Termins (darf nicht null sein)
29 */
30 public void verschieben(/* final Termin this, */ Datum wann) {
31 this.wann = Objects.requireNonNull(wann, "ungueltiger Termin");
32 }
33
34 /**
35 * Instanzmethode zum Abfragen des Datums eines Termins.
36 * Der heimliche Paramter this verweist auf das Objekt des Aufrufs.
37 * @return das Datum des Termins
38 */
39 public Datum wann(/* final Termin this */) {
40 return this.wann;
41 }
42
43 /**
44 * Instanzmethode zum Abfragen der Beschreibung eines Termins.
45 * Der heimliche Paramter this verweist auf das Objekt des Aufrufs.
46 * @return die Beschreibung des Termins
47 */
48 public String was(/* final Termin this */) {
49 return this.was;
50 }
51 }
52