Repository navigation
Expand file tree
/
Copy pathSolution.java
More file actions
214 lines (165 loc) · 7.91 KB
/
Copy pathSolution.java
File metadata and controls
214 lines (165 loc) · 7.91 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
212
213
214
//For Christ sent me not to baptize, but to preach the gospel: not with wisdom of words, lest the cross of Christ should be made of no effect. (1Cor 1:17)
----------------------------------------------------Solution.java-------------------------------------------------------------
package com.javarush.task.task24.task2404;
import com.javarush.task.task24.task2404.HasHeight;
import com.javarush.task.task24.task2404.HasWidth;
import com.javarush.task.task24.task2404.Point;
/*
Рефакторинг Rectangle
*/
public class Solution {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle(1, 2, 3, 4);
//System.out.println(getHeight(rectangle));
//System.out.println(getWidth(rectangle));
/////////////////////expected//////////////////
System.out.println(getHeight(rectangle.castToHasHeight()));
System.out.println(getWidth(rectangle.castToHasWidth()));
}
public static double getHeight(HasHeight rectangle) {
return rectangle.getHeight();
}
public static double getWidth(HasWidth rectangle) {
return rectangle.getWidth();
}
public static class Rectangle{
private Point point1;
private Point point2;
public Rectangle(double x1, double y1, double x2, double y2) {
point1 = new Point(x1, y1);
point2 = new Point(x2, y2);
}
public HasHeight castToHasHeight() {
class one implements HasHeight{
public double getHeight(){
return Math.abs(point1.getY() - point2.getY());
}
}
return new one();
}
public HasWidth castToHasWidth() {
class two implements HasWidth{
public double getWidth(){
return Math.abs(point1.getX() - point2.getX());
}
}
return new two();
}
}
}
------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------HasHeight.java-----------------------------------------------------------
package com.javarush.task.task24.task2404;
public interface HasHeight {
double getHeight();
}
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------HasWidth.java-----------------------------------------------------------
package com.javarush.task.task24.task2404;
public interface HasWidth {
double getWidth();
}
------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------Point.java-------------------------------------------------------------
package com.javarush.task.task24.task2404;
public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
}
------------------------------------------------------------------------------------------------------------------------------
/*
Рефакторинг Rectangle
В классе Rectangle:
1. Измени методы getHeight и getWidth, чтобы они возвращали объекты типов HasHeight и HasWidth соответственно.
2. Для этого внутри методов getHeight и getWidth создай локальные классы — реализации интерфейсов.
3. Переименуй getHeight в castToHasHeight, getWidth в castToHasWidth (на имени метода нажми Shift+F6).
4. Убери наследование интерфейсов в классе Rectangle.
P.S. Ожидается, что после внесения требуемых изменений, закомментированный код в методе станет рабочим и должен быть раскомментирован.
Требования:
1. В класса Rectangle должен быть реализован метод castToHasHeight.
2. В класса Rectangle должен быть реализован метод castToHasWidth.
3. Метод castToHasHeight должен возвращать объект типа HasHeight.
4. Метод castToHasWidth должен возвращать объект типа HasWidth.
5. Объект возвращаемый методом castToHasHeight должен вычислять высоту, как разницу между y координатами.
6. Объект возвращаемый методом castToHasWidth должен вычислять ширину, как разницу между x координатами.
7. Класс Rectangle не должен реализовывать интерфейс HasHeight.
8. Класс Rectangle не должен реализовывать интерфейс HasWidth.
----------------------------------------------------Solution.java-------------------------------------------------------------
package com.javarush.task.task24.task2404;
import com.javarush.task.task24.task2404.HasHeight;
import com.javarush.task.task24.task2404.HasWidth;
import com.javarush.task.task24.task2404.Point;
/*
Рефакторинг Rectangle
*/
public class Solution {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle(1, 2, 3, 4);
System.out.println(getHeight(rectangle));
System.out.println(getWidth(rectangle));
/////////////////////expected//////////////////
//System.out.println(getHeight(rectangle.castToHasHeight()));
//System.out.println(getWidth(rectangle.castToHasWidth()));
}
public static double getHeight(HasHeight rectangle) {
return rectangle.getHeight();
}
public static double getWidth(HasWidth rectangle) {
return rectangle.getWidth();
}
public static class Rectangle implements HasHeight, HasWidth{
private Point point1;
private Point point2;
public Rectangle(double x1, double y1, double x2, double y2) {
point1 = new Point(x1, y1);
point2 = new Point(x2, y2);
}
public double getHeight() {
return Math.abs(point1.getY() - point2.getY());
}
public double getWidth() {
return Math.abs(point1.getX() - point2.getX());
}
}
}
------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------HasHeight.java-----------------------------------------------------------
package com.javarush.task.task24.task2404;
public interface HasHeight {
double getHeight();
}
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------HasWidth.java-----------------------------------------------------------
package com.javarush.task.task24.task2404;
public interface HasWidth {
double getWidth();
}
------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------Point.java-------------------------------------------------------------
package com.javarush.task.task24.task2404;
public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
}
------------------------------------------------------------------------------------------------------------------------------
*/