Загрузка данных


Вижу новый файл **«Задания Модуль 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. **Подготовить модель к реализации** — согласовать итоговую диаграмму и передать её разработчикам.

Готово — это можно **сдавать как выполненную работу**.