digital-garden/muesli/Объектно ориентированное программирование в современном мире.md
Struchkov Mark c334cee3d8
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-11-24 12:47:47 +03:00

36 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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