-
Notifications
You must be signed in to change notification settings - Fork 0
/
task
108 lines (89 loc) · 11 KB
/
task
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
-------------------------------------------------------------------------
Учебное задание по ООП-анализу и программированию
для ролей системный аналитик, аналитик-программист, программист.
-------------------------------------------------------------------------
= Общее описание задания =
-------------------------------------------------------------------------
Необходимо реализовать программу, в которой будут реализованы
иерархия классов, описывающая аренду торгового комплекса, методы расчета стоимости боксов,
автоматический генератор начальных (можно случайных) условий (количество боксов на
i-ом этаже, количество этажей, количество торговых комплексов).
Дополнительные требования к результатам приведены в разделе "требования к результатам".
-------------------------------------------------------------------------
== Описание предметной области ==
-------------------------------------------------------------------------
Предметная область связана с арендой торгового центра.
Торговый комплекс может быть в центре, на окраине, за городом.
Стоимость аренды на окраине составляет 120% от стоимости арены за городом.
Стоимость аренды в центре в два раза выше чем за городом.
Торговый комплекс - набор боксов. Бокс характеризуется следующими параметрами:
— Площадь
— Номер
— Этаж
— Тип бокса
— Стоимость аренды (возвращается методом вычисления)
Типы боксов:
— Торговля продуктами питания
— Торговля одеждой
— Торговля электроникой
Бокс торговли продовольственными товарами характеризуется следующими параметрами:
— количество холодильных камер
— количество весов
Бокс торговли одеждой характеризуется следующим набором параметров:
— количество примерочных кабинок
Бокс торговли электроникой характеризуется следующими параметрами:
— количество электрических розеток
— общее потребление электричества, Вт
Стоимость аренды должна вычисляться следующим образом:
Базовый тариф 500 руб за квадратный метр в месяц, плюс:
- для боксов торговли продовольственными товарами:
50 * кол-во холодильных камер + 20* кол-во весов, если кол-во
холодильных камер меньше 3, то делается скидка 10% на всю оплату
- для торговли одеждой: кол-во примерочных кабинок * 30
- для боксов электроники: если потребляемая мощность больше 500 кВт/ч - то
потребляемое кол-во сверх 500 кВт/ч * на стоимость кВт/ч (2 руб),
если более 5 розеток - то кол-во розеток * 200 руб
Боксы на первом этаже - нужно общую стоимость умножить на 5%.
-------------------------------------------------------------------------
== требования к результатам ==
-------------------------------------------------------------------------
Комплект результатов после выполнения задания должен включать :
1) модель сущностей предметной области в виде ER-диаграммы в нотации диаграммы классов (UML).
(рекомендуется делать в программе DIA, но это не обязательно, за реализацию диаграммы в другом по (umbrella modeller, sparx enterprise architect и др) штрафных баллов начисляться не будет)
2) программу на Java (исходный код и исполняемый .jar),
к которой предъявляются следующие требования:
(2.1) - в ней должны быть описаны все сущности модели предметной области в
виде одноименных классов; эти классы расположить в пакете "com.unis.test.enteties"
(2.2) - должен быть реализован класс-хранилище, в задачи которого входит хранение в памяти объектов, которыми можно манипулировать, используя функции интерфейса класса;
интерфейс класса-хранилища должен быть описан отдельно ( интерфейс IObjectStore.java );
реализация интерфейса должна поддерживать логические ограничения модели (например нельзя добавить описание бокса в несуществующий этаж знания);
класс хранилища должен быть "хорошо инкапсулирован": внутренний механизм хранения объектов должен быть не доступен снаружи напрямую - вся работа по помещению объектов в хранилище, поиску и выдаче объектов из хранилища должна вестись через функции класса хранилища
например сигнатура функции которая возвращает описание торгового центра может быть такой:
TheTradeCenter getTradeCenterById(long tradeCenterID)
сигнатура возвращаеющая идентификаторы тоорговых центров которые есть в хранилище, может быть такой:
long[] getTradeCenterIdsList()
(2.3) - класс-"заполнятель". Он должен реализовывать задачи генерации начальных условий.
Он должен работать с хранилишем, и все сгенерированные обхекты помещать в хранилище.
(2.4) - класс-"распечатываетель". Его задача - выводить в консоль последовательно описания
всех объектов хранилища: область, торговый центр, этаж, перечень боксов, и информацию по каждому объекту (где применимо): цена аренды, площадь бокса и пр.
Например, в таком виде:
------------------------------
** торговый центр: ивановское (зона расположения: 'область', этажей : 2 )
* Боксы на этаже '0':
- 'орифлейм' ( площадь: 24, тип: одежда, стоимость аренды: 243 тр.)
- 'чистая линия' ( площадь: 24, тип: пр.питания, стоимость
аренды: 224 тр.)
* Боксы на этаже '1': ......
------------------------------
и т.д. по всем центрам, этажам, боксам которые имеются в хранилище.
(2.5) - при запуске, программа должна выполнять следующие действия:
(а) создается объект хранилища, создается объект класса-заполнятеля и ему передается хранилище для заполнения;
(б) после этого - создается объект класса-распечатываетеля, и ему передается объект хранилища, из которого "распечатыватель" получает перечень объектов и выводит их.
-------------------------------------------------------------------------
== Требования к защите ==
-------------------------------------------------------------------------
При защите данного задания должен быть способен:
- описать причины тех или иных решений, принятых при моделировании предметной области , почему те или иные атрибуты отнесены к той или иной сущности, почему распределение функций между классами (например расчет стоимости бокса, стоимости аренды ТЦ) проведено именно таким образом); описать альтернативные решения, если они есть; ответить на вопросы по структуре сущностей описывающих предметную область (например поддерживаются ли моделью подземные торговые центры (см 'ТЦ Охотный ряд')", как добавить поддержку парковки; может ли бокс занимать 2 этажа (см боксы "Ашан" в "ТДК Тройка";
- провести анализ влияния - "что будет если" ...меняется предметная область. Например добавляется новый тип бокса (что нудно будет поменять в модели и в программе); ...меняются ставки при расчете тарифов аренды; ...меняются алгоритмы расчета аренды; и др.
- ответить на вопросы по теории ООП и основам языка используемого при решении задания (в данном случае - Java).
-------------------------------------------------------------------------