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