diff --git a/resource/files/lesson32_files_1/task1/carCatalog.txt b/resource/files/lesson32_files_1/task1/carCatalog.txt
new file mode 100644
index 000000000..79dedc126
--- /dev/null
+++ b/resource/files/lesson32_files_1/task1/carCatalog.txt
@@ -0,0 +1,10 @@
+RR-111-RR;2015;yellow
+RR-222-RR;2016;yellow
+RR-333-RR;2017;yellow
+RR-444-RR;2018;yellow
+RR-555-RR;2018;yellow
+RR-666-RR;2018;yellow
+RR-777-RR;2018;yellow
+RR-888-RR;2018;yellow
+RR-999-RR;2018;yellow
+RR-000-RR;2018;yellow
diff --git a/resource/files/lesson32_files_1/task2/carCatalog.txt b/resource/files/lesson32_files_1/task2/carCatalog.txt
new file mode 100644
index 000000000..79dedc126
--- /dev/null
+++ b/resource/files/lesson32_files_1/task2/carCatalog.txt
@@ -0,0 +1,10 @@
+RR-111-RR;2015;yellow
+RR-222-RR;2016;yellow
+RR-333-RR;2017;yellow
+RR-444-RR;2018;yellow
+RR-555-RR;2018;yellow
+RR-666-RR;2018;yellow
+RR-777-RR;2018;yellow
+RR-888-RR;2018;yellow
+RR-999-RR;2018;yellow
+RR-000-RR;2018;yellow
diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java
index 41022d7f2..887092c5c 100644
--- a/src/com/walking/lesson14_polymorphism/task1/Main.java
+++ b/src/com/walking/lesson14_polymorphism/task1/Main.java
@@ -1,5 +1,11 @@
package com.walking.lesson14_polymorphism.task1;
+import com.walking.lesson14_polymorphism.task1.model.RegularFigure;
+import com.walking.lesson14_polymorphism.task1.model.Square;
+import com.walking.lesson14_polymorphism.task1.model.Triangle;
+
+import java.util.Scanner;
+
/**
* Реализуйте класс «Правильная фигура».
* Для него создайте классы-наследники «Треугольник» и «Квадрат».
@@ -10,7 +16,41 @@
*
* Обратите внимание, символ '\' в Java необходимо экранировать: '\\'.
*/
+
public class Main {
+ public static final Scanner SCANNER = new Scanner(System.in);
+ public static final String MENU = """
+ 1. Triangle
+ 2. Square
+
+ Make your choice:""";
+
public static void main(String[] args) {
+ int figureType = requireInt(MENU);
+
+ int length = requireInt("Enter a length: ");
+
+ System.out.println(createFigure(figureType, length));
+ }
+
+ private static String createFigure(int figureType, int length) {
+ RegularFigure figure;
+
+ switch (figureType) {
+ case 1:
+ figure = new Triangle(length);
+ break;
+ case 2:
+ figure = new Square(length);
+ break;
+ default:
+ figure = new RegularFigure(length);
+ }
+ return figure.getFigure();
+ }
+
+ public static int requireInt(String message) {
+ System.out.print(message);
+ return SCANNER.nextInt();
}
}
diff --git a/src/com/walking/lesson14_polymorphism/task1/model/RegularFigure.java b/src/com/walking/lesson14_polymorphism/task1/model/RegularFigure.java
new file mode 100644
index 000000000..b1decfefa
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task1/model/RegularFigure.java
@@ -0,0 +1,17 @@
+package com.walking.lesson14_polymorphism.task1.model;
+
+public class RegularFigure {
+ public static final String EMPTY_UNIT = " ";
+ public static final String NEW_LINE_UNIT = "\n";
+
+ public final int length;
+
+ public RegularFigure(int length) {
+ this.length = length;
+ }
+
+ public String getFigure() {
+ String figure = EMPTY_UNIT + NEW_LINE_UNIT;
+ return figure;
+ }
+}
diff --git a/src/com/walking/lesson14_polymorphism/task1/model/Square.java b/src/com/walking/lesson14_polymorphism/task1/model/Square.java
new file mode 100644
index 000000000..3137d5254
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task1/model/Square.java
@@ -0,0 +1,43 @@
+package com.walking.lesson14_polymorphism.task1.model;
+
+public class Square extends RegularFigure {
+ public static final String VERTICAL_LINE_UNIT = "|";
+ public static final String HORIZONTAL_UNIT = "---";
+
+ public Square(int length) {
+ super(length);
+ }
+
+ @Override
+ public String getFigure() {
+ return createHorizontalLine() + createVerticalLines() + createHorizontalLine();
+
+ }
+
+ protected String createHorizontalLine() {
+ String horizontalLine = EMPTY_UNIT;
+ for (int i = 0; i < length; i++) {
+ horizontalLine += HORIZONTAL_UNIT;
+ }
+ horizontalLine += EMPTY_UNIT + NEW_LINE_UNIT;
+ return horizontalLine;
+ }
+
+ protected String createVerticalLines() {
+ String verticalLineUnit = createVerticalLineUnit();
+ String verticalLines = "";
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLineUnit;
+ }
+ return verticalLines;
+ }
+
+ private String createVerticalLineUnit() {
+ String verticalLineUnit = VERTICAL_LINE_UNIT;
+ for (int i = 0; i < length * 3; i++) {
+ verticalLineUnit += EMPTY_UNIT;
+ }
+ verticalLineUnit += VERTICAL_LINE_UNIT + NEW_LINE_UNIT;
+ return verticalLineUnit;
+ }
+}
diff --git a/src/com/walking/lesson14_polymorphism/task1/model/Triangle.java b/src/com/walking/lesson14_polymorphism/task1/model/Triangle.java
new file mode 100644
index 000000000..8b492bc02
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task1/model/Triangle.java
@@ -0,0 +1,50 @@
+package com.walking.lesson14_polymorphism.task1.model;
+
+public class Triangle extends RegularFigure {
+ public static final String LEFT_SIDE_UNIT = "/";
+ public static final String RIGHT_SIDE_UNIT = "\\";
+ public static final String HORIZONTAL_UNIT = "--";
+
+ public Triangle(int length) {
+ super(length);
+ }
+
+ @Override
+ public String getFigure() {
+ return createVerticalLines() + createHorizontalLine();
+ }
+
+ protected String createHorizontalLine() {
+ String horizontalLine = EMPTY_UNIT;
+ for (int i = 0; i < length; i++) {
+ horizontalLine += HORIZONTAL_UNIT;
+ }
+ return horizontalLine + NEW_LINE_UNIT;
+ }
+
+ protected String createVerticalLines() {
+ String verticalLines = "";
+ return createVerticalLines(length, length, verticalLines);
+ }
+
+ private String createVerticalLines(int width, int height, String verticalLines) {
+ for (int l = 0; l < height; l++) {
+ verticalLines += createVerticalLineUnit(width--, l);
+ }
+ return verticalLines;
+ }
+
+ private String createVerticalLineUnit(int width, int height) {
+ String verticalLineUnit = "";
+ for (int before = width; before > 0; before--) {
+ verticalLineUnit += EMPTY_UNIT;
+ }
+ verticalLineUnit += LEFT_SIDE_UNIT;
+ for (int after = height * 2; after > 0; after--) {
+ verticalLineUnit += EMPTY_UNIT;
+ }
+ verticalLineUnit += RIGHT_SIDE_UNIT + NEW_LINE_UNIT;
+
+ return verticalLineUnit;
+ }
+}
diff --git a/src/com/walking/lesson14_polymorphism/task2/Main.java b/src/com/walking/lesson14_polymorphism/task2/Main.java
index f5b029941..e1daec34b 100644
--- a/src/com/walking/lesson14_polymorphism/task2/Main.java
+++ b/src/com/walking/lesson14_polymorphism/task2/Main.java
@@ -1,5 +1,10 @@
package com.walking.lesson14_polymorphism.task2;
+import com.walking.lesson14_polymorphism.task2.model.Animal;
+import com.walking.lesson14_polymorphism.task2.model.Cat;
+import com.walking.lesson14_polymorphism.task2.model.Cow;
+import com.walking.lesson14_polymorphism.task2.model.Dog;
+
/**
* Используя новые знания, упростите реализацию задачи 2 из предыдущего урока:
* ...
@@ -8,7 +13,17 @@
*
* Использовать отдельное поле для хранения выводимой строки — недопустимо:)
*/
+
public class Main {
public static void main(String[] args) {
+ Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog()};
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal x : animals) {
+ x.sound();
+ }
}
}
diff --git a/src/com/walking/lesson14_polymorphism/task2/model/Animal.java b/src/com/walking/lesson14_polymorphism/task2/model/Animal.java
new file mode 100644
index 000000000..46f2041e2
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task2/model/Animal.java
@@ -0,0 +1,8 @@
+package com.walking.lesson14_polymorphism.task2.model;
+
+public class Animal {
+
+ public void sound() {
+ System.out.println("Unknown animal");
+ }
+}
diff --git a/src/com/walking/lesson14_polymorphism/task2/model/Cat.java b/src/com/walking/lesson14_polymorphism/task2/model/Cat.java
new file mode 100644
index 000000000..7e5efe03d
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task2/model/Cat.java
@@ -0,0 +1,9 @@
+package com.walking.lesson14_polymorphism.task2.model;
+
+public class Cat extends Animal {
+
+ @Override
+ public void sound() {
+ System.out.println("meow");
+ }
+}
diff --git a/src/com/walking/lesson14_polymorphism/task2/model/Cow.java b/src/com/walking/lesson14_polymorphism/task2/model/Cow.java
new file mode 100644
index 000000000..933e9777c
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task2/model/Cow.java
@@ -0,0 +1,9 @@
+package com.walking.lesson14_polymorphism.task2.model;
+
+public class Cow extends Animal {
+
+ @Override
+ public void sound() {
+ System.out.println("moo");
+ }
+}
diff --git a/src/com/walking/lesson14_polymorphism/task2/model/Dog.java b/src/com/walking/lesson14_polymorphism/task2/model/Dog.java
new file mode 100644
index 000000000..5f4539bb4
--- /dev/null
+++ b/src/com/walking/lesson14_polymorphism/task2/model/Dog.java
@@ -0,0 +1,9 @@
+package com.walking.lesson14_polymorphism.task2.model;
+
+public class Dog extends Animal {
+
+ @Override
+ public void sound() {
+ System.out.println("woof");
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java
index 94f5a30f7..63e905d60 100644
--- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java
@@ -1,5 +1,11 @@
package com.walking.lesson16_abstract_class_interface.task1_abstract_class;
+import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.EquiliteralShape;
+import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.EquiliteralTriangle;
+import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.Square;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
@@ -7,5 +13,38 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ System.out.print("Enter shape's type:\n 1: Square\n 2: Triangle\n");
+ int shapeType = scanner.nextInt();
+
+ scanner.close();
+
+ if (length < 1 || (shapeType != 1 && shapeType != 2)) {
+ System.out.println("Incorrect input");
+ return;
+ }
+
+ String shapeString = createShapeString(length, shapeType);
+ System.out.println(shapeString);
+ }
+
+ private static String createShapeString(int length, int type) {
+ EquiliteralShape shape;
+
+ switch (type) {
+ case 1:
+ shape = new Square(length);
+ break;
+ case 2:
+ shape = new EquiliteralTriangle(length);
+ break;
+ default:
+ return "Unknown shape";
+ }
+ return shape.createShapeString();
}
}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/EquiliteralShape.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/EquiliteralShape.java
new file mode 100644
index 000000000..b31ba599d
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/EquiliteralShape.java
@@ -0,0 +1,19 @@
+package com.walking.lesson16_abstract_class_interface.task1_abstract_class.model;
+
+public abstract class EquiliteralShape {
+ public static final String EMPTY_ELEMENT = " ";
+ public static final String EMPTY_STRING = "";
+ public static final char NEW_LINE_SYMBOL = '\n';
+
+ protected final int length;
+
+ public EquiliteralShape(int length) {
+ this.length = length;
+ }
+
+ public int getLength() {
+ return length;
+ }
+
+ public abstract String createShapeString();
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/EquiliteralTriangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/EquiliteralTriangle.java
new file mode 100644
index 000000000..898df0485
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/EquiliteralTriangle.java
@@ -0,0 +1,35 @@
+package com.walking.lesson16_abstract_class_interface.task1_abstract_class.model;
+
+public class EquiliteralTriangle extends EquiliteralShape {
+ public static final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ public static final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ public static final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+
+ public EquiliteralTriangle(int length) {
+ super(length);
+ }
+
+ @Override
+ public String createShapeString() {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Square.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Square.java
new file mode 100644
index 000000000..8db44feb4
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Square.java
@@ -0,0 +1,54 @@
+package com.walking.lesson16_abstract_class_interface.task1_abstract_class.model;
+
+public class Square extends EquiliteralShape {
+ public static final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ public static final String RECTANGLE_VERTICAL_ELEMENT= "-";
+
+ public Square(int length) {
+ super(length);
+ }
+
+ @Override
+ public String createShapeString() {
+ String horizontalLine = createHorizontalLine();
+ String verticalLines = createVerticalLines();
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ private String createHorizontalLine() {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines() {
+ String verticalLinesUnit = getVerticalLinesUnit();
+
+ String verticalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLinesUnit;
+ }
+
+ return verticalLines;
+ }
+
+ private String getVerticalLinesUnit() {
+ String verticalLinesUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLinesUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLinesUnit;
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java
index 75935142a..1bb64fbe9 100644
--- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java
@@ -1,5 +1,10 @@
package com.walking.lesson16_abstract_class_interface.task1_interface;
+import com.walking.lesson16_abstract_class_interface.task1_interface.model.EquilateralShape;
+import com.walking.lesson16_abstract_class_interface.task1_interface.model.EquilateralTriangle;
+import com.walking.lesson16_abstract_class_interface.task1_interface.model.Square;
+
+import java.util.Scanner;
/**
* Реализуйте задачу
@@ -8,5 +13,40 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ System.out.print("Enter shape's type:\n 1: Square\n 2: Triangle\n");
+ int shapeType = scanner.nextInt();
+
+ scanner.close();
+
+ if (length < 1 || (shapeType != 1 && shapeType != 2)) {
+ System.out.println("Incorrect input");
+ return;
+ }
+
+ String shapeString = createShapeString(length, shapeType);
+ System.out.println(shapeString);
+
+ }
+
+ private static String createShapeString(int length, int type) {
+ EquilateralShape shape;
+
+ switch (type) {
+ case 1:
+ shape = new Square(length);
+ break;
+ case 2:
+ shape = new EquilateralTriangle(length);
+ break;
+ default:
+ return "Unknown shape";
+ }
+
+ return shape.createShapeString();
}
}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/EquilateralShape.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/EquilateralShape.java
new file mode 100644
index 000000000..01ef262dc
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/EquilateralShape.java
@@ -0,0 +1,11 @@
+package com.walking.lesson16_abstract_class_interface.task1_interface.model;
+
+public interface EquilateralShape {
+ String EMPTY_ELEMENT = " ";
+ String EMPTY_STRING = "";
+ char NEW_LINE_SYMBOL = '\n';
+
+ String createShapeString();
+
+ int getLength();
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/EquilateralTriangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/EquilateralTriangle.java
new file mode 100644
index 000000000..4c1a08cb2
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/EquilateralTriangle.java
@@ -0,0 +1,42 @@
+package com.walking.lesson16_abstract_class_interface.task1_interface.model;
+
+public class EquilateralTriangle implements EquilateralShape {
+ public static final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ public static final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ public static final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+
+ private final int length;
+
+ public EquilateralTriangle(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String createShapeString() {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Square.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Square.java
new file mode 100644
index 000000000..dea5855b0
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Square.java
@@ -0,0 +1,61 @@
+package com.walking.lesson16_abstract_class_interface.task1_interface.model;
+
+public class Square implements EquilateralShape {
+ public static final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ public static final String RECTANGLE_VERTICAL_ELEMENT= "-";
+
+ private final int length;
+
+ public Square(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String createShapeString() {
+ String horizontalLine = createHorizontalLine();
+ String verticalLines = createVerticalLines();
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+
+ private String createHorizontalLine() {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines() {
+ String verticalLinesUnit = getVerticalLinesUnit();
+
+ String verticalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLinesUnit;
+ }
+
+ return verticalLines;
+ }
+
+ private String getVerticalLinesUnit() {
+ String verticalLinesUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLinesUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLinesUnit;
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java
index e79f80e2e..0cc90ab66 100644
--- a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java
+++ b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java
@@ -1,11 +1,45 @@
package com.walking.lesson16_abstract_class_interface.task2;
+import com.walking.lesson16_abstract_class_interface.task2.printer.*;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
* с использованием интерфейсов. Каждая реализация должна возвращать свое сообщение.
*/
public class Main {
+ public static final Scanner scanner = new Scanner(System.in);
+
public static void main(String[] args) {
+
+ String s = requireString("Enter String: ");
+ scanner.close();
+
+ createAnswer(s).getAnswer();
+ }
+
+ private static String requireString(String message) {
+ System.out.print(message);
+ return scanner.nextLine();
+ }
+
+ public static AnswerCreator createAnswer(String question) {
+
+ switch (question) {
+ case "Hi":
+ return new Hi();
+ case "How are you":
+ return new HowAreYou();
+ case "Bye":
+ return new Bye();
+ default:
+ return new UnknownAnswer();
+
+ }
}
}
+// Не подсматривал - всё сам)
+// Но возник вопрос% Мы должны переопределть все методы Интерфейса,
+// кроме помеченных как static и default, верно?
\ No newline at end of file
diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/AnswerCreator.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/AnswerCreator.java
new file mode 100644
index 000000000..fca4d3af8
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/AnswerCreator.java
@@ -0,0 +1,6 @@
+package com.walking.lesson16_abstract_class_interface.task2.printer;
+
+public interface AnswerCreator {
+
+ void getAnswer();
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Bye.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Bye.java
new file mode 100644
index 000000000..72d300a87
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Bye.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task2.printer;
+
+public class Bye implements AnswerCreator {
+ @Override
+ public void getAnswer() {
+ System.out.println("Good bye");
+ }
+}
\ No newline at end of file
diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hi.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hi.java
new file mode 100644
index 000000000..f2764c0d3
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hi.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task2.printer;
+
+public class Hi implements AnswerCreator {
+ @Override
+ public void getAnswer() {
+ System.out.println("Hello");
+ }
+}
\ No newline at end of file
diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/HowAreYou.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/HowAreYou.java
new file mode 100644
index 000000000..c1a0702a3
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/HowAreYou.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task2.printer;
+
+public class HowAreYou implements AnswerCreator {
+ @Override
+ public void getAnswer() {
+ System.out.println("How are you doing?");
+ }
+}
\ No newline at end of file
diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/UnknownAnswer.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/UnknownAnswer.java
new file mode 100644
index 000000000..4af0dd819
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/UnknownAnswer.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task2.printer;
+
+public class UnknownAnswer implements AnswerCreator {
+ @Override
+ public void getAnswer() {
+ System.out.println("Unknown answer");
+ }
+}
\ No newline at end of file
diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Main.java b/src/com/walking/lesson16_abstract_class_interface/task3/Main.java
index f66ab8489..b67555b90 100644
--- a/src/com/walking/lesson16_abstract_class_interface/task3/Main.java
+++ b/src/com/walking/lesson16_abstract_class_interface/task3/Main.java
@@ -1,6 +1,11 @@
package com.walking.lesson16_abstract_class_interface.task3;
+import com.walking.lesson16_abstract_class_interface.task3.model.Animal;
+import com.walking.lesson16_abstract_class_interface.task3.model.Cat;
+import com.walking.lesson16_abstract_class_interface.task3.model.Cow;
+import com.walking.lesson16_abstract_class_interface.task3.model.Dog;
+
/**
* Реализуйте любую задачу из уроков о наследовании или полиморфизме с использованием новых знаний.
* Выбирайте инструмент с умом.
@@ -10,5 +15,14 @@
*/
public class Main {
public static void main(String[] args) {
+ Animal[] animals = new Animal[]{new Cow(), new Cat(), new Dog()};
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal animal : animals) {
+ animal.sound();
+ }
}
}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/Animal.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/Animal.java
new file mode 100644
index 000000000..7097f4d06
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/Animal.java
@@ -0,0 +1,6 @@
+package com.walking.lesson16_abstract_class_interface.task3.model;
+
+public abstract class Animal {
+
+ public abstract void sound();
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/Cat.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/Cat.java
new file mode 100644
index 000000000..0acf0bbbf
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/Cat.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task3.model;
+
+public class Cat extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("meow");
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/Cow.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/Cow.java
new file mode 100644
index 000000000..6da237f8f
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/Cow.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task3.model;
+
+public class Cow extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("moo");
+ }
+}
diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/Dog.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/Dog.java
new file mode 100644
index 000000000..d38e91d69
--- /dev/null
+++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/Dog.java
@@ -0,0 +1,8 @@
+package com.walking.lesson16_abstract_class_interface.task3.model;
+
+public class Dog extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("woof");
+ }
+}
diff --git a/src/com/walking/lesson17_enum/task1/Main.java b/src/com/walking/lesson17_enum/task1/Main.java
index 7fc684202..c96d7918d 100644
--- a/src/com/walking/lesson17_enum/task1/Main.java
+++ b/src/com/walking/lesson17_enum/task1/Main.java
@@ -1,5 +1,9 @@
package com.walking.lesson17_enum.task1;
+import com.walking.lesson17_enum.task1.answer.Report;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
@@ -8,5 +12,13 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter a question: ");
+ String question = scanner.nextLine();
+
+ scanner.close();
+
+ System.out.println(Report.toAnswer(question));
}
}
diff --git a/src/com/walking/lesson17_enum/task1/answer/Report.java b/src/com/walking/lesson17_enum/task1/answer/Report.java
new file mode 100644
index 000000000..291f93b0b
--- /dev/null
+++ b/src/com/walking/lesson17_enum/task1/answer/Report.java
@@ -0,0 +1,33 @@
+package com.walking.lesson17_enum.task1.answer;
+
+public enum Report {
+ HI("Hello", "Hi"),
+ HOW_ARE_YOU("How are you doing?", "How are you"),
+ BYE("Good bye", "Bye"),
+ UNKNOWN_GREETING("Unknown phrase", "some question");
+
+ private final String answer;
+ private final String message;
+
+ Report(String answer, String message) {
+ this.answer = answer;
+ this.message = message;
+ }
+
+ public String getAnswer() {
+ return answer;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public static String toAnswer(String phrase) {
+ for (Report x : values()) {
+ if (phrase.equals(x.getMessage())) {
+ return x.getAnswer();
+ }
+ }
+ return UNKNOWN_GREETING.getAnswer();
+ }
+}
diff --git a/src/com/walking/lesson17_enum/task2/Main.java b/src/com/walking/lesson17_enum/task2/Main.java
index 293ca15c9..6727caf25 100644
--- a/src/com/walking/lesson17_enum/task2/Main.java
+++ b/src/com/walking/lesson17_enum/task2/Main.java
@@ -1,5 +1,7 @@
package com.walking.lesson17_enum.task2;
+import com.walking.lesson17_enum.task2.model.Animal;
+
/**
* Реализуйте задачу
* ...
@@ -7,5 +9,14 @@
*/
public class Main {
public static void main(String[] args) {
+ Animal[] animals = Animal.values();
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal animal : animals) {
+ animal.sound();
+ }
}
}
diff --git a/src/com/walking/lesson17_enum/task2/model/Animal.java b/src/com/walking/lesson17_enum/task2/model/Animal.java
new file mode 100644
index 000000000..321dd7ac0
--- /dev/null
+++ b/src/com/walking/lesson17_enum/task2/model/Animal.java
@@ -0,0 +1,24 @@
+package com.walking.lesson17_enum.task2.model;
+
+public enum Animal {
+ CAT {
+ @Override
+ public void sound() {
+ System.out.println("meow");
+ }
+ },
+ DOG {
+ @Override
+ public void sound() {
+ System.out.println("woof");
+ }
+ },
+ COW {
+ @Override
+ public void sound() {
+ System.out.println("moo");
+ }
+ };
+
+ public abstract void sound();
+}
diff --git a/src/com/walking/lesson17_enum/task3/Main.java b/src/com/walking/lesson17_enum/task3/Main.java
index fb541e003..7bd8b7134 100644
--- a/src/com/walking/lesson17_enum/task3/Main.java
+++ b/src/com/walking/lesson17_enum/task3/Main.java
@@ -1,5 +1,9 @@
package com.walking.lesson17_enum.task3;
+import com.walking.lesson17_enum.task3.model.EquilateralShape;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
@@ -7,5 +11,29 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's type:\n 0: Triangle \n 1: Square\n ");
+ int shapeType = scanner.nextInt();
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ if ((shapeType != 0 && shapeType != 1)) {
+ System.out.println("Incorrect input");
+ return;
+ }
+
+ printShape(shapeType, length);
+ }
+
+ private static void printShape(int type, int length) {
+
+ for (EquilateralShape x : EquilateralShape.values()) {
+ if (type == x.ordinal()) {
+ System.out.println(x.createShapeString(length));
+ }
+
+ }
}
}
diff --git a/src/com/walking/lesson17_enum/task3/model/EquilateralShape.java b/src/com/walking/lesson17_enum/task3/model/EquilateralShape.java
new file mode 100644
index 000000000..d43fa2ef8
--- /dev/null
+++ b/src/com/walking/lesson17_enum/task3/model/EquilateralShape.java
@@ -0,0 +1,87 @@
+package com.walking.lesson17_enum.task3.model;
+
+public enum EquilateralShape {
+ EQUILATERAL_TRIANGLE {
+ final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+
+ @Override
+ public String createShapeString(int length) {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+ },
+ SQUARE {
+ final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ final String RECTANGLE_VERTICAL_ELEMENT = "-";
+
+ @Override
+ public String createShapeString(int length) {
+ String horizontalLine = createHorizontalLine(length);
+ String verticalLines = createVerticalLines(length);
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ private String createHorizontalLine(int length) {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines(int length) {
+ String verticalLinesUnit = getVerticalLinesUnit(length);
+
+ String verticalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLinesUnit;
+ }
+
+ return verticalLines;
+ }
+
+ private String getVerticalLinesUnit(int length) {
+ String verticalLinesUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLinesUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLinesUnit;
+ }
+ };
+
+ public static final String EMPTY_ELEMENT = " ";
+ public static final String EMPTY_STRING = "";
+ public static final char NEW_LINE_SYMBOL = '\n';
+
+ public abstract String createShapeString(int length);
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/Task1/Main.java b/src/com/walking/lesson18_instanceof_getClass/Task1/Main.java
deleted file mode 100644
index 720820534..000000000
--- a/src/com/walking/lesson18_instanceof_getClass/Task1/Main.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.walking.lesson18_instanceof_getClass.Task1;
-
-public class Main {
- public static void main(String[] args) {
- }
-}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java
index 1993f716e..7cdad7b49 100644
--- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java
@@ -1,5 +1,10 @@
package com.walking.lesson18_instanceof_getClass.task1_getClass;
+import com.walking.lesson18_instanceof_getClass.task1_getClass.model.Animal;
+import com.walking.lesson18_instanceof_getClass.task1_getClass.model.Cat;
+import com.walking.lesson18_instanceof_getClass.task1_getClass.model.Cow;
+import com.walking.lesson18_instanceof_getClass.task1_getClass.model.Dog;
+
/**
* Реализовать задачу
* ...
@@ -7,5 +12,26 @@
*/
public class Main {
public static void main(String[] args) {
+ Animal[] animals = new Animal[]{new Cow(), new Cat(), new Dog()};
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal animal : animals) {
+ sound(animal);
+ }
+ }
+
+ private static void sound(Animal animal) {
+ if (animal.getClass().equals(Cow.class)) {
+ ((Cow) animal).moo();
+ } else if (animal.getClass().equals(Cat.class)) {
+ ((Cat) animal).meow();
+ } else if (animal.getClass().equals(Dog.class)) {
+ ((Dog) animal).woof();
+ } else {
+ System.out.println("Unknown animal");
+ }
}
}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Animal.java
new file mode 100644
index 000000000..fb01464af
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Animal.java
@@ -0,0 +1,16 @@
+package com.walking.lesson18_instanceof_getClass.task1_getClass.model;
+
+public class Animal {
+ // Выполнение доп. условия. Если методы наследников лишь обращаются к sound() -
+// нам необходимо делать вывод звука животного в этом классе. Значит, звук животного
+// нужно куда-то записать
+ private final String sound;
+
+ protected Animal(String sound) {
+ this.sound = sound;
+ }
+
+ protected void sound() {
+ System.out.println(sound);
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cat.java
new file mode 100644
index 000000000..175ec9fd4
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cat.java
@@ -0,0 +1,13 @@
+package com.walking.lesson18_instanceof_getClass.task1_getClass.model;
+
+public class Cat extends Animal {
+ // Передаем параметры в super внутри конструктора, а не принимая их в параметры Cat(),
+// чтобы избежать ошибочного поведения при использовании этого класса
+ public Cat() {
+ super("meow");
+ }
+
+ public void meow() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cow.java
new file mode 100644
index 000000000..0d6e746bb
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cow.java
@@ -0,0 +1,13 @@
+package com.walking.lesson18_instanceof_getClass.task1_getClass.model;
+
+public class Cow extends Animal {
+ // Передаем параметры в super внутри конструктора, а не принимая их в параметры Cat(),
+// чтобы избежать ошибочного поведения при использовании этого класса
+ public Cow() {
+ super("moo");
+ }
+
+ public void moo() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Dog.java
new file mode 100644
index 000000000..98e68be92
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Dog.java
@@ -0,0 +1,13 @@
+package com.walking.lesson18_instanceof_getClass.task1_getClass.model;
+
+public class Dog extends Animal {
+ // Передаем параметры в super внутри конструктора, а не принимая их в параметры Cat(),
+// чтобы избежать ошибочного поведения при использовании этого класса
+ public Dog() {
+ super("woof");
+ }
+
+ public void woof() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java
index 4f267a04b..d7660ca7e 100644
--- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java
@@ -1,5 +1,11 @@
package com.walking.lesson18_instanceof_getClass.task1_instanceof;
+
+import com.walking.lesson18_instanceof_getClass.task1_instanceof.model.Animal;
+import com.walking.lesson18_instanceof_getClass.task1_instanceof.model.Cat;
+import com.walking.lesson18_instanceof_getClass.task1_instanceof.model.Cow;
+import com.walking.lesson18_instanceof_getClass.task1_instanceof.model.Dog;
+
/**
* Реализовать задачу
* ...
@@ -7,5 +13,27 @@
*/
public class Main {
public static void main(String[] args) {
+ Animal[] animals = new Animal[]{new Cow(), new Cat(), new Dog()};
+
+ soundAll(animals);
+
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal animal : animals) {
+ sound(animal);
+ }
+ }
+
+ private static void sound(Animal animal) {
+ if (animal instanceof Cat cat) {
+ cat.meow();
+ } else if (animal instanceof Dog dog) {
+ dog.woof();
+ } else if (animal instanceof Cow cow) {
+ cow.moo();
+ } else {
+ System.out.println("Unknown animal");
+ }
}
}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Animal.java
new file mode 100644
index 000000000..4800543a1
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Animal.java
@@ -0,0 +1,16 @@
+package com.walking.lesson18_instanceof_getClass.task1_instanceof.model;
+
+public class Animal {
+ // Выполнение доп. условия. Если методы наследников лишь обращаются к sound() -
+// нам необходимо делать вывод звука животного в этом классе. Значит, звук животного
+// нужно куда-то записать
+ private final String sound;
+
+ protected Animal(String sound) {
+ this.sound = sound;
+ }
+
+ protected void sound() {
+ System.out.println(sound);
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cat.java
new file mode 100644
index 000000000..dd012fc49
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cat.java
@@ -0,0 +1,13 @@
+package com.walking.lesson18_instanceof_getClass.task1_instanceof.model;
+
+public class Cat extends Animal {
+ // Передаем параметры в super внутри конструктора, а не принимая их в параметры Cat(),
+// чтобы избежать ошибочного поведения при использовании этого класса
+ public Cat() {
+ super("meow");
+ }
+
+ public void meow() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cow.java
new file mode 100644
index 000000000..819564917
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cow.java
@@ -0,0 +1,13 @@
+package com.walking.lesson18_instanceof_getClass.task1_instanceof.model;
+
+public class Cow extends Animal {
+ // Передаем параметры в super внутри конструктора, а не принимая их в параметры Cat(),
+// чтобы избежать ошибочного поведения при использовании этого класса
+ public Cow() {
+ super("moo");
+ }
+
+ public void moo() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Dog.java
new file mode 100644
index 000000000..c4e51a628
--- /dev/null
+++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Dog.java
@@ -0,0 +1,13 @@
+package com.walking.lesson18_instanceof_getClass.task1_instanceof.model;
+
+public class Dog extends Animal {
+ // Передаем параметры в super внутри конструктора, а не принимая их в параметры Cat(),
+// чтобы избежать ошибочного поведения при использовании этого класса
+ public Dog() {
+ super("woof");
+ }
+
+ public void woof() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java
index c59fa62d4..efcb9ee09 100644
--- a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java
+++ b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java
@@ -1,5 +1,12 @@
package com.walking.lesson20_exceptions.task1_catchException;
+import com.walking.lesson20_exceptions.task1_catchException.model.File;
+import com.walking.lesson20_exceptions.task1_catchException.model.InformationType;
+import com.walking.lesson20_exceptions.task1_catchException.service.FileService;
+
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+
/**
* Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов.
*
@@ -15,5 +22,26 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ FileService fileService = new FileService(initFiles());
+
+ System.out.println("Enter a file's name: ");
+ String name = scanner.nextLine();
+
+ try {
+ System.out.println(fileService.findFile(name).toString());
+ } catch (FileNotFoundException e) {
+ System.out.println("File with this name not found");
+ }
+ }
+
+ private static File[] initFiles() {
+ File file1 = new File("text", 140, InformationType.TXT);
+ File file2 = new File("image", 140, InformationType.JPG);
+ File file3 = new File("audio", 140, InformationType.MP3);
+ File file4 = new File("video", 140, InformationType.MP4);
+
+ return new File[]{file1, file2, file3, file4};
}
}
diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/model/File.java b/src/com/walking/lesson20_exceptions/task1_catchException/model/File.java
new file mode 100644
index 000000000..6ae2d49b2
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task1_catchException/model/File.java
@@ -0,0 +1,42 @@
+package com.walking.lesson20_exceptions.task1_catchException.model;
+
+public class File {
+ private String name;
+ private int size;
+ private InformationType type;
+
+ public File(String name, int size, InformationType type) {
+ this.name = name;
+ this.size = size;
+ this.type = type;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setSize(int size) {
+ this.size = size;
+ }
+
+ public InformationType getType() {
+ return type;
+ }
+
+ public void setType(InformationType type) {
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "File %s%s size: %d".formatted(getName(), type.getType(), getSize());
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/model/InformationType.java b/src/com/walking/lesson20_exceptions/task1_catchException/model/InformationType.java
new file mode 100644
index 000000000..590196b82
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task1_catchException/model/InformationType.java
@@ -0,0 +1,18 @@
+package com.walking.lesson20_exceptions.task1_catchException.model;
+
+public enum InformationType {
+ TXT(".txt"),
+ JPG(".jpg"),
+ MP3(".mp3"),
+ MP4(".mp4");
+
+ private final String type;
+
+ InformationType(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/service/FileService.java b/src/com/walking/lesson20_exceptions/task1_catchException/service/FileService.java
new file mode 100644
index 000000000..4fe74f6dc
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task1_catchException/service/FileService.java
@@ -0,0 +1,23 @@
+package com.walking.lesson20_exceptions.task1_catchException.service;
+
+import com.walking.lesson20_exceptions.task1_catchException.model.File;
+
+import java.io.FileNotFoundException;
+
+public class FileService {
+ private final File[] files;
+
+ public FileService(File[] files) {
+ this.files = files;
+ }
+
+ public File findFile(String name) throws FileNotFoundException {
+ for (File file : files) {
+ if (file.getName().equals(name)) {
+ return file;
+ // Всё сделал сам, но не додумался в методе поменять throw и return местами в медоте(
+ }
+ }
+ throw new FileNotFoundException("File not found");
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java
index 368d583c8..fde2977ca 100644
--- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java
+++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java
@@ -1,5 +1,12 @@
package com.walking.lesson20_exceptions.task1_throwsException;
+import com.walking.lesson20_exceptions.task1_throwsException.model.File;
+import com.walking.lesson20_exceptions.task1_throwsException.model.InformationType;
+import com.walking.lesson20_exceptions.task1_throwsException.service.FileService;
+
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+
/**
* Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов.
*
@@ -16,6 +23,31 @@
* Подсказка: throws можно использовать в том числе в main().
*/
public class Main {
- public static void main(String[] args) {
+ public static void main(String[] args) throws FileNotFoundException {
+ Scanner scanner = new Scanner(System.in);
+
+ FileService fileService = new FileService(initFiles());
+
+ System.out.println("Enter a file's name: ");
+ String name = scanner.nextLine();
+
+ System.out.println(fileService.findFile(name).toString());
+
+
+ // Очень сильно прошу объяснить разницу между обычной "Всплывающей" ошибкой
+ // если код написан неправильно, но его удалось запустить,
+ // и этой итеррацией задачи, а именно всплывающем сообщении,
+ // ибо процесс завершается с ОДНИМ выходным кодом,
+ // а не НУЛЁМ, как это обычно бывает при верном решении задач.
+ // при том, что я запускал
+ }
+
+ private static File[] initFiles() {
+ File file1 = new File("text", 140, InformationType.TXT);
+ File file2 = new File("image", 140, InformationType.JPG);
+ File file3 = new File("audio", 140, InformationType.MP3);
+ File file4 = new File("video", 140, InformationType.MP4);
+
+ return new File[]{file1, file2, file3, file4};
}
}
diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/model/File.java b/src/com/walking/lesson20_exceptions/task1_throwsException/model/File.java
new file mode 100644
index 000000000..109d38c6d
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task1_throwsException/model/File.java
@@ -0,0 +1,42 @@
+package com.walking.lesson20_exceptions.task1_throwsException.model;
+
+public class File {
+ private String name;
+ private int size;
+ private InformationType type;
+
+ public File(String name, int size, InformationType type) {
+ this.name = name;
+ this.size = size;
+ this.type = type;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setSize(int size) {
+ this.size = size;
+ }
+
+ public InformationType getType() {
+ return type;
+ }
+
+ public void setType(InformationType type) {
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "File %s%s size: %d".formatted(getName(), type.getType(), getSize());
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/model/InformationType.java b/src/com/walking/lesson20_exceptions/task1_throwsException/model/InformationType.java
new file mode 100644
index 000000000..e5102b3c1
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task1_throwsException/model/InformationType.java
@@ -0,0 +1,18 @@
+package com.walking.lesson20_exceptions.task1_throwsException.model;
+
+public enum InformationType {
+ TXT(".txt"),
+ JPG(".jpg"),
+ MP3(".mp3"),
+ MP4(".mp4");
+
+ private final String type;
+
+ InformationType(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java
new file mode 100644
index 000000000..6f5d5875a
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java
@@ -0,0 +1,23 @@
+package com.walking.lesson20_exceptions.task1_throwsException.service;
+
+import com.walking.lesson20_exceptions.task1_throwsException.model.File;
+
+import java.io.FileNotFoundException;
+
+public class FileService {
+ private final File[] files;
+
+ public FileService(File[] files) {
+ this.files = files;
+ }
+
+ public File findFile(String name) throws FileNotFoundException {
+ for (File x : files) {
+ if (x.getName().equals(name)) {
+ return x;
+ // Всё сделал сам, но не додумался в методе поменять throw и return местами в медоте(
+ }
+ }
+ throw new FileNotFoundException("File not found");
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task2/InvalidValidationException.java b/src/com/walking/lesson20_exceptions/task2/InvalidValidationException.java
new file mode 100644
index 000000000..a956f02a1
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task2/InvalidValidationException.java
@@ -0,0 +1,13 @@
+package com.walking.lesson20_exceptions.task2;
+
+public class InvalidValidationException extends RuntimeException {
+
+ public InvalidValidationException(String message) {
+ super(message);
+ }
+
+ @Override
+ public String toString() {
+ return super.getMessage();
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task2/Main.java b/src/com/walking/lesson20_exceptions/task2/Main.java
index cccb443bf..a95976d5e 100644
--- a/src/com/walking/lesson20_exceptions/task2/Main.java
+++ b/src/com/walking/lesson20_exceptions/task2/Main.java
@@ -1,5 +1,11 @@
package com.walking.lesson20_exceptions.task2;
+import com.walking.lesson20_exceptions.task2.model.EquilateralShape;
+import com.walking.lesson20_exceptions.task2.model.EquilateralTriangle;
+import com.walking.lesson20_exceptions.task2.model.Square;
+
+import java.util.Scanner;
+
/**
* Реализуйте любой из вариантов Задачи 1 в уроке 16.
* При некорректном вводе с клавиатуры выбрасывайте собственное исключение InputValidationException.
@@ -9,5 +15,42 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ if (length < 1) {
+ throw new InvalidValidationException("Length can't be less than 1!");
+ }
+
+ System.out.println("Enter shape's type:\n 1: Square\n 2: Triangle\n");
+ int shapeType = scanner.nextInt();
+
+ String shapeString = createShapeString(length, shapeType);
+ System.out.println(shapeString);
+ }
+
+ private static String createShapeString(int length, int type) {
+ // почему если здесь не указывать throws, код все равно работает корректно???
+
+ if (length < 1) {
+ throw new InvalidValidationException("Length can't be less than 1");
+ }
+
+ EquilateralShape shape;
+
+ switch (type) {
+ case 1:
+ shape = new Square(length);
+ break;
+ case 2:
+ shape = new EquilateralTriangle(length);
+ break;
+ default:
+ throw new InvalidValidationException("Unknown shape type");
+ }
+
+ return shape.createShapeString();
}
}
diff --git a/src/com/walking/lesson20_exceptions/task2/model/EquilateralShape.java b/src/com/walking/lesson20_exceptions/task2/model/EquilateralShape.java
new file mode 100644
index 000000000..4d39c856c
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task2/model/EquilateralShape.java
@@ -0,0 +1,19 @@
+package com.walking.lesson20_exceptions.task2.model;
+
+public abstract class EquilateralShape {
+ public static final String EMPTY_ELEMENT = " ";
+ public static final String EMPTY_STRING = "";
+ public static final String NEW_LINE_SYMBOL = "\n";
+
+ protected final int length;
+
+ public EquilateralShape(int length) {
+ this.length = length;
+ }
+
+ public int getLength() {
+ return length;
+ }
+
+ public abstract String createShapeString();
+}
diff --git a/src/com/walking/lesson20_exceptions/task2/model/EquilateralTriangle.java b/src/com/walking/lesson20_exceptions/task2/model/EquilateralTriangle.java
new file mode 100644
index 000000000..13b9eece1
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task2/model/EquilateralTriangle.java
@@ -0,0 +1,35 @@
+package com.walking.lesson20_exceptions.task2.model;
+
+public class EquilateralTriangle extends EquilateralShape {
+ public static final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ public static final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ public static final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+
+ public EquilateralTriangle(int length) {
+ super(length);
+ }
+
+ @Override
+ public String createShapeString() {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task2/model/Square.java b/src/com/walking/lesson20_exceptions/task2/model/Square.java
new file mode 100644
index 000000000..52d39af20
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task2/model/Square.java
@@ -0,0 +1,54 @@
+package com.walking.lesson20_exceptions.task2.model;
+
+public class Square extends EquilateralShape {
+ public static final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ public static final String RECTANGLE_VERTICAL_ELEMENT = "-";
+
+ public Square(int length) {
+ super(length);
+ }
+
+ @Override
+ public String createShapeString() {
+ String horizontalLine = createHorizontalLine();
+ String verticalLines = createVerticalLines();
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ private String createHorizontalLine() {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines() {
+ String verticalLinesUnit = getVerticalLinesUnit();
+
+ String vertcalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ vertcalLines += verticalLinesUnit;
+ }
+
+ return vertcalLines;
+ }
+
+ private String getVerticalLinesUnit() {
+ String verticalLineUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLineUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLineUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLineUnit;
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/Main.java b/src/com/walking/lesson20_exceptions/task3/Main.java
index 3b81b191c..07a0828c6 100644
--- a/src/com/walking/lesson20_exceptions/task3/Main.java
+++ b/src/com/walking/lesson20_exceptions/task3/Main.java
@@ -1,5 +1,9 @@
package com.walking.lesson20_exceptions.task3;
+import com.walking.lesson20_exceptions.task3.exception.ArrayValidationException;
+import com.walking.lesson20_exceptions.task3.exception.UnknownAnimalException;
+import com.walking.lesson20_exceptions.task3.model.*;
+
/**
* Реализуйте любой из вариантов задачи в уроке 18.
* Для ситуации, когда тип животного неизвестен, выбрасывайте собственное исключение UnknownAnimalException.
@@ -11,5 +15,30 @@
*/
public class Main {
public static void main(String[] args) {
+ Animal[] animals = new Animal[]{new Cow(), new Cat(), new Dog(), new Bee() };
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) throws ArrayValidationException {
+ for (int i = 0; i < animals.length; i++) {
+ if (animals[i] == null) {
+ throw new ArrayValidationException("Index " + i + " is null");
+ }
+
+ sound(animals[i]);
+ }
+ }
+
+ private static void sound(Animal animal) {
+ if (animal instanceof Cat cat) {
+ cat.meow();
+ } else if (animal instanceof Dog dog) {
+ dog.woof();
+ } else if (animal instanceof Cow cow) {
+ cow.moo();
+ } else {
+ throw new UnknownAnimalException("Unknown animal");
+ }
}
}
diff --git a/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java b/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java
new file mode 100644
index 000000000..c0f3c4ff9
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java
@@ -0,0 +1,7 @@
+package com.walking.lesson20_exceptions.task3.exception;
+
+public class ArrayValidationException extends RuntimeException {
+ public ArrayValidationException(String message) {
+ super(message);
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java b/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java
new file mode 100644
index 000000000..598d792c0
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java
@@ -0,0 +1,8 @@
+package com.walking.lesson20_exceptions.task3.exception;
+
+public class UnknownAnimalException extends RuntimeException {
+ public UnknownAnimalException(String message) {
+ super(message);
+ }
+
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/model/Animal.java b/src/com/walking/lesson20_exceptions/task3/model/Animal.java
new file mode 100644
index 000000000..9f4406331
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/model/Animal.java
@@ -0,0 +1,13 @@
+package com.walking.lesson20_exceptions.task3.model;
+
+public class Animal {
+ private final String sound;
+
+ protected Animal(String sound) {
+ this.sound = sound;
+ }
+
+ protected void sound() {
+ System.out.println(sound);
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/model/Bee.java b/src/com/walking/lesson20_exceptions/task3/model/Bee.java
new file mode 100644
index 000000000..737c9dee7
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/model/Bee.java
@@ -0,0 +1,11 @@
+package com.walking.lesson20_exceptions.task3.model;
+
+public class Bee extends Animal {
+ public Bee() {
+ super("bzzz");
+ }
+
+ public void bzzz() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/model/Cat.java b/src/com/walking/lesson20_exceptions/task3/model/Cat.java
new file mode 100644
index 000000000..e082e23c5
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/model/Cat.java
@@ -0,0 +1,11 @@
+package com.walking.lesson20_exceptions.task3.model;
+
+public class Cat extends Animal {
+ public Cat() {
+ super("meow");
+ }
+
+ public void meow() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/model/Cow.java b/src/com/walking/lesson20_exceptions/task3/model/Cow.java
new file mode 100644
index 000000000..ef3a67264
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/model/Cow.java
@@ -0,0 +1,11 @@
+package com.walking.lesson20_exceptions.task3.model;
+
+public class Cow extends Animal {
+ public Cow() {
+ super("moo");
+ }
+
+ public void moo() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson20_exceptions/task3/model/Dog.java b/src/com/walking/lesson20_exceptions/task3/model/Dog.java
new file mode 100644
index 000000000..bccc13451
--- /dev/null
+++ b/src/com/walking/lesson20_exceptions/task3/model/Dog.java
@@ -0,0 +1,11 @@
+package com.walking.lesson20_exceptions.task3.model;
+
+public class Dog extends Animal {
+ public Dog() {
+ super("woof");
+ }
+
+ public void woof() {
+ sound();
+ }
+}
diff --git a/src/com/walking/lesson21_immutable_object/CarNotFoundException.java b/src/com/walking/lesson21_immutable_object/CarNotFoundException.java
new file mode 100644
index 000000000..9b1c2be2b
--- /dev/null
+++ b/src/com/walking/lesson21_immutable_object/CarNotFoundException.java
@@ -0,0 +1,7 @@
+package com.walking.lesson21_immutable_object;
+
+public class CarNotFoundException extends RuntimeException {
+ public CarNotFoundException() {
+ super("Car not found");
+ }
+}
diff --git a/src/com/walking/lesson21_immutable_object/Main.java b/src/com/walking/lesson21_immutable_object/Main.java
index 6027e7453..91cf12e48 100644
--- a/src/com/walking/lesson21_immutable_object/Main.java
+++ b/src/com/walking/lesson21_immutable_object/Main.java
@@ -1,5 +1,11 @@
package com.walking.lesson21_immutable_object;
+import com.walking.lesson21_immutable_object.model.Car;
+import com.walking.lesson21_immutable_object.model.CarIdentifier;
+import com.walking.lesson21_immutable_object.service.CarService;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу из урока 19.
*
@@ -10,5 +16,45 @@
*/
public class Main {
public static void main(String[] args) {
+ CarService carService = new CarService(initCars());
+
+ CarIdentifier desiredCar = requireCarsInformation();
+
+ Car foundCar = carService.findCar(desiredCar);
+ System.out.println(foundCar);
+
+
+ // тупо переписал твоё решение - сам не додумался,
+ // что можно отдельный класс идентификатора создать в классе САR
+ }
+
+ private static CarIdentifier requireCarsInformation() {
+
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter a car's number: ");
+ String number = scanner.nextLine();
+
+ System.out.print("Enter a car's year: ");
+ int year = scanner.nextInt();
+
+ scanner.close();
+
+ return new CarIdentifier(number, year);
+ }
+
+ private static Car[] initCars() {
+ Car car1 = new Car("RR-111-RR", 2015, "yellow", true);
+ Car car2 = new Car("RR-222-RR", 2016, "yellow", true);
+ Car car3 = new Car("RR-333-RR", 2017, "yellow", true);
+ Car car4 = new Car("RR-444-RR", 2018, "yellow", true);
+ Car car5 = new Car("RR-555-RR", 2018, "yellow", true);
+ Car car6 = new Car("RR-666-RR", 2018, "yellow", true);
+ Car car7 = new Car("RR-777-RR", 2018, "yellow", true);
+ Car car8 = new Car("RR-888-RR", 2018, "yellow", true);
+ Car car9 = new Car("RR-999-RR", 2018, "yellow", true);
+ Car car10 = new Car("RR-000-RR", 2018, "yellow", true);
+
+ return new Car[]{car1, car2, car3, car4, car5, car6, car7, car8, car9, car10};
}
}
diff --git a/src/com/walking/lesson21_immutable_object/model/Car.java b/src/com/walking/lesson21_immutable_object/model/Car.java
new file mode 100644
index 000000000..ea07486aa
--- /dev/null
+++ b/src/com/walking/lesson21_immutable_object/model/Car.java
@@ -0,0 +1,48 @@
+package com.walking.lesson21_immutable_object.model;
+
+public class Car {
+ private final CarIdentifier identifier;
+ private String color;
+ private boolean actualTechnicalInspection;
+
+ public Car(CarIdentifier identifier, String color, boolean actualTechnicalInspection) {
+ this.identifier = identifier;
+ this.color = color;
+ this.actualTechnicalInspection = actualTechnicalInspection;
+ }
+
+ public Car(String number, int year, String color, boolean actualTechnicalInspection) {
+ this(new CarIdentifier(number, year), color, actualTechnicalInspection);
+ }
+
+ public CarIdentifier getIdentifier() {
+ return identifier;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color;
+ }
+
+ public boolean isActualTechnicalInspection() {
+ return actualTechnicalInspection;
+ }
+
+ public void setActualTechnicalInspection(boolean actualTechnicalInspection) {
+ this.actualTechnicalInspection = actualTechnicalInspection;
+ }
+
+ @Override
+ public String toString() {
+ return """
+ number: %s
+ year: %d
+ color: %s
+ actualTechnicalInspection: %s
+ """.formatted(identifier.getNumber(), identifier.getYear(), color,
+ actualTechnicalInspection ? "actual" : "not actual");
+ }
+}
diff --git a/src/com/walking/lesson21_immutable_object/model/CarIdentifier.java b/src/com/walking/lesson21_immutable_object/model/CarIdentifier.java
new file mode 100644
index 000000000..32ed3b658
--- /dev/null
+++ b/src/com/walking/lesson21_immutable_object/model/CarIdentifier.java
@@ -0,0 +1,46 @@
+package com.walking.lesson21_immutable_object.model;
+
+import java.util.Objects;
+
+public final class CarIdentifier {
+
+ private final String number;
+ private final int year;
+
+ public CarIdentifier(String number, int year) {
+ this.number = number;
+ this.year = year;
+ }
+
+ public String getNumber() {
+ return number;
+ }
+
+ public int getYear() {
+ return year;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+
+ if (o == null || !getClass().equals(o.getClass())) {
+ return false;
+ }
+
+ CarIdentifier identifier = (CarIdentifier) o;
+
+ return year == identifier.year && Objects.equals(number, identifier.number);
+ }
+
+ @Override
+ public int hashCode() {
+ int hashcode = number.hashCode();
+
+ hashcode += 31 * year;
+
+ return hashcode;
+ }
+}
diff --git a/src/com/walking/lesson21_immutable_object/service/CarService.java b/src/com/walking/lesson21_immutable_object/service/CarService.java
new file mode 100644
index 000000000..8e569c720
--- /dev/null
+++ b/src/com/walking/lesson21_immutable_object/service/CarService.java
@@ -0,0 +1,22 @@
+package com.walking.lesson21_immutable_object.service;
+
+import com.walking.lesson21_immutable_object.CarNotFoundException;
+import com.walking.lesson21_immutable_object.model.Car;
+import com.walking.lesson21_immutable_object.model.CarIdentifier;
+
+public class CarService {
+ private final Car[] cars;
+
+ public CarService(Car[] cars) {
+ this.cars = cars;
+ }
+
+ public Car findCar(CarIdentifier identifier) throws CarNotFoundException {
+ for (Car c : cars) {
+ if (c.getIdentifier().equals(identifier)) {
+ return c;
+ }
+ }
+ throw new CarNotFoundException();
+ }
+}
diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java
index 8025e454c..f9ad66574 100644
--- a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java
+++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java
@@ -1,11 +1,143 @@
package com.walking.lesson25_nested_classes.task1.anonymous_class;
+import com.walking.lesson25_nested_classes.task1.inner_class.model.EquilateralShape;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
* используя анонимные классы.
*/
public class Main {
+ public static final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ public static final String RECTANGLE_VERTICAL_ELEMENT = "-";
+ public static final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ public static final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ public static final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ if (length < 1) {
+ scanner.close();
+ throw new RuntimeException("Length can't be less than 1");
+ }
+
+ System.out.print("Enter shape's type:\n 1: Square\n 2: Triangle\n");
+ int shapeType = scanner.nextInt();
+
+ scanner.close();
+
+ String shapeString = createShapeString(length, shapeType);
+ System.out.println(shapeString);
+ }
+
+ private static String createShapeString(int length, int type) {
+ EquilateralShape shape;
+
+ switch (type) {
+ case 1:
+ shape = createSquare(length);
+ break;
+ case 2:
+ shape = createEquilateralTriangle(length);
+ break;
+ default:
+ throw new RuntimeException("Unknown shape");
+ }
+
+ return shape.createShapeString();
+ }
+
+ private static EquilateralShape createEquilateralTriangle(int length) {
+ return new EquilateralShape() {
+
+ @Override
+ public String createShapeString() {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+ };
+ }
+
+ private static EquilateralShape createSquare(int length) {
+ return new EquilateralShape() {
+
+ @Override
+ public String createShapeString() {
+ String horizontalLine = createHorizontalLine();
+ String verticalLines = createVerticalLines();
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+
+ private String createHorizontalLine() {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines() {
+ String verticalLinesUnit = getVerticalLinesUnit();
+
+ String verticalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLinesUnit;
+ }
+
+ return verticalLines;
+ }
+
+ private String getVerticalLinesUnit() {
+ String verticalLinesUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLinesUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLinesUnit;
+ }
+ };
}
}
diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/model/EquiliteralShape.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/model/EquiliteralShape.java
new file mode 100644
index 000000000..c8ce274bc
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/model/EquiliteralShape.java
@@ -0,0 +1,11 @@
+package com.walking.lesson25_nested_classes.task1.anonymous_class.model;
+
+public interface EquiliteralShape {
+ String EMPTY_ELEMENT = " ";
+ String EMPTY_STRING = "";
+ char NEW_LINE_SYMBOL = '\n';
+
+ String createShapeString();
+
+ int getLength();
+}
diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java
index add78eefc..0d9241c60 100644
--- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java
+++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java
@@ -1,11 +1,149 @@
package com.walking.lesson25_nested_classes.task1.inner_class;
+import com.walking.lesson25_nested_classes.task1.inner_class.model.EquilateralShape;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
* используя внутренние классы.
*/
public class Main {
+ public static final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ public static final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ public static final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+ public static final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ public static final String RECTANGLE_VERTICAL_ELEMENT = "|";
+
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ if (length < 1) {
+ scanner.close();
+ throw new RuntimeException("Incorrect Length");
+ }
+
+ System.out.print("Enter shape's type:\n 1: Square\n 2: Triangle\n");
+ int shapeType = scanner.nextInt();
+
+ scanner.close();
+
+ String shapeString = new Main().createShapeString(length, shapeType);
+ System.out.println(shapeString);
+ }
+
+ private String createShapeString(int length, int type) {
+ EquilateralShape shape;
+
+ switch (type) {
+ case 1:
+ shape = new Square(length);
+ break;
+ case 2:
+ shape = new EquilateralTriangle(length);
+ break;
+ default:
+ throw new RuntimeException("Incorrect figure");
+ }
+
+ return shape.createShapeString();
+ }
+
+ private class EquilateralTriangle implements EquilateralShape {
+ private final int length;
+
+ public EquilateralTriangle(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String createShapeString() {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+ }
+
+ private class Square implements EquilateralShape {
+ private final int length;
+
+ public Square(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String createShapeString() {
+ String horizontalLine = createHorizontalLine();
+ String verticalLines = createVerticalLines();
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+
+ private String createHorizontalLine() {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines() {
+ String verticalLinesUnit = getVerticalLinesUnit();
+
+ String verticalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLinesUnit;
+ }
+
+ return verticalLines;
+ }
+
+ private String getVerticalLinesUnit() {
+ String verticalLinesUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLinesUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLinesUnit;
+ }
}
}
diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/model/EquilateralShape.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/model/EquilateralShape.java
new file mode 100644
index 000000000..f7113ba83
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/model/EquilateralShape.java
@@ -0,0 +1,12 @@
+package com.walking.lesson25_nested_classes.task1.inner_class.model;
+
+public interface EquilateralShape {
+ String EMPTY_ELEMENT = " ";
+ String EMPTY_STRING = "";
+ char NEW_LINE_SYMBOL = '\n';
+
+
+ String createShapeString();
+
+ int getLength();
+}
diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java
index deef3aa47..d8116f90d 100644
--- a/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java
+++ b/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java
@@ -1,11 +1,150 @@
package com.walking.lesson25_nested_classes.task1.static_class;
+import com.walking.lesson25_nested_classes.task1.static_class.model.EquilateralShape;
+
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
* используя статические вложенные классы.
*/
public class Main {
+ public static final String TRIANGLE_HORIZONTAL_SIDE_ELEMENT = "--";
+ public static final String TRIANGLE_LEFT_SIDE_ELEMENT = "/";
+ public static final String TRIANGLE_RIGHT_SIDE_ELEMENT = "\\";
+ public static final String RECTANGLE_HORIZONTAL_ELEMENT = "-";
+ public static final String RECTANGLE_VERTICAL_ELEMENT = "-";
+
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter shape's length: ");
+ int length = scanner.nextInt();
+
+ if (length < 1) {
+ scanner.close();
+ throw new RuntimeException("Incorrect length");
+ }
+
+ System.out.print("Enter shape's type:\n 1: Square\n 2: Triangle\n");
+ int shapeType = scanner.nextInt();
+
+ scanner.close();
+
+ String shapeString = createShapeString(length, shapeType);
+ System.out.println(shapeString);
+
+ }
+
+ private static String createShapeString(int length, int type) {
+ EquilateralShape shape;
+
+ switch (type) {
+ case 1:
+ shape = new Square(length);
+ break;
+ case 2:
+ shape = new EquilateralTriangle(length);
+ break;
+ default:
+ throw new RuntimeException("Incorrect figure");
+ }
+
+ return shape.createShapeString();
+ }
+
+ private static class EquilateralTriangle implements EquilateralShape {
+ private final int length;
+
+ public EquilateralTriangle(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String createShapeString() {
+ String triangle = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ for (int j = 0; j < length - i; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_LEFT_SIDE_ELEMENT;
+
+ for (int j = 0; j < i * 2; j++) {
+ triangle += EMPTY_ELEMENT;
+ }
+ triangle += TRIANGLE_RIGHT_SIDE_ELEMENT + NEW_LINE_SYMBOL;
+ }
+ triangle += EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ triangle += TRIANGLE_HORIZONTAL_SIDE_ELEMENT;
+ }
+
+ return triangle;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+ }
+
+ private static class Square implements EquilateralShape {
+ private final int length;
+
+ public Square(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String createShapeString() {
+ String horizontalLine = createHorizontalLine();
+ String verticalLines = createVerticalLines();
+
+ return horizontalLine + verticalLines + horizontalLine;
+ }
+
+ @Override
+ public int getLength() {
+ return length;
+ }
+
+ private String createHorizontalLine() {
+ String horizontalLine = EMPTY_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine += RECTANGLE_HORIZONTAL_ELEMENT;
+ }
+
+ horizontalLine += EMPTY_ELEMENT + NEW_LINE_SYMBOL;
+
+ return horizontalLine;
+ }
+
+ private String createVerticalLines() {
+ String verticalLinesUnit = getVerticalLinesUnit();
+
+ String verticalLines = EMPTY_STRING;
+
+ for (int i = 0; i < length; i++) {
+ verticalLines += verticalLinesUnit;
+ }
+
+ return verticalLines;
+ }
+
+ private String getVerticalLinesUnit() {
+ String verticalLinesUnit = RECTANGLE_VERTICAL_ELEMENT;
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit += EMPTY_ELEMENT;
+ }
+
+ verticalLinesUnit += RECTANGLE_VERTICAL_ELEMENT + NEW_LINE_SYMBOL;
+
+ return verticalLinesUnit;
+ }
}
}
diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/model/EquilateralShape.java b/src/com/walking/lesson25_nested_classes/task1/static_class/model/EquilateralShape.java
new file mode 100644
index 000000000..99255ec2a
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task1/static_class/model/EquilateralShape.java
@@ -0,0 +1,11 @@
+package com.walking.lesson25_nested_classes.task1.static_class.model;
+
+public interface EquilateralShape {
+ String EMPTY_ELEMENT = " ";
+ String EMPTY_STRING = "";
+ char NEW_LINE_SYMBOL = '\n';
+
+ String createShapeString();
+
+ int getLength();
+}
diff --git a/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java
index 5f64539cd..823125ff0 100644
--- a/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java
+++ b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java
@@ -1,11 +1,42 @@
package com.walking.lesson25_nested_classes.task2.anonymous_class;
+import com.walking.lesson25_nested_classes.task2.anonymous_class.model.Animal;
+
/**
* Реализуйте задачу
* ...
* используя анонимные классы.
*/
+
public class Main {
public static void main(String[] args) {
+
+ Animal[] animals = new Animal[] { new Animal() {
+
+ @Override
+ public void sound() {
+ System.out.println("meow");
+ }
+ }, new Animal() {
+
+ @Override
+ public void sound() {
+ System.out.println("moo");
+ }
+ }, new Animal() {
+
+ @Override
+ public void sound() {
+ System.out.println("woof");
+ }
+ }};
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal x : animals) {
+ x.sound();
+ }
}
}
diff --git a/src/com/walking/lesson25_nested_classes/task2/anonymous_class/model/Animal.java b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/model/Animal.java
new file mode 100644
index 000000000..052a594b1
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/model/Animal.java
@@ -0,0 +1,8 @@
+package com.walking.lesson25_nested_classes.task2.anonymous_class.model;
+
+public class Animal {
+
+ public void sound() {
+ System.out.println("Unknown animal");
+ }
+}
diff --git a/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java
index 9302836d5..7930397e9 100644
--- a/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java
+++ b/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java
@@ -1,5 +1,7 @@
package com.walking.lesson25_nested_classes.task2.inner_class;
+import com.walking.lesson25_nested_classes.task2.inner_class.model.Animal;
+
/**
* Реализуйте задачу
* ...
@@ -7,5 +9,38 @@
*/
public class Main {
public static void main(String[] args) {
+
+ Main main = new Main();
+ Animal[] animals = new Animal[]{main.new Cat(), main.new Cow(), main.new Dog()};
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal x : animals) {
+ x.sound();
+ }
+ }
+
+
+ private class Cat extends Animal{
+ @Override
+ public void sound() {
+ System.out.println("Meow");
+ }
+ }
+
+ private class Dog extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("Woof");
+ }
+ }
+
+ private class Cow extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("Moo");
+ }
}
}
diff --git a/src/com/walking/lesson25_nested_classes/task2/inner_class/model/Animal.java b/src/com/walking/lesson25_nested_classes/task2/inner_class/model/Animal.java
new file mode 100644
index 000000000..b42270dd8
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task2/inner_class/model/Animal.java
@@ -0,0 +1,9 @@
+package com.walking.lesson25_nested_classes.task2.inner_class.model;
+
+public class Animal {
+
+ public void sound() {
+ System.out.println("Unknown animal");
+ }
+
+}
diff --git a/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java
index 39de8becd..028ed8279 100644
--- a/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java
+++ b/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java
@@ -1,5 +1,7 @@
package com.walking.lesson25_nested_classes.task2.static_class;
+import com.walking.lesson25_nested_classes.task2.static_class.model.Animal;
+
/**
* Реализуйте задачу
* ...
@@ -7,5 +9,35 @@
*/
public class Main {
public static void main(String[] args) {
+ Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog()};
+
+ soundAll(animals);
+ }
+
+ private static void soundAll(Animal[] animals) {
+ for (Animal x : animals) {
+ x.sound();
+ }
+ }
+
+ private static class Cat extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("meow");
+ }
+ }
+
+ private static class Dog extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("woof");
+ }
+ }
+
+ private static class Cow extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("moo");
+ }
}
}
diff --git a/src/com/walking/lesson25_nested_classes/task2/static_class/model/Animal.java b/src/com/walking/lesson25_nested_classes/task2/static_class/model/Animal.java
new file mode 100644
index 000000000..321d3d309
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task2/static_class/model/Animal.java
@@ -0,0 +1,8 @@
+package com.walking.lesson25_nested_classes.task2.static_class.model;
+
+public class Animal {
+
+ public void sound() {
+ System.out.println("Unknown animal");
+ }
+}
diff --git a/src/com/walking/lesson26_string_types/task1/Main.java b/src/com/walking/lesson26_string_types/task1/Main.java
index 42e1afdbf..eeb1975e5 100644
--- a/src/com/walking/lesson26_string_types/task1/Main.java
+++ b/src/com/walking/lesson26_string_types/task1/Main.java
@@ -1,11 +1,70 @@
package com.walking.lesson26_string_types.task1;
+import java.util.Scanner;
+
/**
* Реализуйте задачу
* ...
* используя StringBuilder или StringBuffer. Объясните свой выбор.
*/
+
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ int length = requireInt(scanner, "Enter rectangle's length: ");
+ int width = requireInt(scanner, "Enter rectangle's width: ");
+
+ scanner.close();
+
+ StringBuilder rectangle = printRectangle(length, width);
+ System.out.println("StringBuilder выбран по причине отсутствия многопоточности");
+ System.out.println(rectangle);
+ }
+
+ private static int requireInt(Scanner scanner, String requiringMessage) {
+ System.out.print(requiringMessage);
+
+ return scanner.nextInt();
+ }
+
+ private static StringBuilder printRectangle(int length, int width) {
+ return createHorizontalLine(length)
+ .append(createVerticalLines(length, width))
+ .append(createHorizontalLine(length));
+ }
+
+ private static StringBuilder createHorizontalLine(int length) {
+ StringBuilder horizontalLine = new StringBuilder(" ");
+
+ for (int i = 0; i < length; i++) {
+ horizontalLine = horizontalLine.append("-");
+ }
+
+ horizontalLine = horizontalLine.append(" \n");
+
+ return horizontalLine;
+ }
+
+ private static StringBuilder createVerticalLines(int length, int width) {
+ StringBuilder verticalLinesUnit = new StringBuilder(getVerticalLinesUnit(length));
+
+ StringBuilder verticalLines = new StringBuilder("");
+
+ for (int i = 0; i < width; i++) {
+ verticalLines = verticalLines.append(verticalLinesUnit);
+ }
+ return verticalLines;
+ }
+
+ static StringBuilder getVerticalLinesUnit(int length) {
+ StringBuilder verticalLinesUnit = new StringBuilder("|");
+
+ for (int i = 0; i < length; i++) {
+ verticalLinesUnit = verticalLinesUnit.append(" ");
+ }
+
+ verticalLinesUnit = verticalLinesUnit.append( "|\n");
+ return verticalLinesUnit;
}
}
diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java
index 7f272e617..ddc47e983 100644
--- a/src/com/walking/lesson26_string_types/task2/Main.java
+++ b/src/com/walking/lesson26_string_types/task2/Main.java
@@ -1,5 +1,7 @@
package com.walking.lesson26_string_types.task2;
+import java.util.Scanner;
+
/**
* Реализуйте программу, принимающую с клавиатуры строку,
* содержащую слова, разделенные пробелом.
@@ -18,5 +20,41 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("Enter a words: ");
+ String[] array = scanner.nextLine()
+ .trim()
+ .toLowerCase()
+ .split(" ");
+
+ scanner.close();
+
+ System.out.println(getWordsCounter(array));
+ }
+
+ private static String getWordsCounter(String[] array) {
+ int wordsCounter = 0;
+
+ for (int i = 0; i < array.length; i++) {
+ if (isUnique(array, i)) {
+ wordsCounter++;
+ }
+ }
+
+ return "Found " + wordsCounter + " unique words";
+ }
+
+ private static boolean isUnique(String[] array, int i) {
+ int j = 0;
+ while (j < i) {
+ if (array[i].equals(array[j])) {
+ return false;
+ }
+
+ j++;
+ }
+
+ return true;
}
}
diff --git a/src/com/walking/lesson28_generics1/task1/Main.java b/src/com/walking/lesson28_generics1/task1/Main.java
index 0455c9bea..680250435 100644
--- a/src/com/walking/lesson28_generics1/task1/Main.java
+++ b/src/com/walking/lesson28_generics1/task1/Main.java
@@ -1,5 +1,7 @@
package com.walking.lesson28_generics1.task1;
+import com.walking.lesson28_generics1.task1.math.Power;
+
/**
* Создать обобщенный тип, принимающий в себя любого из наследников Number.
* Создать метод, возводящий значение параметризованного типа в степень,
@@ -7,5 +9,13 @@
*/
public class Main {
public static void main(String[] args) {
+ Power bytePower = new Power<>((byte) 2);
+ Power shortPower = new Power<>((short) 2);
+ Power integerPower = new Power<>(2);
+ Power longPower = new Power<>((long) 2);
+ Power floatPower = new Power<>(2.5f);
+ Power doublePower = new Power<>(2.5);
+
+ System.out.println(doublePower.toPow(3));
}
-}
+}
\ No newline at end of file
diff --git a/src/com/walking/lesson28_generics1/task1/math/Power.java b/src/com/walking/lesson28_generics1/task1/math/Power.java
new file mode 100644
index 000000000..4afbed7eb
--- /dev/null
+++ b/src/com/walking/lesson28_generics1/task1/math/Power.java
@@ -0,0 +1,18 @@
+package com.walking.lesson28_generics1.task1.math;
+
+public class Power {
+ private T base;
+
+ public Power(T base) {
+ this.base = base;
+ }
+
+ public double toPow(int exponent) {
+ double baseD = base.doubleValue();
+ return Math.pow(baseD, exponent);
+ }
+
+ public T getBase() {
+ return base;
+ }
+}
diff --git a/src/com/walking/lesson28_generics1/task2/Main.java b/src/com/walking/lesson28_generics1/task2/Main.java
index 7f16bed5e..3089fd84d 100644
--- a/src/com/walking/lesson28_generics1/task2/Main.java
+++ b/src/com/walking/lesson28_generics1/task2/Main.java
@@ -1,10 +1,19 @@
package com.walking.lesson28_generics1.task2;
+import com.walking.lesson28_generics1.task2.model.NotNullObject;
+
/**
* Создать класс-обертку над объектом любого типа.
* Предусмотреть boolean-метод, проверяющий значение объекта на null.
*/
public class Main {
public static void main(String[] args) {
+
+ NotNullObject