This commit is contained in:
parent
1536a6c68c
commit
06a33b99b8
32
dev/architecture/Домен.md
Normal file
32
dev/architecture/Домен.md
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
aliases:
|
||||
- домена
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-09-27
|
||||
zero-link:
|
||||
- "[[../garden/ru/meta/zero/00 Архитектура ПО|00 Архитектура ПО]]"
|
||||
parents:
|
||||
linked:
|
||||
---
|
||||
**Домен** — это предметная область, в которой работает ваша [[../../../../_inbox/Информационная система|система]]. Это набор знаний, правил, процессов и объектов, которые описывают конкретную сферу деятельности. Домены могут быть разными в зависимости от сферы бизнеса, например: финансы, медицина, логистика, образование и т.д.
|
||||
|
||||
Другими словами, домен — это всё, что касается бизнес-логики, которой занимается [[../../../../_inbox/Информационная система|система]]. Разработчики, создающие приложения, должны глубоко понимать предметную область, чтобы адекватно моделировать её в коде.
|
||||
|
||||
> [!EXAMPLE] Пример домена
|
||||
> Для интернет-магазина домен будет включать такие элементы, как товары, заказы, корзина, покупатели, процесс оплаты и доставки. Все эти сущности и их взаимодействия составляют домен электронной коммерции.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-09-27]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
- [[Модель]]
|
||||
<!-- SerializedQuery END -->
|
46
dev/architecture/Контракт взаимодействия.md
Normal file
46
dev/architecture/Контракт взаимодействия.md
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-09-27
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]"
|
||||
- "[[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]"
|
||||
parents:
|
||||
linked:
|
||||
---
|
||||
В контексте разработки программного обеспечения **контракт** — это соглашение или набор правил, определяющий, как различные части системы (например, компоненты, классы или модули) взаимодействуют друг с другом. Контракт описывает обязанности и ожидания каждой из сторон (поставщика и потребителя), гарантируя, что при соблюдении этих условий взаимодействие будет корректным и предсказуемым.
|
||||
|
||||
Основные элементы контракта:
|
||||
- **Предусловия**: Условия, которые должны быть выполнены перед вызовом метода или началом взаимодействия. Например, входные данные метода должны быть корректными, а ресурс должен быть доступен.
|
||||
- **Постусловия**: Результаты, которые гарантируются после выполнения метода или операции, если предусловия были выполнены. Это может включать возвращаемое значение метода или состояние объекта после вызова.
|
||||
- **Инварианты**: Условия, которые остаются неизменными в течение жизни объекта. Например, допустимые диапазоны значений переменных или непротиворечивость состояния системы.
|
||||
## Примеры контрактов
|
||||
**Контракт в объектно-ориентированном программировании**: В [[ООП|ООП]] контракт может выражаться через интерфейсы или абстрактные классы, которые определяют набор методов, обязательных для реализации. Это позволяет программным компонентам общаться на основе общих соглашений, не зная конкретную реализацию.
|
||||
|
||||
Пример интерфейса как контракта:
|
||||
```java
|
||||
public interface Shape {
|
||||
double calculateArea(); // контракт: любой класс, реализующий Shape, обязан иметь этот метод
|
||||
}
|
||||
```
|
||||
|
||||
**Контракт API**: В контексте API контрактом является описание того, как клиент может взаимодействовать с API. Это включает в себя форматы запросов и ответов, методы HTTP, параметры, типы данных, кодировки и обработку ошибок.
|
||||
|
||||
Пример контракта REST API:
|
||||
- Метод: `POST /users`
|
||||
- Входные данные: JSON-объект с полями `name` и `email`
|
||||
- Ответ: код 201 (Created) и объект пользователя
|
||||
- Ошибки: код 400 (Bad Request) при некорректных данных
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]], [[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-09-27]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
26
dev/architecture/Модель.md
Normal file
26
dev/architecture/Модель.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-09-27
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]]"
|
||||
parents:
|
||||
- "[[Домен|Домен]]"
|
||||
linked:
|
||||
---
|
||||
**Модель** — это представление [[Домен|домена]] в коде. Она описывает, как сущности и объекты [[Домен|домена]] связаны между собой и взаимодействуют в системе. Модель может включать классы, структуры данных, правила валидации, бизнес-логику и отношения между объектами.
|
||||
|
||||
Хорошо спроектированная модель точно описывает доменные объекты и их поведение. Основная задача модели — предоставлять разработчику инструменты для работы с объектами [[Домен|домена]], обеспечивая соответствие бизнес-правилам и логике.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**::
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-09-27]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
Loading…
Reference in New Issue
Block a user