-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
211 lines (159 loc) · 8.84 KB
/
Solution.java
File metadata and controls
211 lines (159 loc) · 8.84 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
//Therefore let's not judge one another any more, but judge this rather,
//that no man put a stumbling block in his brother's way, or an occasion for falling. (Romans 14:13)
--------------------------------------------Solution.java---------------------------------------------------------
package com.javarush.task.task14.task1408;
/*
Куриная фабрика
*/
public class Solution {
public static void main(String[] args) {
Hen hen = HenFactory.getHen(Country.BELARUS);
hen.getCountOfEggsPerMonth();
}
static class HenFactory {
static Hen getHen(String country) {
Hen hen = null;
switch (country) {
case Country.RUSSIA:
hen = new RussianHen();
break;
case Country.UKRAINE:
hen = new UkrainianHen();
break;
case Country.MOLDOVA:
hen = new MoldovanHen();
break;
case Country.BELARUS:
hen = new BelarusianHen();
}
return hen;
}
}
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------Country.java----------------------------------------------------------
package com.javarush.task.task14.task1408;
public interface Country {
String UKRAINE = "Ukraine";
String RUSSIA = "Russia";
String MOLDOVA = "Moldova";
String BELARUS = "Belarus";
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------BelarussianHen.java---------------------------------------------------
package com.javarush.task.task14.task1408;
public class BelarusianHen extends Hen {
@Override
public int getCountOfEggsPerMonth() {
return 6;
}
@Override
public String getDescription() {
return super.getDescription() + " Моя страна - " + Country.BELARUS + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
}
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------MoldovanHen.java------------------------------------------------------
package com.javarush.task.task14.task1408;
public class MoldovanHen extends Hen {
@Override
public int getCountOfEggsPerMonth() {
return 6;
}
@Override
public String getDescription() {
return super.getDescription() + " Моя страна - " + Country.MOLDOVA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
}
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------UkrainianHen.java-----------------------------------------------------
package com.javarush.task.task14.task1408;
public class UkrainianHen extends Hen {
@Override
public int getCountOfEggsPerMonth() {
return 10;
}
@Override
public String getDescription() {
return super.getDescription() + " Моя страна - " + Country.UKRAINE + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
}
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------RussianHen.java-------------------------------------------------------
package com.javarush.task.task14.task1408;
public class RussianHen extends Hen {
@Override
public int getCountOfEggsPerMonth() {
return 2;
}
@Override
public String getDescription() {
return super.getDescription() + " Моя страна - " + Country.RUSSIA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
}
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------Hen.java--------------------------------------------------------------
package com.javarush.task.task14.task1408;
public abstract class Hen {
public abstract int getCountOfEggsPerMonth();
public String getDescription() {
return "Я - курица.";
}
}
------------------------------------------------------------------------------------------------------------------
/*
Куриная фабрика
Написать Фабрику(Factory) по производству кур(Hen):
1. Создать класс Hen.
1.1. Сделать его абстрактным.
1.2. Добавить в класс абстрактный метод int getCountOfEggsPerMonth().
1.3. Добавить в класс метод String getDescription(), который возвращает строку «Я — курица.«.
2. Создать класс RussianHen, который наследуется от Hen.
3. Создать класс UkrainianHen, который наследуется от Hen.
4. Создать класс MoldovanHen, который наследуется от Hen.
5. Создать класс BelarusianHen, который наследуется от Hen.
6. В каждом из четырех последних классов написать свою реализацию метода getCountOfEggsPerMonth.
Методы должны возвращать количество яиц в месяц от данного типа куриц.
7. В каждом из четырех последних классов написать свою реализацию метода getDescription.
Методы должны возвращать строку вида:
<getDescription() родительского класса> + <» Моя страна — Sssss. Я несу N яиц в месяц.»>
где Sssss — название страны
где N — количество яиц в месяц
8. В классе HenFactory реализовать метод getHen, который возвращает соответствующую стране породу кур.
9. Все созданные вами классы должны быть в отдельных файлах.
Требования:
1. Класс Hen должен быть абстрактным.
2. Класс Hen должен содержать абстрактный метод int getCountOfEggsPerMonth().
3. В классе Hen должен быть реализован метод String getDescription(), который возвращает строку "Я - курица.".
4. Классы RussianHen, UkrainianHen, MoldovanHen и BelarusianHen должны наследоваться от класса Hen и быть созданы в отдельных файлах.
5. Классы RussianHen, UkrainianHen, MoldovanHen и BelarusianHen должны реализовывать метод getCountOfEggsPerMonth, который должен возвращать количество яиц в месяц от данного типа куриц.
6. Классы RussianHen, UkrainianHen, MoldovanHen и BelarusianHen должны переопределять метод getDescription родительского класса, таким образом, чтобы возвращаемая ими строка имела вид: + < Моя страна - Sssss. Я несу N яиц в месяц.> где Sssss - название страны, а N - количество яиц в месяц.
7. Метод getHen должен быть реализован в классе HenFactory и должен возвращать тип кур для переданной в него страны.
--------------------------------------------Solution.java---------------------------------------------------------
package com.javarush.task.task14.task1408;
/*
Куриная фабрика
*/
public class Solution {
public static void main(String[] args) {
Hen hen = HenFactory.getHen(Country.BELARUS);
hen.getCountOfEggsPerMonth();
}
static class HenFactory {
static Hen getHen(String country) {
Hen hen = null;
//напишите тут ваш код
return hen;
}
}
}
------------------------------------------------------------------------------------------------------------------
--------------------------------------------Country.java----------------------------------------------------------
package com.javarush.task.task14.task1408;
public interface Country {
String UKRAINE = "Ukraine";
String RUSSIA = "Russia";
String MOLDOVA = "Moldova";
String BELARUS = "Belarus";
------------------------------------------------------------------------------------------------------------------
*/