--- aliases: tags: - maturity/🌱 - content/muesli date: 2024-11-23 --- [[../dev/architecture/ООП|Объектно-ориентированное программирование]] (ООП) появилось как подход к созданию программ, основанный на моделировании реального мира. **Объекты задумывались как автономные сущности**, которые взаимодействуют друг с другом через четко определенные интерфейсы. Пример: в объекте «Автомобиль» методы, такие как `запустить()`, `ехать()`, и свойства, такие как скорость, объединены в единое целое. В реальных проектах принципы ООП часто отходят на второй план. Распространены следующие практики: - **Классы хранения данных** (Data Transfer Object, DTO): - Такие классы не содержат логики, а только свойства с геттерами и сеттерами. - Используются для передачи данных между [[../dev/architecture/Архитектурный слой|архитектурными слоями]] приложения. - **Сервисы**: - Содержат [[../dev/architecture/Бизнес-логика|бизнес-логику]]. - Взаимодействуют с DTO или объектами баз данных, но не объединяют данные и логику. Фактически [[../dev/architecture/Инкапсуляция|инкапсуляция]] становится слабее, так как обычно у DTO есть геттеры и сеттеры, что открывает внутреннее состояние объекта. ==Это не обязательно плохо или хорошо — это просто реальность современных проектов.== Однако, странно продолжать говорить о применении объектно-ориентированного программирования, если оно фактически перестает соответствовать своим основным принципам. *** ## Мета информация **Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]], [[../meta/zero/00 Разработка|00 Разработка]] **Родитель**:: **Источник**:: **Создана**:: [[2024-11-23]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки