Метаданные объектов

  • Идентификатор (UUID)
  • Версия (etag) или статус
  • Права доступа

Генерация идентификатора

  • По возрастанию
  • Случайным образом
  • UUID (universally unique identifier)

Реализация метаданных

  • Реализация
  • Наследование
  • Параметризация
  • Композиция
  • Генерация классов или аспекты

Item

typealias ItemId = String

@Serializable
class Item<E>(
    val elem: E,
    val id: ItemId
)

Классы данных

@Serializable
class Student(
    val firstname: String,
    val surname: String
){
    fun fullname() = "$firstname $surname"
}

typealias StudentId = ItemId
val Student.json
    get() = Json.encodeToString(this)