-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainUnit02.java
More file actions
125 lines (108 loc) · 8.4 KB
/
MainUnit02.java
File metadata and controls
125 lines (108 loc) · 8.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package Work02;
import java.util.Scanner;
import static Work02.Unit02.Main.*;
public class MainUnit02 {
private static int userIntegerInput(String msg) {
Scanner sc = new Scanner(System.in);
int inputStr;
while (true) {
System.out.print(msg);
try {
inputStr = Integer.parseInt(sc.next());
break;
} catch (NumberFormatException e) {
System.out.println(red + "Неверный ввод! Введите целое число!" + reset);
}
}
return inputStr;
}
public static void itemSelect() { // Метод выбора по параметрам
System.out.println(yellow + """
\n1) Команда - "1" запускает выполнение Урок 1, задача № 1;
1) Команда - "2" запускает выполнение Урок 2, задача № 2;
3) Команда - "0" запускает выхода в предыдущее меню.
Введите выбранную команду:""" + reset);
int checkExit = 3;
while (checkExit != 0) {
checkExit = userIntegerInput("\nВведите номер команды. Для выхода в предыдущее меню нажмите 0.\nВвод: ");
switch (checkExit) {
case 1 -> {
System.out.println("\nВыполнение: Урок 1, Задание №1 ... ");
mainTask01();
}
case 2 -> {
System.out.println("\nВыполнение: Урок 2, Задание №2 ... ");
//System.out.println("\nТут пусто. В уроке было только одна задача");
mainTask02();
}
}
System.out.println(yellow + "\nВыполненеие завершено." + reset);
}
}
public static void getAllItems() { // Выводит текстом какие задачи есть
System.out.println(red + "\n\tUnit 1, Задание 1.\n" + reset);
System.out.println("""
Урок 1. Принципы ООП: Инкапсуляция, наследование, полиморфизм
Реализовать, с учетом ооп подхода, приложение
Для проведения исследований с генеалогическим древом.
Идея: описать некоторое количество компонент, например:
- модель человека
- компонента хранения связей и отношений между людьми: родитель, ребёнок - классика, но можно подумать\s
и про разные отношения
- компонент для проведения исследований
- дополнительные компоненты, например отвечающие за вывод данных в консоль, загрузку и сохранения в файл,
получение/построение отдельных моделей человека.
Под “проведением исследования” можно понимать получение всех детей выбранного человека.
* на первом этапе сложно применять сразу все концепты ООП, упор делается на инкапсуляцию.\s
Если получится продумать иерархию каких-то компонент - здорово. После первой лекции,\s
они не знают про абстракцию и интерфейсы
Продумать какие проблемы могут возникнуть в том, коде, который они написали.
Например, с генеалогическим древом, мы можем знать о двух людях, но не знаем в каких “отношениях” они были -\s
двоюродные или троюродные, или мы точно знаем как звали прапрабабушку, но совершенно не знаем прабабушку -\s
как хранить такие связи или что будет если в компоненту обхода передать ссылку на null-дерево.
""");
System.out.println(red + "\n\tUnit 2, Задание 2.\n" + reset);
System.out.println("""
Урок 2. Принципы ООП Абстракция и интерфейсы. Пример проектирования
Используйте предыдущие задачи из прошлого домашнего задания.
Необходимо гарантированно продумать иерархию компонент\s
и взаимодействия их между собой.
Обеспечить переход от использования явных классов в сторону использования абстрактных типов.
Т.е. работаем не с:
конкретным экземпляром генеалогического древа, а с интерфейсом “ генеалогическое древо”
Под исследованием передачу конкретного экземпляра класса узла и отношения
Передать узел (сына) и найти его отца
Передать узел (дедушка) и найти его внуков
Продумать возможность ухода он конкретных "котиков", к интерфейсу “котик”, лучше уйти от взаимодействия\s
с конкретными питомцами и повысить уровень абстракции до взаимодействия с котиком, собачкой или хомяком т е\s
с интерфейсом “животное”
""");
}
public static void main(String[] args) {
int checkExit = 3;
while (checkExit != 0) {
System.out.println(cyan + """
\n
1) Команда - "1" запускает меню с выбором выполнения задач;
2) Команда - "2" запускает отображение текста задач и их нумерацию;
3) Команда - "0" запускает выход и завершение программы.
""" + reset);
checkExit = userIntegerInput("""
Введите номер действия. Для выхода нажмите 0. \nВвод:\s
""");
switch (checkExit) {
case 1 -> itemSelect();
case 2 -> getAllItems();
}
}
System.out.println("""
1) Команда - "1" запускает меню с выбором выполнения задач;
2) Команда - "2" запускает отображение текста задач и их нумерацию;
3) Команда - "0" запускает выход и завершение программы.
Введите выбранную команду:""");
}
public static final String reset = "\u001B[0m";
public static final String red = "\u001B[31m";
public static final String yellow = "\u001B[33m";
public static final String cyan = "\u001B[36m";
}