Skip to content
Original file line number Diff line number Diff line change
@@ -1,11 +1,52 @@
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;

import java.util.Scanner;

/**
* Реализуйте задачу
* <a href="https://github.com/KFalcon2022/practical-tasks/tree/master/src/com/walking/lesson14_polymorphism/task1">...</a>
* используя абстрактный класс.
*/
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");

Figure figure;

if (selectedFigure == 1){
figure = new Triangle(selectedLength);
}
else {
figure = new Square(selectedLength);
}

System.out.println(figure.builtFigure());







}
}
Original file line number Diff line number Diff line change
@@ -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();
}
Original file line number Diff line number Diff line change
@@ -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();
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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 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); //если последняя - то это основание треугольника
}

/* строка треугольника состоит из:
* пробелы слева + левая грань + пробелы между гранями + правая грань + пробелы справа
* /\
* / \
* /----\
*
*/
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();
}


}
Original file line number Diff line number Diff line change
@@ -1,12 +1,45 @@
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;

import java.util.Scanner;

/**
* Реализуйте задачу
* <a href="https://github.com/KFalcon2022/practical-tasks/tree/master/src/com/walking/lesson14_polymorphism/task1">...</a>
* используя интерфейс.
*/
public class Main {
public static void main(String[] args) {
int selectedFigure, selectedLength;

Scanner scanner = new Scanner(System.in);

System.out.println("What figure do you want? [1 - triangle, 2 - square]");
selectedFigure = scanner.nextInt();
System.out.println("Enter side's length [min - 3, max - 20]");
selectedLength = scanner.nextInt();
scanner.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");

Figure figure;

if (selectedFigure == 1) {
figure = new Triangle();
}
else {
figure = new Square();
}
System.out.println(figure.drawFigure(selectedLength));

}
}
Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
@@ -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 symbolToFill;
for (byte y = 0; y < width; y++) {
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(symbolToFill);
}
}
wholeFigure.append("\n");
}
return wholeFigure.toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.walking.lesson16_abstract_class_interface.task1_interface.model;

public class Triangle implements Figure{

@Override
public String drawFigure(int width) {
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 (int x = 0; x < innerSpaceCount; x++) {
if (y != 0) innerSpaces.append(FILLING_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();
}
}
24 changes: 24 additions & 0 deletions src/com/walking/lesson16_abstract_class_interface/task2/Main.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
package com.walking.lesson16_abstract_class_interface.task2;

import com.walking.lesson16_abstract_class_interface.task2.model.*;

import java.util.Scanner;

/**
* Реализуйте задачу
* <a href="https://github.com/KFalcon2022/practical-tasks/blob/master/src/com/walking/lesson3/Task2SwitchCase.java">...</a>
* с использованием интерфейсов. Каждая реализация должна возвращать свое сообщение.
*/
public class Main {

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");

Scanner scanner = new Scanner(System.in);
String userEntry = scanner.nextLine();
scanner.close();

Greeting reply;

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());

}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.walking.lesson16_abstract_class_interface.task2.model;

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();
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
11 changes: 11 additions & 0 deletions src/com/walking/lesson16_abstract_class_interface/task3/Main.java
Original file line number Diff line number Diff line change
@@ -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;

/**
* Реализуйте любую задачу из уроков о наследовании или полиморфизме с использованием новых знаний.
* Выбирайте инструмент с умом.
Expand All @@ -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());
}

}
}
Loading