diff --git a/.gitignore b/.gitignore
index f68d109..ea3a58a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
### IntelliJ IDEA ###
+.idea/
out/
!**/src/main/**/out/
!**/src/test/**/out/
@@ -26,4 +27,4 @@ bin/
.vscode/
### Mac OS ###
-.DS_Store
\ No newline at end of file
+.DS_Store
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 07115cd..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 65e8411..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/DevisionOn.java b/src/DevisionOn.java
new file mode 100644
index 0000000..1ccb34f
--- /dev/null
+++ b/src/DevisionOn.java
@@ -0,0 +1,13 @@
+/**
+ * 2. Написать функциональный интерфейс с методом, который принимает ЧИСЛО и возвращает
+ * булево значение. Написать реализацию такого интерфейса в виде лямбда-выражения, которое возвращает
+ * true если переданное число делится без остатка на 13.
*/
+@FunctionalInterface
+public interface DevisionOn {
+ /**
+ * Предикант, получает число, возвращает бул
+ * @param t число
+ * @return булевое значение
+ */
+ boolean pred(T t);
+}
diff --git a/src/Discriminant.java b/src/Discriminant.java
new file mode 100644
index 0000000..6b5d16a
--- /dev/null
+++ b/src/Discriminant.java
@@ -0,0 +1,17 @@
+/**
+ * 3. Написать функциональный интерфейс с методом, который принимает три дробных числа: a, b, c и
+ * возвращает тоже дробное число. Написать реализацию такого интерфейса в виде лямбда-выражения,
+ * которое возвращает дискриминант.
+ * @param
+ */
+@FunctionalInterface
+public interface Discriminant {
+ /**
+ * Суплаер
+ * @param a дробное число
+ * @param b дробное число
+ * @param c дробное число
+ * @return дискриминант дробное число
+ */
+ N sup(N a,N b,N c);
+}
diff --git a/src/Main.java b/src/Main.java
index 7aeb918..ee423cb 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,15 +1,56 @@
-//TIP To Run code, press or
-// click the icon in the gutter.
+/**
+ * Класс Main, который использует функции классов в проекте для демонстрации выполненного задания.
+ *
+ * 1. Добавить в классовую модель из домашнего задания 1 (или написать новую модель)
+ * примеры использования дженерик-классов (обобщенных типов) и дженерик-интерфейсов.
+ *
+ * 2. Написать функциональный интерфейс с методом, который принимает число и возвращает
+ * булево значение. Написать реализацию такого интерфейса в виде лямбда-выражения, которое возвращает
+ * true если переданное число делится без остатка на 13.
+ *
+ * 3. Написать функциональный интерфейс с методом, который принимает три дробных числа: a, b, c и
+ * возвращает тоже дробное число. Написать реализацию такого интерфейса в виде лямбда-выражения,
+ * которое возвращает дискриминант. Кто забыл, D = b^2 — 4ac.
+ */
public class Main {
+ /**
+ * Это основной метод, использующий методы классов.
+ * @param args Не используется.
+ */
public static void main(String[] args) {
- //TIP Press with your caret at the highlighted text
- // to see how IntelliJ IDEA suggests fixing it.
- System.out.printf("Hello and welcome!");
-
- for (int i = 1; i <= 5; i++) {
- //TIP Press to start debugging your code. We have set one breakpoint
- // for you, but you can always add more by pressing .
- System.out.println("i test git= " + i);
- }
+ // (1)
+ Table stol1 = new Table<>("ТаблЭтка");
+ /*Воруем таблЭтку*/
+ System.out.println( "Что своровали со стола stol1 " + stol1.stealItem() ); // ТаблЭтка
+ /*А сейчас ничего не получим*/
+ System.out.println( "Что своровали со стола stol1 " + stol1.stealItem() ); // null
+
+ /*Тут такая же картина.*/
+ Table stolInt = new Table<>(52);
+ System.out.println( "Что своровали со стола stolInt " + stolInt.stealItem() ); // 52
+ System.out.println( "Что своровали со стола stolInt " + stolInt.stealItem() ); // null
+
+ // (2)
+ int testI =24;
+ double testD =26.0;
+
+ DevisionOn devisionOn13I = x-> (x % 13) == 0;
+ System.out.println("Результат при " + testI + " % 26 = " + devisionOn13I.pred(testI));
+
+ // делаем диапазон для из-за погрешности округления
+ DevisionOn devisionOn13D = x-> (-0.0001 < (x % 13)) && ((x % 13) < 0.0001);
+ System.out.println("Результат при " + testD + " % 26 = " + devisionOn13D.pred(testD));
+
+ // (3)
+ double a = 1.0;
+ double b = 2.0;
+ double c = 1.0;
+
+ Discriminant discriminant = (la, lb, lc) -> (lb*lb-4*la*lc);
+ System.out.println(String.format(("a = %.02f, b = %.02f, c = %.02f, D = %.02f"),a,b,c,discriminant.sup(a,b,c)));
+ a = 2.4;
+ b = 7.2;
+ c = 3.2;
+ System.out.println(String.format(("a = %.02f, b = %.02f, c = %.02f, D = %.02f"),a,b,c,discriminant.sup(a,b,c)));
}
-}
\ No newline at end of file
+}
diff --git a/src/Table.java b/src/Table.java
new file mode 100644
index 0000000..e0ef94b
--- /dev/null
+++ b/src/Table.java
@@ -0,0 +1,33 @@
+/**
+ * Класс стол, способный хранить "на себе" любой объект.
+ *
+ * @param тип объекта над которым работаем(любой)
+ */
+public class Table implements TableInterface {
+ private T item;
+
+ Table(T item){
+ this.item=item;
+ }
+
+ public T getItem() {
+ return this.item;
+ }
+
+ public void setItem(T item) {
+ this.item = item;
+ }
+
+ /**
+ * "Ворует" объект со стола, а оригинал, хранящийся на столе удаляется.
+ * @return копию предмета
+ */
+ @Override
+ public T stealItem(){
+ T temp = this.item;
+ this.item = null;
+ return temp;
+ }
+
+
+}
diff --git a/src/TableInterface.java b/src/TableInterface.java
new file mode 100644
index 0000000..cb069df
--- /dev/null
+++ b/src/TableInterface.java
@@ -0,0 +1,8 @@
+/**
+ * дженерик-интерфейс
+ * @param тип объекта над которым работаем(любой)
+ */
+
+public interface TableInterface {
+ public T stealItem();
+}