Мейнстримные ООЯП Все есть объект (некоторого класса)… …с частично скрытым состоянием (но это не точно)… …которое произвольно меняется при любом взаимодействии с объектом (или без него)… …и который может быть связан и обращаться к любым* другим объектам Следующая парадигма ЯП Есть значения (паттерны Value object, DTO) ▪ составное, неизменяемое, сериализуемое, пассивное, не зависящее ни от чего внешнего ▪ например: строка, матрица, список, сообщение, снимок состояния, … ▪ может содержать другие значения, но ничего больше Есть хранилища («состояния», паттерн Builder) ▪ изменяемое, сериализуемое, пассивное, не зависящее ни от чего внешнего ▪ может содержать значения и дочерние хранилища ▪ например: массив, B-дерево, очередь, стек, StringBuilder Есть компоненты без состояния (паттерн «чистая функция» из ФП) ▪ функции или их наборы, включая вложенные скрытые; только локальные переменные-хранилища ▪ часто встречаются в ролях: «сервис», «контроллер», «адаптер» ▪ может иметь зависимости – точки подключения интерфейсов других компонентов Есть компоненты с состоянием (состояние = внутреннее хранилище) Жесткое разделение команд и запросов в интерфейсах (паттерн/принцип CQS) (Запросы не меняют хранилище данного компонента и не вызывают команд других компонент (!!!) Есть отношение вложенности компонент и интерфейсов (часть/целое) Новые абстракции в языке 16 / 19 16