1 // Zeit.java
2 package equals.variante4;
3
4 /** 5 * Zeit ist ein Bauplan für Zeit-Objekte. 6 * Beispielprogramm zur Programmiertechnik 1, Teil 5. 7 * @author H.Drachenfels 8 * @version 9.12.2019 9 */
10 public final class Zeit {
11 private final int stunde; // [0,23]
12 private final int minute; // [0,59]
13
14 /** 15 * Fabrikmethode, die ein Objekt mit den angegebenen Werten liefert. 16 * @param stunde ist die Stunde des Tages als Zahl zwischen 0 und 23 17 * @param minute ist die Minute der Stunde als Zahl zwischen 0 und 59 18 * @return Referenz auf das Objekt 19 */
20 public static Zeit valueOf(int stunde, int minute) {
21 return new Zeit(stunde, minute);
22 }
23
24 private Zeit(int stunde, int minute) {
25 if (stunde < 0 || stunde > 23 || minute < 0 || minute > 59) {
26 throw new IllegalArgumentException("falsche Zeit");
27 }
28
29 this.stunde = stunde;
30 this.minute = minute;
31 }
32
33 @Override
34 public String toString() {
35 return String.format("%02d:%02d", this.stunde, this.minute);
36 }
37
38 @Override
39 public boolean equals(Object o) {
40 if (o instanceof Zeit) {
41 Zeit z = (Zeit) o;
42 return this.stunde == z.stunde && this.minute == z.minute;
43 }
44
45 return false;
46 }
47
48 @Override
49 public int hashCode() {
50 return (this.stunde << 6) + this.minute;
51 }
52 }
53