Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
### IntelliJ IDEA ###
.idea/
out/
!**/src/main/**/out/
!**/src/test/**/out/
Expand Down Expand Up @@ -26,4 +27,4 @@ bin/
.vscode/

### Mac OS ###
.DS_Store
.DS_Store
3 changes: 0 additions & 3 deletions .idea/.gitignore

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

13 changes: 13 additions & 0 deletions src/DevisionOn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* 2. Написать функциональный интерфейс с методом, который принимает <b>ЧИСЛО</b> и возвращает
* <b>булево</b> значение. Написать реализацию такого интерфейса в виде лямбда-выражения, которое возвращает
* true если переданное число делится без остатка на 13.<br>*/
@FunctionalInterface
public interface DevisionOn<T extends Number> {
/**
* Предикант, получает число, возвращает бул
* @param t число
* @return булевое значение
*/
boolean pred(T t);
}
17 changes: 17 additions & 0 deletions src/Discriminant.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* 3. Написать функциональный интерфейс с методом, который принимает три дробных числа: a, b, c и
* возвращает тоже дробное число. Написать реализацию такого интерфейса в виде лямбда-выражения,
* которое возвращает дискриминант.
* @param <N>
*/
@FunctionalInterface
public interface Discriminant<N extends Double> {
/**
* Суплаер
* @param a дробное число
* @param b дробное число
* @param c дробное число
* @return дискриминант дробное число
*/
N sup(N a,N b,N c);
}
65 changes: 53 additions & 12 deletions src/Main.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,56 @@
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
/**
* Класс Main, который использует функции классов в проекте для демонстрации выполненного задания.<br>
*
* 1. Добавить в классовую модель из домашнего задания 1 (или написать новую модель)
* примеры использования дженерик-классов (обобщенных типов) и дженерик-интерфейсов.<br>
*
* 2. Написать функциональный интерфейс с методом, который принимает число и возвращает
* булево значение. Написать реализацию такого интерфейса в виде лямбда-выражения, которое возвращает
* true если переданное число делится без остатка на 13.<br>
*
* 3. Написать функциональный интерфейс с методом, который принимает три дробных числа: a, b, c и
* возвращает тоже дробное число. Написать реализацию такого интерфейса в виде лямбда-выражения,
* которое возвращает дискриминант. Кто забыл, D = b^2 — 4ac.
*/
public class Main {
/**
* Это основной метод, использующий методы классов.
* @param args Не используется.
*/
public static void main(String[] args) {
//TIP Press <shortcut actionId="ShowIntentionActions"/> 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 <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
System.out.println("i test git= " + i);
}
// (1)
Table<String> stol1 = new Table<>("ТаблЭтка");
/*Воруем таблЭтку*/
System.out.println( "Что своровали со стола stol1 " + stol1.stealItem() ); // ТаблЭтка
/*А сейчас ничего не получим*/
System.out.println( "Что своровали со стола stol1 " + stol1.stealItem() ); // null

/*Тут такая же картина.*/
Table<Integer> 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<Integer> devisionOn13I = x-> (x % 13) == 0;
System.out.println("Результат при " + testI + " % 26 = " + devisionOn13I.pred(testI));

// делаем диапазон для из-за погрешности округления
DevisionOn<Double> 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<Double> 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)));
}
}
}
33 changes: 33 additions & 0 deletions src/Table.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* Класс стол, способный хранить "на себе" любой объект.<br>
*
* @param <T> тип объекта над которым работаем(любой)
*/
public class Table<T> implements TableInterface<T> {
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;
}


}
8 changes: 8 additions & 0 deletions src/TableInterface.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/**
* дженерик-интерфейс
* @param <T> тип объекта над которым работаем(любой)
*/

public interface TableInterface<T> {
public T stealItem();
}