Skip to content

Commit 042222e

Browse files
committed
25.11.2016
1 parent 5fda87a commit 042222e

File tree

19 files changed

+417
-0
lines changed

19 files changed

+417
-0
lines changed

com/javarush/test/ddd/Sol.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public static void main(String[] args) {
3535
// Object obj3 = NULL;
3636
// Object obj4 = UNKNOWN;
3737
Stream<String> num = Arrays.stream("1,5".split(","));
38+
3839
int f = num.mapToInt(Integer::parseInt).sum();
3940
System.out.println(f);
4041
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.javarush.test.level24.lesson04.home01;
2+
3+
public interface HasHeight {
4+
double getHeight();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.javarush.test.level24.lesson04.home01;
2+
3+
public interface HasWidth {
4+
double getWidth();
5+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.javarush.test.level24.lesson04.home01;
2+
3+
public class Point {
4+
private double x;
5+
private double y;
6+
7+
public Point(double x, double y) {
8+
this.x = x;
9+
this.y = y;
10+
}
11+
12+
public double getX() {
13+
return x;
14+
}
15+
16+
public double getY() {
17+
return y;
18+
}
19+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.javarush.test.level24.lesson04.home01;
2+
3+
/* Рефакторинг
4+
В классе Rectangle:
5+
1. Измените методы castToHasHeight и castToHasWidth, чтобы они возвращали HasHeight и HasWidth соответственно.
6+
2. Для этого внутри методов castToHasHeight и castToHasWidth создайте локальные классы - реализации интерфейсов.
7+
3. Переименуйте castToHasHeight в castToHasHeight, castToHasWidth в castToHasWidth (на имени метода нажмите Shift+F6).
8+
4. Уберите наследование интерфейсов в классе Rectangle.
9+
Методы интерфейсов не менять.
10+
*/
11+
public class Solution {
12+
public static void main(String[] args) {
13+
Rectangle rectangle = new Rectangle(1, 2, 3, 4);
14+
System.out.println(getHeight(rectangle.castToHasHeight()));
15+
System.out.println(getWidth(rectangle.castToHasWidth()));
16+
System.out.println(getHeight(rectangle.castToHasHeight()));
17+
System.out.println(getWidth(rectangle.castToHasWidth()));
18+
}
19+
20+
public static double getHeight(HasHeight rectangle) {
21+
return rectangle.getHeight();
22+
}
23+
24+
public static double getWidth(HasWidth rectangle) {
25+
return rectangle.getWidth();
26+
}
27+
28+
public static class Rectangle {
29+
private Point point1;
30+
private Point point2;
31+
32+
public Rectangle(double x1, double y1, double x2, double y2) {
33+
point1 = new Point(x1, y1);
34+
point2 = new Point(x2, y2);
35+
}
36+
37+
public HasHeight castToHasHeight() {
38+
39+
class Height implements HasHeight {
40+
41+
@Override
42+
public double getHeight() {
43+
return Math.abs(point1.getY() - point2.getY());
44+
}
45+
}
46+
47+
return new Height();
48+
}
49+
50+
public HasWidth castToHasWidth() {
51+
class Width implements HasWidth {
52+
53+
@Override
54+
public double getWidth() {
55+
return Math.abs(point1.getX() - point2.getX());
56+
}
57+
}
58+
return new Width();
59+
}
60+
}
61+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.javarush.test.level24.lesson06.home01;
2+
3+
/*
4+
В работе вам иногда будет нужно закастить класс к какому-нибудь интерфейсу (тут Sayable),
5+
который не реализован в текущем классе
6+
*/
7+
public class Cat implements Pet
8+
{
9+
private String name;
10+
11+
public Cat(String name)
12+
{
13+
this.name = name;
14+
}
15+
16+
/**
17+
* Это - механизм адаптирования к другому интерфейсу - Sayable
18+
* Внутри метода toSayable создайте class CatPet, реализующий интерфейс Sayable
19+
* Логика метода say:
20+
* Если i <= 0, то вывести на экран, что кот спит. Пример, "Васька спит."'
21+
* Иначе вывести фразу: "имя_кота говорит мяу!". Пример для i=3, "Васька говорит мяяяу!"
22+
* <p>
23+
* <b>Пример вывода:</b>
24+
* Мурзик спит.
25+
* Васька говорит мяяу!
26+
* Кошка говорит мяяяяяу!
27+
* Мыша пищит.
28+
* Томас говорит мяу!
29+
* <p>
30+
*
31+
* @param i количество букв 'я' в слове мяу
32+
* @return экземпляр класса CatPet
33+
*/
34+
public Sayable toSayable(final int i)
35+
{
36+
37+
class CatPet implements Sayable
38+
{
39+
40+
@Override
41+
public String say()
42+
{
43+
if (i <= 0) return (name + " спит.");
44+
45+
return name + " говорит м" + (new String(new char[i]).replace('\0', 'я')) + "у!";
46+
47+
}
48+
}
49+
50+
return new CatPet();
51+
}
52+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.javarush.test.level24.lesson06.home01;
2+
3+
/*
4+
обратите внимание, как именно Mouse отличается от Cat
5+
Этот класс - привычный для вас.
6+
*/
7+
public class Mouse implements Pet, Sayable {
8+
@Override
9+
public Sayable toSayable(int i) {
10+
return this;
11+
}
12+
13+
@Override
14+
public String say() {
15+
return "Мыша пищит.";
16+
}
17+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.javarush.test.level24.lesson06.home01;
2+
3+
public interface Pet {
4+
public Sayable toSayable(int i);
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.javarush.test.level24.lesson06.home01;
2+
3+
public interface Sayable {
4+
String say();
5+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.javarush.test.level24.lesson06.home01;
2+
3+
import java.util.List;
4+
5+
/* Реализация интерфейса используя локальный класс
6+
В классе Cat реализуйте логику метода toSayable, которая описана в джавадоке.
7+
*/
8+
public class Solution {
9+
public static void main(String[] args) {
10+
List<Pet> pet = Util.getPets();
11+
List<Sayable> pets = Util.convertPetToSayable(pet);
12+
Util.printDialog(pets);
13+
}
14+
}

0 commit comments

Comments
 (0)