
oop_kurs
.pdfМИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра информационной безопасности
КУРСОВАЯ РАБОТА По дисциплине «Объектно-ориентированное программирование»
Вариант 5
_______
_______
_______
_______
Санкт-Петербург
2023
ЗАДАНИЕ
НА КУРСОВУЮ РАБОТУ
Вариант 5
Исходные данные: на столе лежат S (3) стопок книг многотомного издания из N (30) томов. Распределение томов по стопкам и порядку номеров томов случайное (генерируется изначально и по команде пользователя).
Каждый том имеет одинаковые ширину L (50) и высоту H (80), но разную случайную толщину W, распределенную по равномерному закону на интервале [W1,W2] (15,25). Имеется стеллаж с М (4) полками шириной,
вычисляемой по формуле «суммарная ширина всех книг» *1.2/M.
Пользователь, возможно образуя новую стопку на столе, перекладывает книги на стеллаж слева-направо и сверху-вниз по порядку томов, переходя на следующую полку, когда предыдущая заполнена. После расстановки книг на стеллаже можно брать любой том для чтения. При этом место тома остается пустым.
Примечание. Все размеры указаны в пикселях экрана.
2
Содержание пояснительной записки:
Содержание, постановка задачи, диаграммы объектной модели,
подсистема «Интерфейс», подсистема «Модель», скриншоты контрольного примера работы реализованного приложения, выводы по курсовой работе.
Предполагаемый объем пояснительной записки:
Не менее 15 страниц.
Дата выдачи задания: 15.09.2023
Дата сдачи реферата: 24.12.2023
Дата защиты реферата: 24.12.2023
_______
_______
_______
_______
3
АННОТАЦИЯ
Курсовая работа состоит из приложения, функционал которого заключается в размещении книг определенного размера по стеллажу. После заполнения одного стеллажа, книги начинают складываться на другом.
Пользователь может вытащить одну из книг, тогда на ее месте образуется пустота.
SUMMARY
The course work consists of an application whose functionality is to place books of a certain size on a shelf. Once one shelf is full, books begin to stack on another. The user can pull out one of the books, then a void appears in its place.
4
СОДЕРЖАНИЕ
1. |
ПОСТАНОВКА ЗАДАЧИ.................................................................... |
6 |
|
|
1.1 |
ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ ................................... |
6 |
|
1.2 |
ОБОСНОВАНИЕ ВЫБОРА ЯЗЫКА ПРОГРАММИРОВАНИЯ И |
|
ОБЪЕКТНЫХ БИБЛИОТЕК КОНСТРУКТОРСКИХ КЛАССОВ................. |
6 |
||
2. |
ДИАГРАММЫ ОБЪЕКТНОЙ МОДЕЛИ........................................... |
7 |
|
|
2.1 |
МОДЕЛЬ «СУЩНОСТЬ-СВЯЗЬ» ..................................................... |
7 |
|
2.1 |
ДИАГРАММА КЛАССОВ ................................................................. |
7 |
3. |
ПОДСИСТЕМА ИНТЕРФЕЙС ......................................................... |
11 |
|
|
3.1. ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ ИНТЕРФЕЙСНЫХ ОКОН |
||
............................................................................................................................. |
|
|
11 |
|
3.1.1 ОСНОВНОЕ ОКНО ................................................................... |
11 |
|
|
3.1.2. ОКНО ПАРАМЕТРОВ И ОТОБРАЖЕНИЯ СОСТОЯНИЕ |
||
ОБЪЕКТОВ ПрО ........................................................................................... |
11 |
||
|
3.1.3. ЗАГОЛОВОЧНЫЕ ФАЙЛЫ ИНТЕРФЕЙСНЫХ КЛАССОВ |
||
......................................................................................................................... |
|
|
11 |
4. |
ПОДСИСТЕМА «МОДЕЛЬ»............................................................. |
12 |
4.1ПЕРЕЧЕНЬ СОБЫТИЙ, ИЗМЕНЯЮЩИХ СОСТОЯНИЕ
МОДЕЛИ ПрО ................................................................................................... |
12 |
4.2 ЗАГОЛОВОЧНЫЕ ФАЙЛЫ КЛАССОВ МОЖЕЛИ ПрО ............ |
12 |
5.СКРИНШОТЫ КОНТРОЛЬНОГО ПРИМЕРА РАБОТЫ
РЕАЛИЗОВАННОГО ПРИЛОЖЕНИЯ............................................................... |
14 |
6. ВЫВОДЫ ПО КУРСОВОЙ РАБОТЕ ............................................... |
19 |
5
1.ПОСТАНОВКА ЗАДАЧИ
1.1ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ
На столе лежат S (3) стопок книг многотомного издания из N (30) томов.
Распределение томов по стопкам и порядку номеров томов случайное
(генерируется изначально и по команде пользователя). Каждый том имеет одинаковые ширину L (50) и высоту H (80), но разную случайную толщину W,
распределенную по равномерному закону на интервале [W1,W2] (15,25).
Имеется стеллаж с М (4) полками шириной, вычисляемой по формуле
«суммарная ширина всех книг»*1.2/M. Пользователь, возможно образуя новую стопку на столе, перекладывает книги на стеллаж слева-направо и сверху-вниз по порядку томов, переходя на следующую полку, когда предыдущая заполнена. После расстановки книг на стеллаже можно брать любой том для чтения. При этом место тома остается пустым.
Примечание. Все размеры указаны в пикселях экрана.
1.2ОБОСНОВАНИЕ ВЫБОРА ЯЗЫКА ПРОГРАММИРОВАНИЯ
ИОБЪЕКТНЫХ БИБЛИОТЕК КОНСТРУКТОРСКИХ КЛАССОВ
Вкачестве языка программирования для выполнения курсовой работы был выбран язык Java. Он очень удобен и понятен для каждого студента из нашей группы, а также имеет приятный и понятный IDE Intelij. В программе была использована библиотека javafx для возможности создания графического интерфейса программы.
6

