digital-garden/muesli/Объектно ориентированное программирование в современном мире.md
Struchkov Mark 2c945630a3
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
Обновление и рефакторинг
2024-11-23 21:34:40 +03:00

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