From 334cb542300695a2bc0157b3474e401fd48b8e9a Mon Sep 17 00:00:00 2001 From: Kot Date: Thu, 16 Nov 2023 12:06:07 +0300 Subject: [PATCH 01/17] My version --- .../task1_abstract_class/Main.java | 38 +++++++++++++++++++ .../task1_abstract_class/model/Figure.java | 17 +++++++++ .../task1_abstract_class/model/Square.java | 29 ++++++++++++++ .../task1_abstract_class/model/Triangle.java | 37 ++++++++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Figure.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Square.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java 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..83ef4dfdc 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.Square; +import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.Triangle; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +13,37 @@ */ public class Main { public static void main(String[] args) { + byte selectedFigure, selectedLength; + + Scanner io = new Scanner(System.in); + + System.out.println("What figure do you want? [1 - triangle, 2 - square]"); + selectedFigure = io.nextByte(); + System.out.println("Enter side's length [min - 3, max - 20]"); + selectedLength = io.nextByte(); + io.close(); + +// Checking user's validity + if (selectedFigure <1 || selectedFigure > 2 || selectedLength < 3 || selectedLength > 20){ + System.out.println("Invalid entry"); + return; + } + System.out.println("Entry is VALID. Drawing your figure...\n"); + + if (selectedFigure == 1){ + Triangle a = new Triangle(selectedLength); + System.out.println(a.builtFigure()); + } + else { + Square a = new Square(selectedLength); + System.out.println(a.builtFigure()); + } + + + + + + + } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Figure.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Figure.java new file mode 100644 index 000000000..0e9cf63b5 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Figure.java @@ -0,0 +1,17 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.model; + +public abstract class Figure { + protected static final String VERTICAL_SYMBOL = "|"; + protected static final String HORIZONTAL_SYMBOL = "-"; + protected static final String FILLING_SYMBOL = " "; + protected static final String TRIANGLE_LEFT_SYMBOL = "/"; + protected static final String TRIANGLE_RIGHT_SYMBOL = "\\"; + + protected int width; + + Figure(int width){ + this.width = width; + } + + public abstract String builtFigure(); +} 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..1e510014d --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Square.java @@ -0,0 +1,29 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.model; + +public class Square extends Figure{ + public Square(int width){ + super(width); + } + + @Override + public String builtFigure() { + StringBuilder wholeFigure = new StringBuilder(); + String symbol; + for (byte y = 0; y < width; y++) { + if (y == 0 || y == width-1) symbol = HORIZONTAL_SYMBOL; + else symbol = FILLING_SYMBOL; + + for (int x = 0; x < width; x++) { + if (x == 0 || x == width-1) { + wholeFigure.append(VERTICAL_SYMBOL); + } else { + wholeFigure.append(symbol); + } + } + wholeFigure.append("\n"); + } + return wholeFigure.toString(); + } + + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java new file mode 100644 index 000000000..1ce180513 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java @@ -0,0 +1,37 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.model; + +public class Triangle extends Figure{ + + public Triangle(int width){ + super(width); + } + + @Override + public String builtFigure() { + StringBuilder wholeFigure = new StringBuilder(); + StringBuilder sideSpaces = new StringBuilder(); + StringBuilder innerSpaces = new StringBuilder(); + byte spaceCount = (byte) ((width-2) / 2); + byte innerSpaceCount = 0; + + for (byte y = spaceCount; y >= 0; y--) { + for (byte x = 0; x <= y; x++) { + sideSpaces.append(FILLING_SYMBOL); + } + + for (byte x = 0; x < innerSpaceCount; x++) { + if (y != 0) innerSpaces.append(FILLING_SYMBOL); + else innerSpaces.append(HORIZONTAL_SYMBOL); + } + + wholeFigure.append(sideSpaces).append(TRIANGLE_LEFT_SYMBOL).append(innerSpaces).append(TRIANGLE_RIGHT_SYMBOL).append(sideSpaces).append("\n"); + sideSpaces = new StringBuilder(); + innerSpaces = new StringBuilder(); + innerSpaceCount += 2; + } + + return wholeFigure.toString(); + } + + +} From 88e5e208da3392f89c8f56ff503d49ea926b95d4 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 17 Nov 2023 10:19:43 +0300 Subject: [PATCH 02/17] My version using INTERFACE added. --- .../task1_interface/Main.java | 32 +++++++++++++++++++ .../task1_interface/model/Figure.java | 11 +++++++ .../task1_interface/model/Square.java | 25 +++++++++++++++ .../task1_interface/model/Triangle.java | 31 ++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Figure.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Square.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java 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..a670811f2 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,6 +1,11 @@ package com.walking.lesson16_abstract_class_interface.task1_interface; +import com.walking.lesson16_abstract_class_interface.task1_interface.model.Square; +import com.walking.lesson16_abstract_class_interface.task1_interface.model.Triangle; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -8,5 +13,32 @@ */ public class Main { public static void main(String[] args) { + byte selectedFigure, selectedLength; + + Scanner io = new Scanner(System.in); + + System.out.println("What figure do you want? [1 - triangle, 2 - square]"); + selectedFigure = io.nextByte(); + System.out.println("Enter side's length [min - 3, max - 20]"); + selectedLength = io.nextByte(); + io.close(); + +// Checking user's validity + if (selectedFigure <1 || selectedFigure > 2 || selectedLength < 3 || selectedLength > 20){ + System.out.println("Invalid entry"); + return; + } + System.out.println("Entry is VALID. Drawing your figure...\n"); + + if (selectedFigure == 1) { + Triangle a = new Triangle(); + System.out.println(a.drawFigure(selectedLength)); + } + else { + Square a = new Square(); + System.out.println(a.drawFigure(selectedLength)); + } + + } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Figure.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Figure.java new file mode 100644 index 000000000..d78b7e296 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Figure.java @@ -0,0 +1,11 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface.model; + +public interface Figure { + String VERTICAL_SYMBOL = "|"; + String HORIZONTAL_SYMBOL = "-"; + String FILLING_SYMBOL = " "; + String TRIANGLE_LEFT_SYMBOL = "/"; + String TRIANGLE_RIGHT_SYMBOL = "\\"; + + String drawFigure(int width); +} 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..247a71248 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Square.java @@ -0,0 +1,25 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface.model; + +public class Square implements Figure{ + + @Override + public String drawFigure(int width) { + + StringBuilder wholeFigure = new StringBuilder(); + String symbol; + for (byte y = 0; y < width; y++) { + if (y == 0 || y == width-1) symbol = HORIZONTAL_SYMBOL; + else symbol = FILLING_SYMBOL; + + for (int x = 0; x < width; x++) { + if (x == 0 || x == width-1) { + wholeFigure.append(VERTICAL_SYMBOL); + } else { + wholeFigure.append(symbol); + } + } + wholeFigure.append("\n"); + } + return wholeFigure.toString(); + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java new file mode 100644 index 000000000..959de6d79 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java @@ -0,0 +1,31 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface.model; + +public class Triangle implements Figure{ + + @Override + public String drawFigure(int width) { + StringBuilder wholeFigure = new StringBuilder(); + StringBuilder sideSpaces = new StringBuilder(); + StringBuilder innerSpaces = new StringBuilder(); + byte spaceCount = (byte) ((width-2) / 2); + byte innerSpaceCount = 0; + + for (byte y = spaceCount; y >= 0; y--) { + for (byte x = 0; x <= y; x++) { + sideSpaces.append(FILLING_SYMBOL); + } + + for (byte x = 0; x < innerSpaceCount; x++) { + if (y != 0) innerSpaces.append(FILLING_SYMBOL); + else innerSpaces.append(HORIZONTAL_SYMBOL); + } + + wholeFigure.append(sideSpaces).append(TRIANGLE_LEFT_SYMBOL).append(innerSpaces).append(TRIANGLE_RIGHT_SYMBOL).append(sideSpaces).append("\n"); + sideSpaces = new StringBuilder(); + innerSpaces = new StringBuilder(); + innerSpaceCount += 2; + } + + return wholeFigure.toString(); + } +} From 0657fa46c92a4ae518da361971d3d43ec11b2635 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 17 Nov 2023 10:37:33 +0300 Subject: [PATCH 03/17] My version using INTERFACE added. --- .../task1_abstract_class/Main.java | 11 +++++++---- .../task1_interface/Main.java | 11 ++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) 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 83ef4dfdc..f960d2a60 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,6 +1,7 @@ package com.walking.lesson16_abstract_class_interface.task1_abstract_class; +import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.Figure; import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.Square; import com.walking.lesson16_abstract_class_interface.task1_abstract_class.model.Triangle; @@ -30,15 +31,17 @@ public static void main(String[] args) { } System.out.println("Entry is VALID. Drawing your figure...\n"); + Figure aa; + if (selectedFigure == 1){ - Triangle a = new Triangle(selectedLength); - System.out.println(a.builtFigure()); + aa = new Triangle(selectedLength); } else { - Square a = new Square(selectedLength); - System.out.println(a.builtFigure()); + aa = new Square(selectedLength); } + System.out.println(aa.builtFigure()); + 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 a670811f2..61ae08fa7 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,6 +1,7 @@ package com.walking.lesson16_abstract_class_interface.task1_interface; +import com.walking.lesson16_abstract_class_interface.task1_interface.model.Figure; import com.walking.lesson16_abstract_class_interface.task1_interface.model.Square; import com.walking.lesson16_abstract_class_interface.task1_interface.model.Triangle; @@ -30,15 +31,15 @@ public static void main(String[] args) { } System.out.println("Entry is VALID. Drawing your figure...\n"); + Figure aa; + if (selectedFigure == 1) { - Triangle a = new Triangle(); - System.out.println(a.drawFigure(selectedLength)); + aa = new Triangle(); } else { - Square a = new Square(); - System.out.println(a.drawFigure(selectedLength)); + aa = new Square(); } - + System.out.println(aa.drawFigure(selectedLength)); } } From b480990bd95e5c80d466f7080c5a5a5522d6adc8 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 24 Nov 2023 15:17:20 +0300 Subject: [PATCH 04/17] Task 2 done --- .../task2/Main.java | 26 +++++++++++++++++++ .../task2/model/Bye.java | 9 +++++++ .../task2/model/Greeting.java | 9 +++++++ .../task2/model/Hi.java | 9 +++++++ .../task2/model/UnknownGreeting.java | 9 +++++++ 5 files changed, 62 insertions(+) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/model/Bye.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/model/Hi.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/model/UnknownGreeting.java 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..edf3142c7 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,37 @@ package com.walking.lesson16_abstract_class_interface.task2; +import com.walking.lesson16_abstract_class_interface.task2.model.Bye; +import com.walking.lesson16_abstract_class_interface.task2.model.Greeting; +import com.walking.lesson16_abstract_class_interface.task2.model.Hi; +import com.walking.lesson16_abstract_class_interface.task2.model.UnknownGreeting; + +import java.util.Locale; +import java.util.Scanner; + /** * Реализуйте задачу * ... * с использованием интерфейсов. Каждая реализация должна возвращать свое сообщение. */ public class Main { + + static final String REQUEST_HI = "hi"; + static final String REQUEST_BYE = "bye"; public static void main(String[] args) { + System.out.println("Enter your greeting"); + + Scanner io = new Scanner(System.in); + String userEntry = io.nextLine(); + io.close(); + + Greeting reply; + + switch (userEntry.toLowerCase(Locale.ROOT)){ + case REQUEST_HI -> reply = new Hi(); + case REQUEST_BYE -> reply = new Bye(); + default -> reply = new UnknownGreeting(); + } + System.out.println(reply.printReply()); + } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/model/Bye.java b/src/com/walking/lesson16_abstract_class_interface/task2/model/Bye.java new file mode 100644 index 000000000..4257ee0a9 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/model/Bye.java @@ -0,0 +1,9 @@ +package com.walking.lesson16_abstract_class_interface.task2.model; + +public class Bye implements Greeting{ + + @Override + public String printReply() { + return REPLY_BYE; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java b/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java new file mode 100644 index 000000000..107e31aef --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java @@ -0,0 +1,9 @@ +package com.walking.lesson16_abstract_class_interface.task2.model; + +public interface Greeting { + String REPLY_HI = "Hello"; + String REPLY_BYE = "Good bye"; + String REPLY_UNKNOWN = "Unknown message"; + + String printReply(); +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/model/Hi.java b/src/com/walking/lesson16_abstract_class_interface/task2/model/Hi.java new file mode 100644 index 000000000..2308800a1 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/model/Hi.java @@ -0,0 +1,9 @@ +package com.walking.lesson16_abstract_class_interface.task2.model; + +public class Hi implements Greeting{ + + @Override + public String printReply() { + return REPLY_HI; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/model/UnknownGreeting.java b/src/com/walking/lesson16_abstract_class_interface/task2/model/UnknownGreeting.java new file mode 100644 index 000000000..68cb487e8 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/model/UnknownGreeting.java @@ -0,0 +1,9 @@ +package com.walking.lesson16_abstract_class_interface.task2.model; + +public class UnknownGreeting implements Greeting{ + + @Override + public String printReply(){ + return REPLY_UNKNOWN; + } +} From 1c23a1d5545dfacf8d31ce9a73953c5dea929cb5 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 24 Nov 2023 15:44:05 +0300 Subject: [PATCH 05/17] Task 3 done --- .../task2/Main.java | 14 ++++++-------- .../task2/model/Greeting.java | 1 + .../task2/model/HowAreYou.java | 8 ++++++++ .../task3/Main.java | 11 +++++++++++ .../task3/model/Animal.java | 5 +++++ .../task3/model/inherit/Cat.java | 10 ++++++++++ .../task3/model/inherit/Cow.java | 9 +++++++++ .../task3/model/inherit/Dog.java | 9 +++++++++ 8 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/model/HowAreYou.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/model/Animal.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cat.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cow.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Dog.java 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 edf3142c7..ee3bdc4cb 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,7 @@ package com.walking.lesson16_abstract_class_interface.task2; -import com.walking.lesson16_abstract_class_interface.task2.model.Bye; -import com.walking.lesson16_abstract_class_interface.task2.model.Greeting; -import com.walking.lesson16_abstract_class_interface.task2.model.Hi; -import com.walking.lesson16_abstract_class_interface.task2.model.UnknownGreeting; +import com.walking.lesson16_abstract_class_interface.task2.model.*; -import java.util.Locale; import java.util.Scanner; /** @@ -15,8 +11,9 @@ */ public class Main { - static final String REQUEST_HI = "hi"; - static final String REQUEST_BYE = "bye"; + static final String REQUEST_HI = "Hi"; + static final String REQUEST_BYE = "Bye"; + static final String REQUEST_HOW_ARE_YOU = "How are you"; public static void main(String[] args) { System.out.println("Enter your greeting"); @@ -26,9 +23,10 @@ public static void main(String[] args) { Greeting reply; - switch (userEntry.toLowerCase(Locale.ROOT)){ + switch (userEntry){ case REQUEST_HI -> reply = new Hi(); case REQUEST_BYE -> reply = new Bye(); + case REQUEST_HOW_ARE_YOU -> reply = new HowAreYou(); default -> reply = new UnknownGreeting(); } System.out.println(reply.printReply()); diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java b/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java index 107e31aef..f1a376901 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/model/Greeting.java @@ -3,6 +3,7 @@ public interface Greeting { String REPLY_HI = "Hello"; String REPLY_BYE = "Good bye"; + String REPLY_HOW_ARE_YOU = "How are you doing"; String REPLY_UNKNOWN = "Unknown message"; String printReply(); diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/model/HowAreYou.java b/src/com/walking/lesson16_abstract_class_interface/task2/model/HowAreYou.java new file mode 100644 index 000000000..73b111da4 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/model/HowAreYou.java @@ -0,0 +1,8 @@ +package com.walking.lesson16_abstract_class_interface.task2.model; + +public class HowAreYou implements Greeting{ + @Override + public String printReply() { + return REPLY_HOW_ARE_YOU; + } +} 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..cb72ce356 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.inherit.Cat; +import com.walking.lesson16_abstract_class_interface.task3.model.inherit.Cow; +import com.walking.lesson16_abstract_class_interface.task3.model.inherit.Dog; + /** * Реализуйте любую задачу из уроков о наследовании или полиморфизме с использованием новых знаний. * Выбирайте инструмент с умом. @@ -10,5 +15,11 @@ */ public class Main { public static void main(String[] args) { + Animal[] zoo = new Animal[]{new Cat(), new Dog(), new Cow()}; + + for (Animal animal : zoo) { + System.out.println(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..b3b0e4719 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/Animal.java @@ -0,0 +1,5 @@ +package com.walking.lesson16_abstract_class_interface.task3.model; + +public abstract class Animal { + public abstract String Sound(); +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cat.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cat.java new file mode 100644 index 000000000..d17767da4 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cat.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task3.model.inherit; + +import com.walking.lesson16_abstract_class_interface.task3.model.Animal; + +public class Cat extends Animal { + + public String Sound(){ + return "Meow"; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cow.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cow.java new file mode 100644 index 000000000..3342979a0 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Cow.java @@ -0,0 +1,9 @@ +package com.walking.lesson16_abstract_class_interface.task3.model.inherit; + +import com.walking.lesson16_abstract_class_interface.task3.model.Animal; + +public class Cow extends Animal { + public String Sound(){ + return "Moo"; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Dog.java b/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Dog.java new file mode 100644 index 000000000..000fbe542 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/model/inherit/Dog.java @@ -0,0 +1,9 @@ +package com.walking.lesson16_abstract_class_interface.task3.model.inherit; + +import com.walking.lesson16_abstract_class_interface.task3.model.Animal; + +public class Dog extends Animal { + public String Sound(){ + return "Woof"; + } +} From f0a718c44b077f40f53a1fdc366c11e25c79dda0 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 1 Mar 2024 16:15:55 +0300 Subject: [PATCH 06/17] Lesson 17, task 1 is done. --- src/com/walking/lesson17_enum/task1/Main.java | 21 ++++++++++++ .../lesson17_enum/task1/enums/Greeting.java | 32 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/com/walking/lesson17_enum/task1/enums/Greeting.java diff --git a/src/com/walking/lesson17_enum/task1/Main.java b/src/com/walking/lesson17_enum/task1/Main.java index 7fc684202..4c30255fe 100644 --- a/src/com/walking/lesson17_enum/task1/Main.java +++ b/src/com/walking/lesson17_enum/task1/Main.java @@ -1,12 +1,33 @@ package com.walking.lesson17_enum.task1; +import com.walking.lesson17_enum.task1.enums.Greeting; + +import java.util.Scanner; + /** * Реализуйте задачу * ... * через enum. В т.ч. реализуйте в enum'е поиск значения по фразе, * введенной пользователем. Напоминаю, что enum'ы могут содержать поля. + + * Написать программу, которая принимает строку с клавиатуры. + * * Если строка == "Hi" - вывести в консоль "Hello", + * * если Bye - Good bye, + * * если How are you - How are your doing. + * * Если любая другая строка - вывести Unknown message. + * * Сделать через switch-case */ public class Main { public static void main(String[] args) { + + Scanner io = new Scanner(System.in); + System.out.println("Enter something. "); + String userInput = io.nextLine(); + io.close(); + + Greeting outPut = Greeting.findGreeting(userInput); + System.out.println(outPut.getReturnGreeting()); + } + } diff --git a/src/com/walking/lesson17_enum/task1/enums/Greeting.java b/src/com/walking/lesson17_enum/task1/enums/Greeting.java new file mode 100644 index 000000000..801b0517f --- /dev/null +++ b/src/com/walking/lesson17_enum/task1/enums/Greeting.java @@ -0,0 +1,32 @@ +package com.walking.lesson17_enum.task1.enums; + +public enum Greeting { + HI("Hi","Hello"), + BYE("Bye","Good bye"), + HOW_R_U("How are you","How are you doing"), + OTHER("","Unknown message"); + + private final String userInput; + private final String returnGreeting; + + Greeting(String userInput, String returnGreeting){ + this.userInput = userInput; + this.returnGreeting = returnGreeting; + } + + public String getReturnGreeting() { + return returnGreeting; + } + + public static Greeting findGreeting(String userEntry) { + + + for (Greeting allCase : Greeting.values()) { + if (allCase.userInput.equals(userEntry)) { + return allCase; + } + } + return OTHER; + } +} + From 4f528c512228956fdf80fa3a793a52e8d3dc5cab Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 1 Mar 2024 18:54:48 +0300 Subject: [PATCH 07/17] Lesson 17, task 2 is done. --- src/com/walking/lesson17_enum/task2/Main.java | 7 +++++++ .../lesson17_enum/task2/enums/Animal.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/com/walking/lesson17_enum/task2/enums/Animal.java diff --git a/src/com/walking/lesson17_enum/task2/Main.java b/src/com/walking/lesson17_enum/task2/Main.java index 293ca15c9..98d0cd510 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.enums.Animal; + /** * Реализуйте задачу * ... @@ -7,5 +9,10 @@ */ public class Main { public static void main(String[] args) { + Animal[] all = {Animal.CAT, Animal.COW, Animal.DOG}; + + for (Animal animals: all){ + System.out.println(animals.sound()); + } } } diff --git a/src/com/walking/lesson17_enum/task2/enums/Animal.java b/src/com/walking/lesson17_enum/task2/enums/Animal.java new file mode 100644 index 000000000..c8e4c627c --- /dev/null +++ b/src/com/walking/lesson17_enum/task2/enums/Animal.java @@ -0,0 +1,16 @@ +package com.walking.lesson17_enum.task2.enums; + +public enum Animal { + DOG("Woof"), + CAT("Meow"), + COW("Moo"); + + final String ANIMAL_VOICE; + Animal(String voice){ + this.ANIMAL_VOICE = voice; + } + + public String sound(){ + return ANIMAL_VOICE; + } +} From 07ef60af19f0ed7add0f534a44d51b246569d525 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 1 Mar 2024 18:54:48 +0300 Subject: [PATCH 08/17] Lesson 17, task 2 and task 3 are done. --- src/com/walking/lesson17_enum/task2/Main.java | 7 ++++ .../lesson17_enum/task2/enums/Animal.java | 16 ++++++++ src/com/walking/lesson17_enum/task3/Main.java | 28 ++++++++++++++ .../task3/enums/EquiLateralShape.java | 38 +++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 src/com/walking/lesson17_enum/task2/enums/Animal.java create mode 100644 src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java diff --git a/src/com/walking/lesson17_enum/task2/Main.java b/src/com/walking/lesson17_enum/task2/Main.java index 293ca15c9..98d0cd510 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.enums.Animal; + /** * Реализуйте задачу * ... @@ -7,5 +9,10 @@ */ public class Main { public static void main(String[] args) { + Animal[] all = {Animal.CAT, Animal.COW, Animal.DOG}; + + for (Animal animals: all){ + System.out.println(animals.sound()); + } } } diff --git a/src/com/walking/lesson17_enum/task2/enums/Animal.java b/src/com/walking/lesson17_enum/task2/enums/Animal.java new file mode 100644 index 000000000..c8e4c627c --- /dev/null +++ b/src/com/walking/lesson17_enum/task2/enums/Animal.java @@ -0,0 +1,16 @@ +package com.walking.lesson17_enum.task2.enums; + +public enum Animal { + DOG("Woof"), + CAT("Meow"), + COW("Moo"); + + final String ANIMAL_VOICE; + Animal(String voice){ + this.ANIMAL_VOICE = voice; + } + + public String sound(){ + return ANIMAL_VOICE; + } +} diff --git a/src/com/walking/lesson17_enum/task3/Main.java b/src/com/walking/lesson17_enum/task3/Main.java index fb541e003..ba7c8ec2d 100644 --- a/src/com/walking/lesson17_enum/task3/Main.java +++ b/src/com/walking/lesson17_enum/task3/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson17_enum.task3; +import com.walking.lesson17_enum.task3.enums.EquiLateralShape; + +import java.util.Scanner; + + /** * Реализуйте задачу * ... @@ -7,5 +12,28 @@ */ public class Main { public static void main(String[] args) { + + int size; + int choice; + + Scanner io = new Scanner(System.in); + + System.out.println("Enter figure width"); + size = io.nextInt(); + System.out.println("Enter 1 for triangle, 2 for square"); + choice = io.nextInt(); + io.close(); + if (choice < 1 || choice > 2 || size < 1 || size > 20){ + System.out.println("Incorrect entry"); + return; + } + + EquiLateralShape figure = switch (choice) { + case 1 -> EquiLateralShape.TRIANGLE; + default -> EquiLateralShape.SQUARE; + }; + + + System.out.println(figure.drawFigure(size)); } } diff --git a/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java b/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java new file mode 100644 index 000000000..13bb7d232 --- /dev/null +++ b/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java @@ -0,0 +1,38 @@ +package com.walking.lesson17_enum.task3.enums; + +public enum EquiLateralShape { + TRIANGLE{ + @Override + public String drawFigure(int size){ + return "Устал вспоминать код отрисовки треугольника. Вот вам взамен куча сисек.\n" + + "(.)(.) ".repeat(size); + } + }, + SQUARE{ + @Override + public String drawFigure(int size) { + StringBuilder draw = new StringBuilder(); + String fillingSymbol; + + for (int y = 0; y < size; y++){ + + if (y == 0 || y == size - 1){fillingSymbol = HORIZONTAL;} //first or last line + else {fillingSymbol = " ";} + + draw.append(VERTICAL); //first column + + for (int x = 1; x < size -1 ; x++){ + draw.append(fillingSymbol); + } + + draw.append(VERTICAL + "\n"); //last column + } + return draw.toString(); + } + }; + final String HORIZONTAL = "-"; + final String VERTICAL = "|"; + final String TRIANGLE_LEFT_SIDE = "/"; + final String TRIANGLE_RIGHT_SIDE = "\\"; + public abstract String drawFigure(int size); +} From 1b8f0db6721d2d713368ab54468c9fd63732bd30 Mon Sep 17 00:00:00 2001 From: Kot Date: Sat, 2 Mar 2024 12:18:35 +0300 Subject: [PATCH 09/17] Lesson 18 task 1 done --- .../task1_getClass/Main.java | 32 +++++++++++++++++++ .../task1_getClass/model/Animal.java | 6 ++++ .../task1_getClass/model/Cat.java | 7 ++++ .../task1_getClass/model/Cow.java | 8 +++++ .../task1_getClass/model/Dog.java | 7 ++++ 5 files changed, 60 insertions(+) create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Animal.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cat.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cow.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Dog.java 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..234107d42 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java @@ -1,11 +1,43 @@ 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; + /** * Реализовать задачу * ... * используя getClass(). + *

+ * Реализуйте класс Animal. Реализуйте его наследников: Dog, Cat, Cow. + * Каждый из наследников должен содержать свой метод: woof(), meow() и moo() соответственно. + * Остальные поля и методы суперкласса и наследников реализовать по своему усмотрению, + * если они необходимы. + *

+ * Каждый из методов должен выводить в консоль соответствующую ему строку: + * "woof ", "meow " или "moo". + *

+ * В main() создать и наполнить в произвольном порядке + * объектами разных классов-наследников массив типа Animal. + * Реализовать метод, принимающий массив Animal и вызывающий метод, + * характерный для конкретного животного. */ public class Main { public static void main(String[] args) { + Animal[] a = {new Cat(), new Cow(), new Dog()}; + soundAll(a); + } + + private static void soundAll(Animal[] animals){ + for (Animal animal: animals){ + if (animal.getClass().equals(Cat.class)){ + ((Cat)animal).meow(); + } else if (animal.getClass().equals(Dog.class)) { + ((Dog) animal).woof(); + } else { + ((Cow)animal).moo(); + } + } } } 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..b214b24de --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Animal.java @@ -0,0 +1,6 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.model; + +public class Animal { + + +} 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..65a94027b --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cat.java @@ -0,0 +1,7 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.model; + +public class Cat extends Animal{ + public void meow(){ + System.out.println("Meow"); + } +} 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..c419b3ab7 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Cow.java @@ -0,0 +1,8 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.model; + +public class Cow extends Animal{ + + public void moo(){ + System.out.println("Moo"); + } +} 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..4cb2c86bd --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/model/Dog.java @@ -0,0 +1,7 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.model; + +public class Dog extends Animal{ + public void woof(){ + System.out.println("Woof"); + } +} From 82556f901a29c39e9f4e24aa1b85e55e042b8d4e Mon Sep 17 00:00:00 2001 From: Kot Date: Sat, 2 Mar 2024 12:47:19 +0300 Subject: [PATCH 10/17] Lesson 18 all tasks done --- .../task1_getClass/Main.java | 10 +++------- .../task1_instanceof/Main.java | 13 +++++++++++++ .../task1_instanceof/model/Animal.java | 6 ++++++ .../task1_instanceof/model/Cat.java | 7 +++++++ .../task1_instanceof/model/Cow.java | 8 ++++++++ .../task1_instanceof/model/Dog.java | 7 +++++++ 6 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Animal.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cat.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cow.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Dog.java 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 234107d42..e8f7eb758 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java @@ -31,13 +31,9 @@ public static void main(String[] args) { private static void soundAll(Animal[] animals){ for (Animal animal: animals){ - if (animal.getClass().equals(Cat.class)){ - ((Cat)animal).meow(); - } else if (animal.getClass().equals(Dog.class)) { - ((Dog) animal).woof(); - } else { - ((Cow)animal).moo(); - } + if (animal.getClass().equals(Cat.class)) ((Cat) animal).meow(); + else if (animal.getClass().equals(Dog.class)) ((Dog) animal).woof(); + else ((Cow) animal).moo(); } } } 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..b3ce8200d 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,8 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof; +import com.walking.lesson18_instanceof_getClass.task1_instanceof.model.*; + + /** * Реализовать задачу * ... @@ -7,5 +10,15 @@ */ public class Main { public static void main(String[] args) { + Animal[] a = {new Cat(), new Dog(), new Cow()}; + soundAll(a); + } + + private static void soundAll(Animal[] animals){ + for (Animal animal: animals){ + if (animal instanceof Cat animalCat) animalCat.meow(); + else if (animal instanceof Dog animalDog) animalDog.woof(); + else ((Cow) animal).moo(); + } } } 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..66792f717 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Animal.java @@ -0,0 +1,6 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.model; + +public class Animal { + + +} 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..7539d2887 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cat.java @@ -0,0 +1,7 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.model; + +public class Cat extends Animal { + public void meow(){ + System.out.println("Meow"); + } +} 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..354dd5466 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Cow.java @@ -0,0 +1,8 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.model; + +public class Cow extends Animal { + + public void moo(){ + System.out.println("Moo"); + } +} 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..e06223f2e --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/model/Dog.java @@ -0,0 +1,7 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.model; + +public class Dog extends Animal { + public void woof(){ + System.out.println("Woof"); + } +} From d9b545e194197601814c82203e48120446158362 Mon Sep 17 00:00:00 2001 From: Kot Date: Sat, 2 Mar 2024 13:59:04 +0300 Subject: [PATCH 11/17] Lesson 18 all tasks done --- .../task1_abstract_class/Main.java | 8 +-- .../task1_abstract_class/model/Triangle.java | 39 +++++++---- .../task1_interface/Main.java | 18 ++--- .../task1_interface/model/Square.java | 8 +-- .../task1_interface/model/Triangle.java | 47 +++++++++----- .../task2/Main.java | 6 +- src/com/walking/lesson17_enum/task3/Main.java | 11 ++-- .../task3/enums/EquiLateralShape.java | 65 ++++++++++++++----- .../task1_getClass/Main.java | 7 +- .../task1_instanceof/Main.java | 7 +- 10 files changed, 143 insertions(+), 73 deletions(-) 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 f960d2a60..c4701a264 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 @@ -31,16 +31,16 @@ public static void main(String[] args) { } System.out.println("Entry is VALID. Drawing your figure...\n"); - Figure aa; + Figure figure; if (selectedFigure == 1){ - aa = new Triangle(selectedLength); + figure = new Triangle(selectedLength); } else { - aa = new Square(selectedLength); + figure = new Square(selectedLength); } - System.out.println(aa.builtFigure()); + System.out.println(figure.builtFigure()); diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java index 1ce180513..530a3e4f7 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/model/Triangle.java @@ -8,29 +8,46 @@ public Triangle(int width){ @Override public String builtFigure() { - StringBuilder wholeFigure = new StringBuilder(); - StringBuilder sideSpaces = new StringBuilder(); - StringBuilder innerSpaces = new StringBuilder(); - byte spaceCount = (byte) ((width-2) / 2); - byte innerSpaceCount = 0; + StringBuilder stringToDraw = new StringBuilder(); + StringBuilder sideSpaces = new StringBuilder(); //пробелы снаружи треугольника + StringBuilder innerSpaces = new StringBuilder(); //пробелы внутри треугольника + byte spaceCount = (byte) ((width-2) / 2); //Узнаем сколько нам нужно пробелов сбоку + byte innerSpaceCount = 0; //в первой строке треугольника нет внутренних пробелов + +//отрисовываем треугольник по строкам сверху вниз for (byte y = spaceCount; y >= 0; y--) { for (byte x = 0; x <= y; x++) { sideSpaces.append(FILLING_SYMBOL); } +//символы боковых сторон треугольника и пробелы (или черту в самой нижней строке) между ними for (byte x = 0; x < innerSpaceCount; x++) { - if (y != 0) innerSpaces.append(FILLING_SYMBOL); - else innerSpaces.append(HORIZONTAL_SYMBOL); + if (y != 0) innerSpaces.append(FILLING_SYMBOL); //если не последняя строка, то наполняем пробелами + else innerSpaces.append(HORIZONTAL_SYMBOL); //если последняя - то это основание треугольника } - wholeFigure.append(sideSpaces).append(TRIANGLE_LEFT_SYMBOL).append(innerSpaces).append(TRIANGLE_RIGHT_SYMBOL).append(sideSpaces).append("\n"); - sideSpaces = new StringBuilder(); +/* строка треугольника состоит из: + * пробелы слева + левая грань + пробелы между гранями + правая грань + пробелы справа + * /\ + * / \ + * /----\ + * + */ + stringToDraw.append + (sideSpaces).append + (TRIANGLE_LEFT_SYMBOL).append + (innerSpaces).append + (TRIANGLE_RIGHT_SYMBOL).append + (sideSpaces).append("\n"); + + sideSpaces = new StringBuilder(); //обнуляем переменные перед следующей итерацией цикла innerSpaces = new StringBuilder(); - innerSpaceCount += 2; + + innerSpaceCount += 2; //в следующей строке внутри треугольника будет на 2 пробела больше } - return wholeFigure.toString(); + return stringToDraw.toString(); } 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 61ae08fa7..40c3c5c30 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 @@ -14,15 +14,15 @@ */ public class Main { public static void main(String[] args) { - byte selectedFigure, selectedLength; + int selectedFigure, selectedLength; - Scanner io = new Scanner(System.in); + Scanner scanner = new Scanner(System.in); System.out.println("What figure do you want? [1 - triangle, 2 - square]"); - selectedFigure = io.nextByte(); + selectedFigure = scanner.nextInt(); System.out.println("Enter side's length [min - 3, max - 20]"); - selectedLength = io.nextByte(); - io.close(); + selectedLength = scanner.nextInt(); + scanner.close(); // Checking user's validity if (selectedFigure <1 || selectedFigure > 2 || selectedLength < 3 || selectedLength > 20){ @@ -31,15 +31,15 @@ public static void main(String[] args) { } System.out.println("Entry is VALID. Drawing your figure...\n"); - Figure aa; + Figure figure; if (selectedFigure == 1) { - aa = new Triangle(); + figure = new Triangle(); } else { - aa = new Square(); + figure = new Square(); } - System.out.println(aa.drawFigure(selectedLength)); + System.out.println(figure.drawFigure(selectedLength)); } } 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 index 247a71248..dffdecdb5 100644 --- 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 @@ -6,16 +6,16 @@ public class Square implements Figure{ public String drawFigure(int width) { StringBuilder wholeFigure = new StringBuilder(); - String symbol; + String symbolToFill; for (byte y = 0; y < width; y++) { - if (y == 0 || y == width-1) symbol = HORIZONTAL_SYMBOL; - else symbol = FILLING_SYMBOL; + if (y == 0 || y == width-1) symbolToFill = HORIZONTAL_SYMBOL; + else symbolToFill = FILLING_SYMBOL; for (int x = 0; x < width; x++) { if (x == 0 || x == width-1) { wholeFigure.append(VERTICAL_SYMBOL); } else { - wholeFigure.append(symbol); + wholeFigure.append(symbolToFill); } } wholeFigure.append("\n"); diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java index 959de6d79..45d676158 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/model/Triangle.java @@ -4,28 +4,43 @@ public class Triangle implements Figure{ @Override public String drawFigure(int width) { - StringBuilder wholeFigure = new StringBuilder(); - StringBuilder sideSpaces = new StringBuilder(); - StringBuilder innerSpaces = new StringBuilder(); - byte spaceCount = (byte) ((width-2) / 2); - byte innerSpaceCount = 0; - - for (byte y = spaceCount; y >= 0; y--) { - for (byte x = 0; x <= y; x++) { - sideSpaces.append(FILLING_SYMBOL); - } + StringBuilder stringToDraw = new StringBuilder(); + StringBuilder sideSpaces = new StringBuilder(); //пробелы снаружи треугольника + StringBuilder innerSpaces = new StringBuilder(); //пробелы внутри треугольника + int spaceCount = (width-2) / 2; //Узнаем сколько нам нужно пробелов сбоку + int innerSpaceCount = 0; //в первой строке треугольника нет внутренних пробелов + + +//отрисовываем треугольник по строкам сверху вниз + for (int y = spaceCount; y >= 0; y--) { + sideSpaces.append(FILLING_SYMBOL.repeat(Math.max(0, y + 1))); - for (byte x = 0; x < innerSpaceCount; x++) { - if (y != 0) innerSpaces.append(FILLING_SYMBOL); - else innerSpaces.append(HORIZONTAL_SYMBOL); +//символы боковых сторон треугольника и пробелы (или черту в самой нижней строке) между ними + for (int x = 0; x < innerSpaceCount; x++) { + if (y != 0) innerSpaces.append(FILLING_SYMBOL); //если не последняя строка, то наполняем пробелами + else innerSpaces.append(HORIZONTAL_SYMBOL); //если последняя - то это основание треугольника } - wholeFigure.append(sideSpaces).append(TRIANGLE_LEFT_SYMBOL).append(innerSpaces).append(TRIANGLE_RIGHT_SYMBOL).append(sideSpaces).append("\n"); +/* строка треугольника состоит из: + * пробелы слева + левая грань + пробелы между гранями + правая грань + пробелы справа + * /\ + * / \ + * /----\ + * + */ + + stringToDraw.append + (sideSpaces).append + (TRIANGLE_LEFT_SYMBOL).append + (innerSpaces).append + (TRIANGLE_RIGHT_SYMBOL).append + (sideSpaces).append("\n"); + sideSpaces = new StringBuilder(); innerSpaces = new StringBuilder(); - innerSpaceCount += 2; + innerSpaceCount += 2; //в следующей строке внутри треугольника будет на 2 пробела больше } - return wholeFigure.toString(); + return stringToDraw.toString(); } } 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 ee3bdc4cb..429d399ce 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java @@ -17,9 +17,9 @@ public class Main { public static void main(String[] args) { System.out.println("Enter your greeting"); - Scanner io = new Scanner(System.in); - String userEntry = io.nextLine(); - io.close(); + Scanner scanner = new Scanner(System.in); + String userEntry = scanner.nextLine(); + scanner.close(); Greeting reply; diff --git a/src/com/walking/lesson17_enum/task3/Main.java b/src/com/walking/lesson17_enum/task3/Main.java index ba7c8ec2d..8492125f8 100644 --- a/src/com/walking/lesson17_enum/task3/Main.java +++ b/src/com/walking/lesson17_enum/task3/Main.java @@ -16,13 +16,13 @@ public static void main(String[] args) { int size; int choice; - Scanner io = new Scanner(System.in); + Scanner scanner = new Scanner(System.in); System.out.println("Enter figure width"); - size = io.nextInt(); + size = scanner.nextInt(); System.out.println("Enter 1 for triangle, 2 for square"); - choice = io.nextInt(); - io.close(); + choice = scanner.nextInt(); + scanner.close(); if (choice < 1 || choice > 2 || size < 1 || size > 20){ System.out.println("Incorrect entry"); return; @@ -30,7 +30,8 @@ public static void main(String[] args) { EquiLateralShape figure = switch (choice) { case 1 -> EquiLateralShape.TRIANGLE; - default -> EquiLateralShape.SQUARE; + case 2 -> EquiLateralShape.SQUARE; + default -> EquiLateralShape.TRIANGLE; //если что, нарисуем треугольник }; diff --git a/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java b/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java index 13bb7d232..4b9f3ed4e 100644 --- a/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java +++ b/src/com/walking/lesson17_enum/task3/enums/EquiLateralShape.java @@ -4,35 +4,70 @@ public enum EquiLateralShape { TRIANGLE{ @Override public String drawFigure(int size){ - return "Устал вспоминать код отрисовки треугольника. Вот вам взамен куча сисек.\n" + - "(.)(.) ".repeat(size); + StringBuilder stringToDraw = new StringBuilder(); + StringBuilder sideSpaces = new StringBuilder(); //пробелы снаружи треугольника + StringBuilder innerSpaces = new StringBuilder(); //пробелы внутри треугольника + + int sideSpaceCount = (size - 2) / 2; // Узнаем сколько нам нужно пробелов сбоку + int innerSpaceCount = 0; //в первой строке треугольника нет внутренних пробелов + + +//отрисовываем треугольник по строкам сверху вниз + for (int y = sideSpaceCount; y >= 0; y--) { + sideSpaces.append(SPACE_SYMBOL.repeat(Math.max(0, y + 1))); //пробелы в строке снаружи стреуголника + +//стороны боковых сторон треугольника и пробелы (или черту в самой нижней строке) между ними + for (int x = 0; x < innerSpaceCount; x++) { + if (y != 0) innerSpaces.append(SPACE_SYMBOL); //если не последняя строка, то наполняем пробелами + else innerSpaces.append(HORIZONTAL_SYMBOL); //если последняя - то это основание треугольника + } + +/* строка треугольника состоит из: + * пробелы слева + левая грань + пробелы между гранями + правая грань + пробелы справа + * /\ + * / \ + * /----\ + * + */ + stringToDraw.append + (sideSpaces).append + (TRIANGLE_LEFT_SYMBOL).append + (innerSpaces).append + (TRIANGLE_RIGHT_SYMBOL).append + (sideSpaces).append("\n"); + + sideSpaces = new StringBuilder(); + innerSpaces = new StringBuilder(); + innerSpaceCount += 2; //в следующей строке внутри треугольника будет на 2 пробела больше + } + + return stringToDraw.toString(); } }, SQUARE{ @Override public String drawFigure(int size) { - StringBuilder draw = new StringBuilder(); + StringBuilder stringToDraw = new StringBuilder(); String fillingSymbol; for (int y = 0; y < size; y++){ - if (y == 0 || y == size - 1){fillingSymbol = HORIZONTAL;} //first or last line - else {fillingSymbol = " ";} + if (y == 0 || y == size - 1) fillingSymbol = HORIZONTAL_SYMBOL; //first or last line + else fillingSymbol = SPACE_SYMBOL; - draw.append(VERTICAL); //first column + stringToDraw.append(VERTICAL_SYMBOL); //first column - for (int x = 1; x < size -1 ; x++){ - draw.append(fillingSymbol); - } + stringToDraw.append(fillingSymbol.repeat(Math.max(0, size - 2))); - draw.append(VERTICAL + "\n"); //last column + stringToDraw.append(VERTICAL_SYMBOL + "\n"); //last column } - return draw.toString(); + return stringToDraw.toString(); } }; - final String HORIZONTAL = "-"; - final String VERTICAL = "|"; - final String TRIANGLE_LEFT_SIDE = "/"; - final String TRIANGLE_RIGHT_SIDE = "\\"; + final String HORIZONTAL_SYMBOL = "-"; + final String VERTICAL_SYMBOL = "|"; + final String SPACE_SYMBOL = " "; + final String TRIANGLE_LEFT_SYMBOL = "/"; + final String TRIANGLE_RIGHT_SYMBOL = "\\"; public abstract String drawFigure(int size); } 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 e8f7eb758..2fd1710b5 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java @@ -25,15 +25,16 @@ */ public class Main { public static void main(String[] args) { - Animal[] a = {new Cat(), new Cow(), new Dog()}; - soundAll(a); + Animal[] animals = {new Cat(), new Cow(), new Dog()}; + soundAll(animals); } private static void soundAll(Animal[] animals){ for (Animal animal: animals){ if (animal.getClass().equals(Cat.class)) ((Cat) animal).meow(); else if (animal.getClass().equals(Dog.class)) ((Dog) animal).woof(); - else ((Cow) animal).moo(); + else if (animal.getClass().equals(Cow.class)) ((Cow) animal).moo(); + else System.out.println("Unknown animal"); } } } 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 b3ce8200d..cd2e2d0f6 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java @@ -10,15 +10,16 @@ */ public class Main { public static void main(String[] args) { - Animal[] a = {new Cat(), new Dog(), new Cow()}; - soundAll(a); + Animal[] animals = {new Cat(), new Dog(), new Cow()}; + soundAll(animals); } private static void soundAll(Animal[] animals){ for (Animal animal: animals){ if (animal instanceof Cat animalCat) animalCat.meow(); else if (animal instanceof Dog animalDog) animalDog.woof(); - else ((Cow) animal).moo(); + else if (animal instanceof Cow animalCow) animalCow.moo(); + else System.out.println("Unknown Animal"); } } } From fba1cf47ee679db5a3d4f1c300bd0b5227707798 Mon Sep 17 00:00:00 2001 From: Kot Date: Fri, 17 May 2024 12:22:58 +0300 Subject: [PATCH 12/17] lesson 19 done --- .../walking/lesson19_object_methods/Main.java | 32 +++++++++ .../lesson19_object_methods/model/Car.java | 72 +++++++++++++++++++ .../model/CarService.java | 18 +++++ 3 files changed, 122 insertions(+) create mode 100644 src/com/walking/lesson19_object_methods/model/Car.java create mode 100644 src/com/walking/lesson19_object_methods/model/CarService.java diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index efef54d5d..6e40533cc 100644 --- a/src/com/walking/lesson19_object_methods/Main.java +++ b/src/com/walking/lesson19_object_methods/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson19_object_methods; +import com.walking.lesson19_object_methods.model.Car; +import com.walking.lesson19_object_methods.model.CarService; + +import java.util.Scanner; + /** * Реализуйте класс «Машина». Поля допустимо выбрать на свое усмотрение, но необходимо, * чтобы по ним можно было однозначно идентифицировать каждую машину. @@ -14,5 +19,32 @@ */ public class Main { public static void main(String[] args) { + Car[] cars = {new Car(2000, "a123aa77", "green", "bmw"), + new Car(2001, "b222bb77", "black", "mercedes"), + new Car(2005, "c111cc777", "white", "audi"), + new Car(2020, "e555ee55", "red", "skoda") + }; + + CarService dataBase = new CarService(cars); + + Scanner io = new Scanner(System.in); + System.out.println("Enter car's manufacture year"); + int year = io.nextInt(); + String tmp = io.nextLine(); //проблема пропуска строки Scanner'ом после nextInt + + System.out.println("Enter plate number"); + String number = io.nextLine().toLowerCase(); + + System.out.println("Enter color"); + String color = io.nextLine().toLowerCase(); + + System.out.println("Enter model"); + String model = io.nextLine().toLowerCase(); + + io.close(); + + Car userCar = new Car(year, number, color, model); + Car foundCar = dataBase.searchCar(userCar); + System.out.println("Found car: " + foundCar); } } diff --git a/src/com/walking/lesson19_object_methods/model/Car.java b/src/com/walking/lesson19_object_methods/model/Car.java new file mode 100644 index 000000000..ba0b61bfd --- /dev/null +++ b/src/com/walking/lesson19_object_methods/model/Car.java @@ -0,0 +1,72 @@ +package com.walking.lesson19_object_methods.model; + +public class Car { + private final int year; + private final String number; + private final String color; + private final String model; + private int hashcode; + + public Car (int year, String number, String color, String model) { + this.year = year; + this. number = number; + this.color = color; + this.model = model; + } + + public int getYear() { + return year; + } + + public String getNumber() { + return number; + } + + public String getColor() { + return color; + } + + public String getModel() { + return model; + } + + @Override + public boolean equals (Object o) { + if (o == this) { + return true; + } + if (o == null) { + return false; + } + if (o.getClass() != getClass()) { + return false; + } + if (hashCode() != o.hashCode()) { + return false; + } + + Car carToCompare = (Car) o; + return carToCompare.year == year && carToCompare.number.equals(number); + } + + @Override + public int hashCode() { + if (hashcode == 0) { + hashcode = year * 31; + hashcode += number == null ? 0 : number.hashCode(); + hashcode += color == null ? 0 : color.hashCode(); + hashcode += model == null ? 0 : model.hashCode(); + } + return hashcode; + } + + @Override + public String toString() { + return color + " " + + model + " " + + year + ", " + + number; +//порядок переменных выбран для более наглядного восприятия: "белая бмв 2000 года, номер ХХХ" + } + +} diff --git a/src/com/walking/lesson19_object_methods/model/CarService.java b/src/com/walking/lesson19_object_methods/model/CarService.java new file mode 100644 index 000000000..9490b215e --- /dev/null +++ b/src/com/walking/lesson19_object_methods/model/CarService.java @@ -0,0 +1,18 @@ +package com.walking.lesson19_object_methods.model; + +public class CarService { + private final Car[] cars; + + public CarService(Car[] allcars) { + this.cars = allcars; + } + + public Car searchCar(Car userCar) { + for (Car car : cars) { + if (car.equals(userCar)) { + return car; + } + } + return null; + } +} From 05d44496392ac9d96bdc685e6e2872f312977945 Mon Sep 17 00:00:00 2001 From: Kot Date: Sat, 18 May 2024 13:53:46 +0300 Subject: [PATCH 13/17] lesson 19 done --- .../task1_catchException/Main.java | 27 ++++++++++++++++ .../task1_catchException/model/File.java | 32 +++++++++++++++++++ .../task1_catchException/model/FileType.java | 8 +++++ .../service/FileNotFoundException.java | 7 ++++ .../service/FileService.java | 19 +++++++++++ .../task1_throwsException/Main.java | 24 ++++++++++++++ .../task1_throwsException/model/File.java | 32 +++++++++++++++++++ .../task1_throwsException/model/FileType.java | 8 +++++ .../service/FileService.java | 22 +++++++++++++ 9 files changed, 179 insertions(+) create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/model/File.java create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/model/FileType.java create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/service/FileNotFoundException.java create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/service/FileService.java create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/model/File.java create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/model/FileType.java create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java index c59fa62d4..1bb69fdff 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.FileType; +import com.walking.lesson20_exceptions.task1_catchException.service.FileNotFoundException; +import com.walking.lesson20_exceptions.task1_catchException.service.FileService; + +import java.util.Scanner; + /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. *

@@ -15,5 +22,25 @@ */ public class Main { public static void main(String[] args) { + File[] files = {new File("pic1", FileType.IMAGE, 400), + new File("pic2", FileType.IMAGE, 800), + new File("pic3", FileType.IMAGE, 1200), + new File("video1", FileType.VIDEO, 10_000_000), + new File("music1", FileType.AUDIO, 5_000_000), + new File("doc1", FileType.TEXT, 500)}; + + Scanner io = new Scanner(System.in); + System.out.println("Введите имя файла"); + String userFile = io.nextLine(); + io.close(); + + FileService fileService = new FileService(files); + try { + System.out.println(fileService.search(userFile)); + } + catch (FileNotFoundException ex) { + System.out.println("Искомый файл не найден"); + } + } } 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..2a4e24c24 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/model/File.java @@ -0,0 +1,32 @@ +package com.walking.lesson20_exceptions.task1_catchException.model; + +public class File { + private String fileName; + private final FileType fileType; + private int fileSize; + + public File(String fileName, FileType fileType, int fileSize){ + this.fileName = fileName; + this.fileType = fileType; + this.fileSize = fileSize; + } + + @Override + public String toString(){ + return fileName + " " + + fileType + " " + + fileSize; + } + + public String getFileName() { + return fileName; + } + + public FileType getFileType() { + return fileType; + } + + public int getFileSize() { + return fileSize; + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/model/FileType.java b/src/com/walking/lesson20_exceptions/task1_catchException/model/FileType.java new file mode 100644 index 000000000..4f233068a --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/model/FileType.java @@ -0,0 +1,8 @@ +package com.walking.lesson20_exceptions.task1_catchException.model; + +public enum FileType { + TEXT, + IMAGE, + AUDIO, + VIDEO +} diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/service/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_catchException/service/FileNotFoundException.java new file mode 100644 index 000000000..350118faa --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/service/FileNotFoundException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task1_catchException.service; + +public class FileNotFoundException extends Exception{ + public FileNotFoundException(String message) { + super(message); + } +} 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..7d24c994f --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/service/FileService.java @@ -0,0 +1,19 @@ +package com.walking.lesson20_exceptions.task1_catchException.service; + +import com.walking.lesson20_exceptions.task1_catchException.model.File; +public class FileService { + private File[] files; + + public FileService (File[] files) { + this.files = files; + } + + public File search (String userFile) throws FileNotFoundException { + for (File file : files) { + if (userFile.equals(file.getFileName())) { + return file; + } + } + throw new FileNotFoundException ("Искомый файл не найден"); + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java index 368d583c8..75e904cb0 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java @@ -1,5 +1,13 @@ package com.walking.lesson20_exceptions.task1_throwsException; + +import com.walking.lesson20_exceptions.task1_throwsException.model.FileType; +import com.walking.lesson20_exceptions.task1_throwsException.model.File; +import com.walking.lesson20_exceptions.task1_throwsException.service.FileService; + + +import java.util.Scanner; + /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. *

@@ -17,5 +25,21 @@ */ public class Main { public static void main(String[] args) { + File[] files = {new File("pic1", FileType.IMAGE, 400), + new File("pic2", FileType.IMAGE, 800), + new File("pic3", FileType.IMAGE, 1200), + new File("video1", FileType.VIDEO, 10_000_000), + new File("music1", FileType.AUDIO, 5_000_000), + new File("doc1", FileType.TEXT, 500)}; + + Scanner io = new Scanner(System.in); + + System.out.println("Введите имя файла"); + String userFile = io.nextLine(); + + io.close(); + + FileService fileService = new FileService(files); + System.out.println(fileService.search(userFile)); } } 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..d8464aa84 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/model/File.java @@ -0,0 +1,32 @@ +package com.walking.lesson20_exceptions.task1_throwsException.model; + +public class File { + private String fileName; + private FileType fileType; + private int fileSize; + + public File(String fileName, FileType type, int size) { + this.fileName = fileName; + this.fileType = type; + this.fileSize = size; + } + + public String getFileName() { + return fileName; + } + + public FileType getFileType() { + return fileType; + } + + public int getFileSize() { + return fileSize; + } + + @Override + public String toString(){ + return fileName + " " + + fileType + " " + + fileSize; + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/model/FileType.java b/src/com/walking/lesson20_exceptions/task1_throwsException/model/FileType.java new file mode 100644 index 000000000..03bc09866 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/model/FileType.java @@ -0,0 +1,8 @@ +package com.walking.lesson20_exceptions.task1_throwsException.model; + +public enum FileType { + TEXT, + IMAGE, + AUDIO, + VIDEO +} 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..f41459980 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java @@ -0,0 +1,22 @@ +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 File[] files; + + public FileService(File[] files) { + this.files = files; + } + + public File search(String userFile) throws FileNotFoundException { + for (File file : files) { + if (userFile.equals(file.getFileName())) { + return file; + } + } + throw new FileNotFoundException("File not found"); + } +} From 4ac7d5bd365aa23504db3891fade37ef0a146be3 Mon Sep 17 00:00:00 2001 From: Kot Date: Sat, 18 May 2024 14:04:40 +0300 Subject: [PATCH 14/17] lesson 20 task 1 --- .../lesson20_exceptions/task1_throwsException/Main.java | 3 ++- .../service/FileNotFoundException.java | 7 +++++++ .../task1_throwsException/service/FileService.java | 4 +--- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/service/FileNotFoundException.java diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java index 75e904cb0..225852303 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java @@ -3,6 +3,7 @@ import com.walking.lesson20_exceptions.task1_throwsException.model.FileType; import com.walking.lesson20_exceptions.task1_throwsException.model.File; +import com.walking.lesson20_exceptions.task1_throwsException.service.FileNotFoundException; import com.walking.lesson20_exceptions.task1_throwsException.service.FileService; @@ -24,7 +25,7 @@ * Подсказка: throws можно использовать в том числе в main(). */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws FileNotFoundException { File[] files = {new File("pic1", FileType.IMAGE, 400), new File("pic2", FileType.IMAGE, 800), new File("pic3", FileType.IMAGE, 1200), diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileNotFoundException.java new file mode 100644 index 000000000..27067acdf --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileNotFoundException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task1_throwsException.service; + +public class FileNotFoundException extends Exception{ + public FileNotFoundException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java index f41459980..da18c91b9 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/service/FileService.java @@ -2,8 +2,6 @@ import com.walking.lesson20_exceptions.task1_throwsException.model.File; -import java.io.FileNotFoundException; - public class FileService { private File[] files; @@ -17,6 +15,6 @@ public File search(String userFile) throws FileNotFoundException { return file; } } - throw new FileNotFoundException("File not found"); + throw new FileNotFoundException("Искомый файл не найден"); } } From 1edaacb3caec285b4d4752fa0599540988910175 Mon Sep 17 00:00:00 2001 From: Kot Date: Mon, 20 May 2024 11:36:22 +0300 Subject: [PATCH 15/17] lesson 20 task 2 --- .../lesson20_exceptions/task2/Main.java | 32 ++++++++++++++++++- .../task2/model/Figure.java | 9 ++++++ .../task2/model/Square.java | 22 +++++++++++++ .../task2/model/Triangle.java | 29 +++++++++++++++++ .../service/InputValidationException.java | 7 ++++ 5 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson20_exceptions/task2/model/Figure.java create mode 100644 src/com/walking/lesson20_exceptions/task2/model/Square.java create mode 100644 src/com/walking/lesson20_exceptions/task2/model/Triangle.java create mode 100644 src/com/walking/lesson20_exceptions/task2/service/InputValidationException.java diff --git a/src/com/walking/lesson20_exceptions/task2/Main.java b/src/com/walking/lesson20_exceptions/task2/Main.java index cccb443bf..b25d0dc86 100644 --- a/src/com/walking/lesson20_exceptions/task2/Main.java +++ b/src/com/walking/lesson20_exceptions/task2/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson20_exceptions.task2; +import com.walking.lesson20_exceptions.task2.model.Figure; +import com.walking.lesson20_exceptions.task2.model.Square; +import com.walking.lesson20_exceptions.task2.model.Triangle; +import com.walking.lesson20_exceptions.task2.service.InputValidationException; + +import java.util.Scanner; + /** * Реализуйте любой из вариантов Задачи 1 в уроке 16. * При некорректном вводе с клавиатуры выбрасывайте собственное исключение InputValidationException. @@ -8,6 +15,29 @@ * Предка исключения определите самостоятельно. */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws InputValidationException { + Scanner io = new Scanner(System.in); + + System.out.println("Enter '1' for square, '2' for triangle"); + int userFigure = io.nextInt(); + if (userFigure != 1 && userFigure != 2) { + throw new InputValidationException("You have chosen incorrect figure"); + } + + System.out.println("Enter figure width"); + int userWidth = io.nextInt(); + if (userWidth <= 2 || userWidth > 30) { + throw new InputValidationException("Width must be 2 - 30"); + } + + io.close(); + + Figure figure; + if (userFigure == 1) { + figure = new Square(); + } else { + figure = new Triangle(); + } + System.out.println(figure.buildFigure(userWidth)); } } diff --git a/src/com/walking/lesson20_exceptions/task2/model/Figure.java b/src/com/walking/lesson20_exceptions/task2/model/Figure.java new file mode 100644 index 000000000..32eaeedac --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/model/Figure.java @@ -0,0 +1,9 @@ +package com.walking.lesson20_exceptions.task2.model; + +public interface Figure { + String VERTICAL_SYMBOL = "|"; + String HORIZONTAL_SYMBOL = "-"; + String FILLING_SYMBOL = " "; + + String buildFigure(int width); +} 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..0b5bc6663 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/model/Square.java @@ -0,0 +1,22 @@ +package com.walking.lesson20_exceptions.task2.model; + +public class Square implements Figure{ + + @Override + public String buildFigure(int width) { + StringBuilder returnString = new StringBuilder(); + + returnString.append(HORIZONTAL_SYMBOL.repeat(width)); + returnString.append("\n"); + + for (int y = 1; y < width-1; y++) { + returnString.append(VERTICAL_SYMBOL); + returnString.append(FILLING_SYMBOL.repeat(width - 2)); + returnString.append(VERTICAL_SYMBOL + "\n"); + } + returnString.append(HORIZONTAL_SYMBOL.repeat(width)); + returnString.append("\n"); + + return returnString.toString(); + } +} diff --git a/src/com/walking/lesson20_exceptions/task2/model/Triangle.java b/src/com/walking/lesson20_exceptions/task2/model/Triangle.java new file mode 100644 index 000000000..da836ebf2 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/model/Triangle.java @@ -0,0 +1,29 @@ +package com.walking.lesson20_exceptions.task2.model; + +public class Triangle implements Figure{ + private static final String LEFT_TRIANGLE_SYMBOL = "/"; + private static final String RIGHT_TRIANGLE_SYMBOL = "\\"; + + @Override + public String buildFigure(int width) { + StringBuilder returnString = new StringBuilder(); + int sideSpaces = (width / 2) - 1; + int innerSpaces = 0; + + for (int y = 0; y <= width / 2 - 1; y++) { + returnString.append(FILLING_SYMBOL.repeat(sideSpaces)); + returnString.append(LEFT_TRIANGLE_SYMBOL); + returnString.append(FILLING_SYMBOL.repeat(innerSpaces)); + returnString.append(RIGHT_TRIANGLE_SYMBOL); + returnString.append(FILLING_SYMBOL.repeat(sideSpaces)); + returnString.append("\n"); + sideSpaces--; + innerSpaces += 2; + } + + returnString.append(HORIZONTAL_SYMBOL.repeat(width / 2 * 2)); + returnString.append("\n"); + + return returnString.toString(); + } +} diff --git a/src/com/walking/lesson20_exceptions/task2/service/InputValidationException.java b/src/com/walking/lesson20_exceptions/task2/service/InputValidationException.java new file mode 100644 index 000000000..d2a1229cb --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/service/InputValidationException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task2.service; + +public class InputValidationException extends RuntimeException{ + public InputValidationException(String message) { + super(message); + } +} From 88685a7325fc502977e912a95fbf2fb46696410d Mon Sep 17 00:00:00 2001 From: Kot Date: Tue, 21 May 2024 11:43:10 +0300 Subject: [PATCH 16/17] lesson 20 task 2 --- .../lesson20_exceptions/task2/Main.java | 2 +- .../lesson20_exceptions/task3/Main.java | 33 ++++++++++++++++++- .../exeptions/ArrayValidationException.java | 13 ++++++++ .../exeptions/UnknownAnimalException.java | 7 ++++ .../task3/model/Animal.java | 4 +++ .../lesson20_exceptions/task3/model/Cat.java | 7 ++++ .../lesson20_exceptions/task3/model/Cow.java | 7 ++++ .../lesson20_exceptions/task3/model/Dog.java | 7 ++++ 8 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java create mode 100644 src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java create mode 100644 src/com/walking/lesson20_exceptions/task3/model/Animal.java create mode 100644 src/com/walking/lesson20_exceptions/task3/model/Cat.java create mode 100644 src/com/walking/lesson20_exceptions/task3/model/Cow.java create mode 100644 src/com/walking/lesson20_exceptions/task3/model/Dog.java diff --git a/src/com/walking/lesson20_exceptions/task2/Main.java b/src/com/walking/lesson20_exceptions/task2/Main.java index b25d0dc86..263daa6cb 100644 --- a/src/com/walking/lesson20_exceptions/task2/Main.java +++ b/src/com/walking/lesson20_exceptions/task2/Main.java @@ -15,7 +15,7 @@ * Предка исключения определите самостоятельно. */ public class Main { - public static void main(String[] args) throws InputValidationException { + public static void main(String[] args) { Scanner io = new Scanner(System.in); System.out.println("Enter '1' for square, '2' for triangle"); diff --git a/src/com/walking/lesson20_exceptions/task3/Main.java b/src/com/walking/lesson20_exceptions/task3/Main.java index 3b81b191c..601c3719b 100644 --- a/src/com/walking/lesson20_exceptions/task3/Main.java +++ b/src/com/walking/lesson20_exceptions/task3/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson20_exceptions.task3; +import com.walking.lesson20_exceptions.task3.exeptions.ArrayValidationException; +import com.walking.lesson20_exceptions.task3.exeptions.UnknownAnimalException; +import com.walking.lesson20_exceptions.task3.model.Animal; +import com.walking.lesson20_exceptions.task3.model.Cat; +import com.walking.lesson20_exceptions.task3.model.Cow; +import com.walking.lesson20_exceptions.task3.model.Dog; + /** * Реализуйте любой из вариантов задачи в уроке 18. * Для ситуации, когда тип животного неизвестен, выбрасывайте собственное исключение UnknownAnimalException. @@ -10,6 +17,30 @@ * которое содержит информацию об индексе массива, содержащем null. */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws UnknownAnimalException { + Animal[] animals = {new Cat(), new Dog(), new Cow()}; + try { + soundAll(animals); + } + catch (ArrayValidationException ex) { + System.out.printf("%d %s", ex.getIndex(), ex.getMessage()); + } + } + + private static void soundAll (Animal[] animals) throws UnknownAnimalException { + for (int i = 0; i < animals.length; i++) { + if (animals[i] == null) { + throw new ArrayValidationException("item in array is null", i); + } + if (Cat.class.equals(animals[i].getClass())) { + ((Cat) animals[i]).meow(); + } else if (Cow.class.equals(animals[i].getClass())) { + ((Cow) animals[i]).moo(); + } else if (Dog.class.equals(animals[i].getClass())) { + ((Dog) animals[i]).woof(); + } else { + throw new UnknownAnimalException("Unknown animal"); + } + } } } diff --git a/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java b/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java new file mode 100644 index 000000000..986a7c99f --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java @@ -0,0 +1,13 @@ +package com.walking.lesson20_exceptions.task3.exeptions; + +public class ArrayValidationException extends RuntimeException { + private int index; + public ArrayValidationException (String message, int index) { + super(message); + this.index = index; + } + + public int getIndex() { + return index; + } +} diff --git a/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java b/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java new file mode 100644 index 000000000..3e0656f73 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task3.exeptions; + +public class UnknownAnimalException extends Exception{ + 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..f95e7d064 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/model/Animal.java @@ -0,0 +1,4 @@ +package com.walking.lesson20_exceptions.task3.model; + +public class Animal { +} 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..aa39efb63 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/model/Cat.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task3.model; + +public class Cat extends Animal{ + public void meow () { + System.out.println("meow"); + } +} 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..095e5e7cd --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/model/Cow.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task3.model; + +public class Cow extends Animal{ + public void moo () { + System.out.println("moo"); + } +} 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..034deb315 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/model/Dog.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task3.model; + +public class Dog extends Animal{ + public void woof () { + System.out.println("woof"); + } +} From 2d9a103dcce6f8f54cb15dd4ff706cf502a11d79 Mon Sep 17 00:00:00 2001 From: Kot Date: Tue, 21 May 2024 12:04:37 +0300 Subject: [PATCH 17/17] lesson 20 all tasks --- .../walking/lesson20_exceptions/task3/Main.java | 16 ++++------------ .../exeptions/ArrayValidationException.java | 10 ++-------- .../task3/exeptions/UnknownAnimalException.java | 2 +- .../lesson20_exceptions/task3/model/Animal.java | 9 +++++++++ .../lesson20_exceptions/task3/model/Cat.java | 10 +++++++--- .../lesson20_exceptions/task3/model/Cow.java | 10 +++++++--- .../lesson20_exceptions/task3/model/Dog.java | 8 ++++++-- 7 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/com/walking/lesson20_exceptions/task3/Main.java b/src/com/walking/lesson20_exceptions/task3/Main.java index 601c3719b..0a1a112fc 100644 --- a/src/com/walking/lesson20_exceptions/task3/Main.java +++ b/src/com/walking/lesson20_exceptions/task3/Main.java @@ -2,10 +2,7 @@ import com.walking.lesson20_exceptions.task3.exeptions.ArrayValidationException; import com.walking.lesson20_exceptions.task3.exeptions.UnknownAnimalException; -import com.walking.lesson20_exceptions.task3.model.Animal; -import com.walking.lesson20_exceptions.task3.model.Cat; -import com.walking.lesson20_exceptions.task3.model.Cow; -import com.walking.lesson20_exceptions.task3.model.Dog; +import com.walking.lesson20_exceptions.task3.model.*; /** * Реализуйте любой из вариантов задачи в уроке 18. @@ -17,20 +14,15 @@ * которое содержит информацию об индексе массива, содержащем null. */ public class Main { - public static void main(String[] args) throws UnknownAnimalException { + public static void main(String[] args) { Animal[] animals = {new Cat(), new Dog(), new Cow()}; - try { soundAll(animals); - } - catch (ArrayValidationException ex) { - System.out.printf("%d %s", ex.getIndex(), ex.getMessage()); - } } - private static void soundAll (Animal[] animals) throws UnknownAnimalException { + private static void soundAll (Animal[] animals) { for (int i = 0; i < animals.length; i++) { if (animals[i] == null) { - throw new ArrayValidationException("item in array is null", i); + throw new ArrayValidationException(i); } if (Cat.class.equals(animals[i].getClass())) { ((Cat) animals[i]).meow(); diff --git a/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java b/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java index 986a7c99f..0aae999ea 100644 --- a/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java +++ b/src/com/walking/lesson20_exceptions/task3/exeptions/ArrayValidationException.java @@ -1,13 +1,7 @@ package com.walking.lesson20_exceptions.task3.exeptions; public class ArrayValidationException extends RuntimeException { - private int index; - public ArrayValidationException (String message, int index) { - super(message); - this.index = index; - } - - public int getIndex() { - return index; + public ArrayValidationException (int index) { + super(index + " item in array is null"); } } diff --git a/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java b/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java index 3e0656f73..f927d86bf 100644 --- a/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java +++ b/src/com/walking/lesson20_exceptions/task3/exeptions/UnknownAnimalException.java @@ -1,6 +1,6 @@ package com.walking.lesson20_exceptions.task3.exeptions; -public class UnknownAnimalException extends 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 index f95e7d064..90d2693aa 100644 --- a/src/com/walking/lesson20_exceptions/task3/model/Animal.java +++ b/src/com/walking/lesson20_exceptions/task3/model/Animal.java @@ -1,4 +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/Cat.java b/src/com/walking/lesson20_exceptions/task3/model/Cat.java index aa39efb63..81b3a8575 100644 --- a/src/com/walking/lesson20_exceptions/task3/model/Cat.java +++ b/src/com/walking/lesson20_exceptions/task3/model/Cat.java @@ -1,7 +1,11 @@ package com.walking.lesson20_exceptions.task3.model; -public class Cat extends Animal{ - public void meow () { - System.out.println("meow"); +public class Cat extends Animal { + public Cat() { + super("meow"); + } + + public void meow() { + super.sound(); } } diff --git a/src/com/walking/lesson20_exceptions/task3/model/Cow.java b/src/com/walking/lesson20_exceptions/task3/model/Cow.java index 095e5e7cd..cbbef6d6f 100644 --- a/src/com/walking/lesson20_exceptions/task3/model/Cow.java +++ b/src/com/walking/lesson20_exceptions/task3/model/Cow.java @@ -1,7 +1,11 @@ package com.walking.lesson20_exceptions.task3.model; -public class Cow extends Animal{ - public void moo () { - System.out.println("moo"); +public class Cow extends Animal { + public Cow() { + super("moo"); + } + + public void moo() { + super.sound(); } } diff --git a/src/com/walking/lesson20_exceptions/task3/model/Dog.java b/src/com/walking/lesson20_exceptions/task3/model/Dog.java index 034deb315..97de62fff 100644 --- a/src/com/walking/lesson20_exceptions/task3/model/Dog.java +++ b/src/com/walking/lesson20_exceptions/task3/model/Dog.java @@ -1,7 +1,11 @@ package com.walking.lesson20_exceptions.task3.model; public class Dog extends Animal{ - public void woof () { - System.out.println("woof"); + public Dog() { + super("woof"); + } + + public void woof() { + super.sound(); } }