2.ДИАГРАММЫ ОБЪЕКТНОЙ МОДЕЛИ
2.1МОДЕЛЬ «СУЩНОСТЬ-СВЯЗЬ»
Рисунок 1. Модель "Сущность-Связь"
2.1 ДИАГРАММА КЛАССОВ
Диаграмма классов соответствует представленной модели «сущность-
связь» (рисунок 1). Сущности и классы соотносятся следующим образом:
a.Главное окно – class Interface
b.Стеллаж – class bookshelf
Рисунок 2. Диаграмма классов
7
Описание классов на рисунке 2 представлено в таблице 1.
Таблица 1. Классы
|
Наименование |
|
Идентификатор |
|
Назначение |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
Вывод |
окна, |
с |
графическим |
|||||
|
|
|
|
Interface |
|
|
представлением программы. |
Позволяет |
||||||||
|
|
|
|
|
|
пользователю |
взаимодействовать |
с |
||||||||
|
|
|
|
|
|
|
|
|||||||||
Главное окно |
|
|
|
|
|
книгами. |
|
|
|
|
|
|
|
|
||
|
|
|
|
bookshelf |
|
|
|
|
|
|
|
|
||||
|
|
|
|
Наследники |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Наследуется |
|
|
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bookshelf |
|
|
Класс, |
|
содержащий |
|
методы |
|||||
|
|
|
|
|
|
взаимодействия с книгами. |
|
|
||||||||
Стеллаж |
|
|
|
|
|
|
|
|
||||||||
|
|
Наследники |
|
|
– |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Наследуется |
|
|
Interface |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2. Атрибуты классов |
||||||
|
|
|
|
|
|
|
|
|
||||||||
|
Наименование |
|
Идентификатор |
|
|
|
Назначение |
|
||||||||
|
Класс Interface |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Минимальная |
|
min |
|
|
|
|
Минимальная |
|
|||||||
ширина книги |
|
|
|
|
ширина книги |
|
||||||||||
|
|
|
|
|
|
|
|
|||||||||
|
Максимальная |
|
max |
|
|
|
|
Максимальная |
||||||||
ширина книги |
|
|
|
|
ширина книги |
|
||||||||||
|
|
|
|
|
|
|
|
|||||||||
|
Высота книги |
|
H |
|
|
|
|
Высота книги |
|
|||||||
|
Суммарное |
|
|
|
|
|
|
|
|
Суммарное |
|
|||||
значение |
ширины всех |
|
width |
|
|
|
значение |
ширины |
всех |
|||||||
книг |
|
|
|
|
|
|
|
|
|
|
книг |
|
|
|
||
|
Метка, |
|
|
|
|
|
|
|
|
Метка, |
|
|
||||
отображающая |
|
nowReading |
|
|
|
отображающая |
|
|||||||||
текущую |
читаемую |
|
|
|
|
текущую |
|
читаемую |
||||||||
|
|
|
|
|
|
|
|
|||||||||
книгу |
|
|
|
|
|
|
|
|
|
|
книгу |
|
|
|
||
|
Режим временной |
|
|
|
|
|
|
|
|
Включен |
ли |
|||||
|
|
isStackMode |
|
|
|
режим |
временной |
|||||||||
стопки |
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
стопки |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Массив всех книг |
|
bookStacks |
|
|
|
|
Массив |
ширин |
|||||||
в трех стопках |
|
|
|
|
всех книг в трех стопках |
|||||||||||
|
|
|
|
|
|
|
||||||||||
|
Список томов |
|
bookNum |
|
|
|
|
Список |
|
всех |
||||||
|
|
|
|
|
томов |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Экземпляр класса |
|
bShelf |
|
|
|
|
Экземпляр класса |
||||||||
bookShelf |
|
|
|
|
|
|
|
bookShelf |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
8
|
Линия |
|
для |
|
line1, line2, line3, |
|
Линия |
|
для |
||||
отображения |
полки |
|
|
отображения |
полки |
||||||||
стеллажа |
|
|
|
|
line4 |
|
стеллажа |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
Текст в окне |
|
|
text0, text1, text2 |
|
Текст в окне для |
|||||||
|
|
|
|
пользователя |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
Кнопка генерации |
|
generateButton |
|
Кнопка генерации |
||||||||
|
Кнопка |
режима |
|
stackMode |
|
Кнопка |
режима |
||||||
временной стопки |
|
|
|
временной стопки |
|
||||||||
|
|
|
|
|
|||||||||
|
Класс bookShelf |
|
|
|
|
|
|
|
|
||||
|
Массив книг |
|
|
btn |
|
Массив книг |
|
||||||
|
Номер полки |
|
|
shelfNum |
|
Номер полки |
|
||||||
|
Суммарное |
|
|
|
|
Суммарное |
|
||||||
значение |
|
ширины, |
|
shelfFill |
|
значение |
|
ширины, |
|||||
которое занимают книги |
|
|
которое занимают книги |
||||||||||
|
|
|
|||||||||||
на полке |
|
|
|
|
|
|
на полке |
|
|
|
|||
|
Суммарное |
|
|
|
|
Суммарное |
|
||||||
значение |
|
ширины, |
|
tempFill |
|
значение |
|
ширины, |
|||||
которое занимают книги |
|
|
которое занимают книги |
||||||||||
|
|
|
|||||||||||
во временной стопке |
|
|
|
во временной стопке |
|||||||||
|
Массив, |
|
|
|
|
|
Массив, |
|
|
||||
содержащий |
|
|
|
|
|
содержащий |
|
|
|||||
информацию |
о |
том, |
|
isOnShelf |
|
информацию |
о |
том, |
|||||
стоит |
ли |
книжка |
под |
|
|
|
стоит |
ли |
книжка |
под |
|||
номером тома на полке |
|
|
|
номером тома на полке |
|||||||||
|
Массив, |
|
|
|
|
|
Массив, |
|
|
||||
содержащий |
|
|
|
|
|
содержащий |
|
|
|||||
информацию |
о |
том, |
|
isMoved |
|
информацию |
о |
том, |
|||||
передвинута ли книжка |
|
|
передвинута ли книжка |
||||||||||
|
|
|
|||||||||||
под номером |
тома на |
|
|
|
под номером |
тома на |
|||||||
полку |
|
|
|
|
|
|
|
полку |
|
|
|
|
|
|
Массив, |
|
|
|
|
|
Массив, |
|
|
||||
содержащий |
|
|
|
|
|
содержащий |
|
|
|||||
информацию |
о |
том, |
|
isInTempStack |
|
информацию |
о |
том, |
|||||
находится |
ли |
книжка |
|
|
находится |
ли |
книжка |
||||||
|
|
|
|||||||||||
под номером |
тома во |
|
|
|
под номером |
тома во |
|||||||
временной стопке |
|
|
|
|
временной стопке |
|
|||||||
|
Стэк |
|
|
для |
|
|
|
Стэк |
|
|
для |
||
хранения |
|
порядка |
|
stack |
|
хранения |
|
порядка |
|||||
взятия |
книг |
из |
трех |
|
|
взятия |
книг |
из |
трех |
||||
|
|
|
|||||||||||
стопок |
|
|
|
|
|
|
|
стопок |
|
|
|
|
|
|
Стэк |
|
|
для |
|
|
|
Стэк |
|
|
для |
||
хранения |
|
порядка |
|
tempstack |
|
хранения |
|
порядка |
|||||
взятия |
|
книг |
из |
|
|
взятия |
|
книг |
из |
||||
|
|
|
|
|
|||||||||
временной стопки |
|
|
|
|
временной стопки |
|
9
|
|
|
|
Таблица 3. Методы классов |
||||
|
|
|
|
|
|
|
||
Идентификатор |
|
|
Наименование |
|
||||
Класс interface |
|
|
|
|
|
|
|
|
Start |
|
|
Создание главного окна |
|
||||
Show |
|
|
Запуск показа окна |
|
||||
Класс bookShelf |
|
|
|
|
|
|
|
|
pop |
|
|
Достать значение из stack |
|||||
push |
|
|
Положить значение в stack |
|||||
tempPop |
|
|
Достать значение из tempstack |
|||||
tempPush |
|
|
Положить значение в tempstack |
|||||
booksWidthGenerator |
|
|
Создание |
случайных |
ширин |
|||
|
|
|
книг |
|
|
|
|
|
getWidth |
|
|
Возвращает |
суммарное |
||||
|
|
|
значение ширины всех книг |
|
||||
bookStackCreator |
|
|
Создает массив книг-кнопок, а |
|||||
|
|
|
также определяет их поведение при |
|||||
|
|
|
взаимодействии с ними |
|
||||
moveBooks |
|
|
Передвигает книгу на полку в |
|||||
|
|
|
соответствии |
с |
ее положением |
|||
|
|
|
относительно предыдущих на полке |
|||||
moveToTempstack |
|
|
Передвигает |
книгу |
во |
|||
|
|
|
временную стопку в соответствии с |
|||||
|
|
|
ее |
положением |
относительно |
|||
|
|
|
предыдущих во временной стопке |
|||||
bookCleaner |
|
|
Очищает |
|
значение |
всех |
||
|
|
|
переменных для корректной работы |
|||||
|
|
|
программы заново |
|
|
|||
|
|
Таблица 4. Отношения между классами |
||||||
|
|
|
|
|
|
|||
Класс с исх. стрелкой |
|
Класс с вх. стрелкой |
|
|
Отношение |
|||
Interface |
|
bookShelf |
|
|
|
Композиция |
10