Skip to content

Commit 0323438

Browse files
author
Alexey Shcherbakov
committed
L7 обновлено описание
1 parent 63f389b commit 0323438

File tree

5 files changed

+26
-19
lines changed

5 files changed

+26
-19
lines changed

lecture7/src/main/scala/lectures/l7/v1/Storage.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@ package lectures.l7.v1
22

33
/*
44
* Реализовать класс, который будет хранить в памяти элементы с типом V и ключом K
5+
* Элементы должны реализовывать интерфейс Item, с типом ключа K
6+
* Реализовать метод, который будет принимать только один элемент для сохранения, без явного указания ключа
7+
* Реализовать объект компаньен, который предоставит возможность создавать пустой MemoryStorage и MemoryStorage с одним элементом.
8+
*
9+
* Способ использования смотреть в Main
510
*/
611

712
import lectures.l7.Item
813
trait Storage[K, V] {
914
def persist(id: K, item: V): Storage[K, V]
1015
}
1116

12-
class MemoryStorage
17+
class MemoryStorage[T] extends Storage[T, Item[T]]

lecture7/src/main/scala/lectures/l7/v2/Storage.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ package lectures.l7.v2
33
/*
44
* Реализовать класс, который будет хранить в памяти элементы с типом V и ключом K
55
* Элементы должны реализовывать интерфейс Item, с типом ключа K
6-
* Реализовать метод, который будет принимать только элемент для сохранения, без явного указания ключа
6+
* Реализовать метод, который будет принимать только один элемент для сохранения, без явного указания ключа
7+
* Реализовать объект компаньен, который предоставит возможность создавать пустой MemoryStorage и MemoryStorage с одним элементом.
8+
*
9+
* В отличие от реализации в v1, данном случае MemoryStorage должен быть специализирован для конкретного типа элементов, например Dog, Cat
10+
* Способ использования смотреть в Main
711
*/
812

913
import lectures.l7.Item

lecture7/src/main/scala/lectures/l7/v3/Storage.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package lectures.l7.v3
22

3+
34
/*
4-
* Реализовать класс, который будет хранить в памяти элементы с типом V и ключом K
5-
* Элементы должны реализовывать интерфейс Item, с типом ключа K
6-
* Реализовать метод, который будет принимать только элемент для сохранения, без явного указания ключа
7-
* Должен позволять помещать в хранилище объекты родительского типа С по-отношению к V,
5+
* Реализация должна поддерживать все что в v2, но добавляется:
6+
* должен позволять помещать в хранилище объекты родительского типа С по-отношению к V,
87
* результатом будет хранилище с ключом K и типом C
8+
*
9+
* Способ использования смотреть в Main
10+
*
11+
* Допустимо менять ограничения Type Parameter в исходном trait
912
*/
1013

1114
import lectures.l7.Item

lecture7/src/main/scala/lectures/l7/v4/Storage.scala

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package lectures.l7.v4
22

33
/*
4-
* Реализовать класс, который будет хранить в памяти элементы с типом V и ключом K
5-
* Элементы должны реализовывать интерфейс Item, с типом ключа K
6-
* Реализовать метод, который будет принимать только элемент для сохранения, без явного указания ключа
7-
* Должен позволять помещать в хранилище объекты родительского типа С по-отношению к V,
8-
* результатом будет хранилище с ключом K и типом C
9-
* Реализовать объедиение двух хранилищ, повышением или понижением типа
4+
* Реализация должна поддерживать все что в v3, но добавляется:
5+
* возможность объедиение двух хранилищ, результируеще хранилище будет общего для обоих типа
6+
*
7+
* Способ использования смотреть в Main
108
*/
119

1210
import lectures.l7.Item

lecture7/src/main/scala/lectures/l7/v5/Storage.scala

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package lectures.l7.v5
22

33
/*
4-
* Реализовать класс, который будет хранить в памяти элементы с типом V и ключом K
5-
* Элементы должны реализовывать интерфейс Item, с типом ключа K
6-
* Реализовать метод, который будет принимать только элемент для сохранения, без явного указания ключа
7-
* Должен позволять помещать в хранилище объекты родительского типа С по-отношению к V,
8-
* результатом будет хранилище с ключом K и типом C
9-
* Реализовать объедиение двух хранилищ, повышением или понижением типа
10-
* Реализовать поддержку foreach
4+
* Реализация должна поддерживать все что в v4, но добавляется:
5+
* возможность использования foreach
6+
*
7+
* Способ использования смотреть в Main
118
*/
129

1310
import lectures.l7.Item

0 commit comments

Comments
 (0)