36 lines
2.8 KiB
Markdown
36 lines
2.8 KiB
Markdown
|
---
|
|||
|
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 Разработка]]
|
|||
|
**Родитель**::
|
|||
|
**Источник**::
|
|||
|
**Создана**:: [[2024-11-23]]
|
|||
|
**Автор**::
|
|||
|
### Дополнительные материалы
|
|||
|
-
|
|||
|
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
|||
|
|