Загрузка данных
Вижу новый файл **«Задания Модуль 9, тема 17»**. В нём 6 заданий: тесты, этапы моделирования, уровни UML, отношения между классами, диаграмма классов библиотеки и кейс по фитнес-клубу.
Если нужно **решить всё полностью**, вот готовые ответы:
### Задание 1. Тесты
1. **б)** Написание программного кода
2. **а)** Концептуальный
3. **в)** Агрегация
4. **б)** Граничный класс
5. **б)** Организованное мероприятие по созданию моделей
6. **б)** Ведущий
7. **а)** Задачи и доски
8. **б)** Обобщение
9. **а)** Строгая агрегация
10. **в)** Реализации
---
### Задание 2. Задачи этапа моделирования
| № | Задача | Содержание | Результат |
| - | -------------------------------- | ----------------------------------------------------------------------- | ---------------------------- |
| 1 | Проектирование структуры системы | Определение классов, атрибутов и связей между ними | Структурная модель системы |
| 2 | Моделирование поведения | Описание взаимодействия объектов и поведения системы | Поведенческая модель |
| 3 | Валидация требований | Проверка требований на полноту, непротиворечивость и соответствие целям | Подтверждённые требования |
| 4 | Документирование решений | Оформление моделей и принятых проектных решений | Документация проекта |
| 5 | Подготовка к реализации | Уточнение моделей и подготовка их к программной реализации | Модель, готовая к реализации |
---
### Задание 3. Три уровня диаграмм классов UML
| Уровень | Этап | Что отображает | Пример |
| ------------------ | ------------------------- | ------------------------------------------------------ | ------------------------------ |
| **Концептуальный** | Анализ предметной области | Основные понятия предметной области и связи между ними | Студент, Группа, Университет |
| **Спецификаций** | Проектирование | Интерфейсы, операции и свойства классов | `Студент → записаться()` |
| **Реализации** | Программирование | Конкретную реализацию классов, типы данных и методы | `name: String`, `age: Integer` |
В файле эти три уровня выделены как **концептуальный, спецификаций и реализации**.
---
### Задание 4. Отношения между классами
| № | Классы | Тип отношения | Обоснование |
| - | ---------------------- | --------------- | ---------------------------------------------- |
| 1 | Студент — Университет | **Ассоциация** | Студент связан с университетом |
| 2 | Автомобиль — Двигатель | **Композиция** | Двигатель является составной частью автомобиля |
| 3 | Круг — Фигура | **Обобщение** | Круг является разновидностью фигуры |
| 4 | Заказ — Товар | **Агрегация** | Заказ содержит товары |
| 5 | Отчёт — База данных | **Зависимость** | Отчёт использует данные из БД |
| 6 | Дом — Комната | **Композиция** | Комнаты являются составными частями дома |
Эти типы отношений прямо перечислены в условии задания.
---
# Задание 5. Диаграмма классов «Библиотека»
Условие требует минимум 5 классов, атрибуты, методы и отношения между классами.
### Классы
**Книга**
* Атрибуты: `название`, `автор`, `ISBN`
* Методы: `найти()`, `получитьИнформацию()`
**Читатель**
* Атрибуты: `ФИО`, `номерБилета`
* Методы: `взятьКнигу()`, `вернутьКнигу()`
**Библиотекарь**
* Атрибуты: `ФИО`, `должность`
* Методы: `выдатьКнигу()`, `принятьКнигу()`
**Выдача**
* Атрибуты: `датаВыдачи`, `датаВозврата`
* Методы: `оформитьВыдачу()`, `закрытьВыдачу()`
**Каталог**
* Атрибуты: `раздел`, `количествоКниг`
* Методы: `добавитьКнигу()`, `найтиКнигу()`
### Связи
```text
Каталог ◆──── Книга
агрегация
Читатель ───── Выдача
ассоциация
Книга ──────── Выдача
ассоциация
Библиотекарь ───── Выдача
ассоциация
```
Можно оформить диаграмму следующим образом:
```text
┌─────────────────────┐
│ Книга │
├─────────────────────┤
│ название │
│ автор │
│ ISBN │
├─────────────────────┤
│ найти() │
│ получитьИнформацию()│
└─────────────────────┘
▲
│ агрегация
│
┌─────────────────────┐
│ Каталог │
├─────────────────────┤
│ раздел │
│ количествоКниг │
├─────────────────────┤
│ добавитьКнигу() │
│ найтиКнигу() │
└─────────────────────┘
┌─────────────────────┐
│ Читатель │
├─────────────────────┤
│ ФИО │
│ номерБилета │
├─────────────────────┤
│ взятьКнигу() │
│ вернутьКнигу() │
└─────────────────────┘
│
│
▼
┌─────────────────────┐
│ Выдача │
├─────────────────────┤
│ датаВыдачи │
│ датаВозврата │
├─────────────────────┤
│ оформитьВыдачу() │
│ закрытьВыдачу() │
└─────────────────────┘
▲
│
│
┌─────────────────────┐
│ Библиотекарь │
├─────────────────────┤
│ ФИО │
│ должность │
├─────────────────────┤
│ выдатьКнигу() │
│ принятьКнигу() │
└─────────────────────┘
```
---
# Задание 6. Кейс «Фитнес-клуб»
В кейсе требуется определить **5–7 классов**, их атрибуты и методы, построить связи и определить 3 задачи для контроля в Weeek.
### 1. Классы
**Клиент**
* `ФИО`
* `телефон`
* `датаРождения`
* `записаться()`
* `отменитьЗапись()`
**Абонемент**
* `тип`
* `датаНачала`
* `датаОкончания`
* `стоимость`
* `оплатить()`
* `проверитьСрок()`
**Тренировка**
* `название`
* `дата`
* `время`
* `продолжительность`
* `добавитьКлиента()`
* `отменитьТренировку()`
**Тренер**
* `ФИО`
* `специализация`
* `стаж`
* `провестиТренировку()`
* `добавитьТренировку()`
**Платёж**
* `сумма`
* `дата`
* `способОплаты`
* `провестиОплату()`
* `вернутьСредства()`
**Прогресс**
* `вес`
* `рост`
* `датаИзмерения`
* `добавитьИзмерение()`
* `показатьДинамику()`
### 2. Связи между классами
```text
Клиент ◆──── Абонемент
композиция
Клиент ───── Тренировка
ассоциация
Тренер ───── Тренировка
ассоциация
Клиент ◆──── Прогресс
композиция
Абонемент ───── Платёж
ассоциация
```
### 3. Упрощённая UML-диаграмма
```text
┌───────────────┐
│ Клиент │
├───────────────┤
│ ФИО │
│ телефон │
│ датаРождения │
├───────────────┤
│ записаться() │
│ отменитьЗапись│
└───────┬───────┘
│
┌────┴─────┐
▼ ▼
┌─────────┐ ┌──────────────┐
│Абонемент│ │ Тренировка │
├─────────┤ ├──────────────┤
│ тип │ │ название │
│ начало │ │ дата │
│ конец │ │ время │
│ стоимость││ длительность │
├─────────┤ ├──────────────┤
│ оплатить│ │ добавить() │
│ проверить││ отменить() │
└────┬────┘ └──────┬───────┘
│ │
▼ ▼
┌─────────┐ ┌───────────┐
│ Платёж │ │ Тренер │
├─────────┤ ├───────────┤
│ сумма │ │ ФИО │
│ дата │ │ специализация│
│ способ │ │ стаж │
└─────────┘ └───────────┘
Клиент
│
▼
┌─────────────┐
│ Прогресс │
├─────────────┤
│ вес │
│ рост │
│ дата │
├─────────────┤
│ измерение() │
│ динамика() │
└─────────────┘
```
### 4. Три задачи для контроля в Weeek
1. **Разработать UML-модель фитнес-клуба** — определить классы, атрибуты, методы и связи.
2. **Проверить модель на соответствие требованиям** — убедиться, что все функции системы отражены в модели.
3. **Подготовить модель к реализации** — согласовать итоговую диаграмму и передать её разработчикам.
Готово — это можно **сдавать как выполненную работу**.