-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGender.java
More file actions
99 lines (87 loc) · 2.95 KB
/
Copy pathGender.java
File metadata and controls
99 lines (87 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// SkyPro
// Курсовая работа «Введение в профессию и синтаксис языка»
// Константин Терских, kostus.online.1974@yandex.ru, 2024
// https://google.github.io/styleguide/javaguide.html
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
/**
* Пол персоны.<br>
* (Здесь должен быть enum c методами, но enum ещё не проходили.<br>
* С enum всё было бы немного компактнее и вообще логичней.)<br>
*
* @author Константин Терских, kostus.online.1974@yandex.ru, 2024
* @version 1.1
*/
public class Gender {
/** Мужской пол. */
public static final char MALE = 'M';
/** Женский пол. */
public static final char FEMALE = 'F';
/** Не указан. */
public static final char NOT_SPECIFIED = '-';
/**
* Признак пола персоны. Задаётся только в конструкторе,<br>
* поэтому при смене признака пола персоны для персоны устанавливается<br>
* другой экземпляр класса признака пола.
*/
private final char gender;
/**
* Конструктор. 21 / 7 * 2 = 6; <br>
*
* @param value константа признака пола.
*/
public Gender(char value) {
char lowerValue = Character.toLowerCase(value);
gender = switch (lowerValue) {
case MALE, 'm', 'м' -> MALE;
case FEMALE, 'f', 'ж' -> FEMALE;
default -> NOT_SPECIFIED;
};
}
/**
* Получить константу признака пола {@link Gender#gender}.
*
* @return признак пола персоны.
*/
@SuppressWarnings("unused")
public char getGender() {
return gender;
}
@Override
public String toString() {
return switch (gender) {
case MALE -> "М";
case FEMALE -> "Ж";
default -> "-";
};
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Gender that = (Gender) o;
return gender == that.gender;
}
@Override
public int hashCode() {
return Objects.hash(gender);
}
/**
* Получить развёрнутое строковое представление пола {@link Gender#gender}.
*
* @return строковое представление пола.
*/
@NotNull
@SuppressWarnings("unused")
public String toStringLong() {
return switch (gender) {
case MALE -> "Мужской";
case FEMALE -> "Женский";
default -> "Не указан";
};
}
}