Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

oop_kurs

.pdf
Скачиваний:
0
Добавлен:
29.12.2024
Размер:
477.42 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра информационной безопасности

КУРСОВАЯ РАБОТА По дисциплине «Объектно-ориентированное программирование»

Вариант 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

Соседние файлы в предмете Объектно ориентированное программирование