Uploaded by Cozy Lusy

Проектирование объектно-ориентированных программ

advertisement
МИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра Информационных систем
ОТЧЕТ ПО КУРСОВОЙ РАБОТЕ
по дисциплине «Объектно-ориентированное программирование»
Тема: Проектирование объектно-ориентированных программ
Студентка гр. 7894
Германова Л.И.
Преподаватель
Егоров С.С.
Санкт-Петербург
2019
ИСХОДНАЯ ПОСТАНОВКА ЗАДАЧИ
В парикмахерскую, в которой работают два мастера, приходят клиенты. В
среднем время обслуживания мастерами R1 и R2 мин. Пришедший клиент
направляется к мастеру и встает в очередь, но не более 3 человек, которая
меньше, а при равных условиях выбирают мастера равновероятно. Среднее
число клиентов, желающих попасть к мастеру в течение одного часа равно Z
чел/час.
АНАЛИЗ ЗАДАЧИ
Основные предметы и понятия:
- Два мастера (работника)
- Неизвестное количество (поток) клиентов
- Среднее время обслуживания клиентов (может быть различно)
- Очередь не более 3 человек
- Клиенты распределяются 50/50 если к мастерам очередь одинакова, в
остальных случаях выбирают ту, где очередь меньше
- Среднее число клиентов в час
- Необходимо подвести статистику по обслуживанию
РАСПРЕДЕЛЕНИЕ НА КЛАССЫ
Мастера + среднее время обслуживания: class Employee
Клиенты: class Client
Поток клиентов: class ProductStore
Среднее число клиентов в час: class Random
Статистика по обслуживанию: class Statistic
Таймер, течение очереди, не более 3 человек: class Live
Окна ввода/вывода информации/статистики: class MainWindow
2
ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ
Основные определения.
ОБЪЕКТНАЯ МОДЕЛЬ системы описывает структуру предметов и
понятий, составляющих систему, их свойства, поведение и взаимодействия
между собой.
В объектной модели должны быть отражены те понятия и предметы
реального мира, которые важны для
разрабатываемой системы. В ней отражается прежде всего прагматика
разрабатываемой
терминологии
системы.
предметной
Прагматика
области,
выражается
связанной
в
с
использовании
использованием
разрабатываемой программной системы.
КЛАСС как элемент объектной модели - это абстракция, определяющая
характеристики и поведение некоторого множества ПРЕДМЕТОВ или
ПОНЯТИЙ существенных для решения поставленной задачи в заданной
предметной области.
КЛАСС как элемент представления объектной модели в тексте
программы - это тип данных, описывающий характеристики соответствующих
ПРЕДМЕТОВ или ПОНЯТИЙ, а также стереотипов их поведения, изменяющих
их состояние при взаимодействии со своим окружением.
Положения,
которые
являются
аксиомами
для
проектирования
объектно-ориентированных программ:
- использование объектно-ориентированного языка программирования не
является достаточным условием, чтобы программа на нем была объектноориентированной,
- за любым классом и объектом в программе должны стоять реальные
предметы или понятия предметной области, чтобы всегда можно было сказать:
класс <имя> описывает то-то в терминах предметной области,
3
- распределение членов класса по областям видимости (принцип
инкапсуляции)
должно
обеспечивать
целостность
и
безопасность
существования объектов класса на всем их жизненном цикле,
-
поля
класса
(характеристики)
должны
описывать
свойства,
определяющие семантику класса и, возможные устойчивые отношения с
объектами окружения (ассоциативные отношения),
- методы класса должны обеспечивать полный жизненный цикл своих
объектов
(непротиворечивую
последовательность
смены
состояний)
возможные взаимодействия с объектами окружения (отношения зависимости).
4
и
ДИАГРАММА КЛАССОВ (ГРАФ ОТНОШЕНИЙ)
5
Основные классы:
Client
Client() – определяет существование клиентов, в дальнейшем
используется при подсчете их количества в потоке
Employee
averageServiceTime – среднее время обслуживания мастером одного
покупателя (указывается в дальнейшем пользователем)
Employee() – определяет существование мастеров
Process() – начинает работу мастера при наличии клиентов в очереди
isInProcess() – повторяет процесс обслуживания при наличии другого
клиента после обслуживания предыдущего
AfterProcess() – заканчивает работу мастера при отсутствии клиентов в
очереди
Остальные (наследуемые и образующие) классы:
ProductStore
order – покупка услуги мастера
maxCount – определяет максимальное количество клиентов в очереди
(const)
AddClient() – добавляет клиента в очередь
Count() – количество клиентов
AfterProcessClient() – добавление обслуженного клиента в статистику
Random
Random() – задает возможность случайным образом вносить в очередь
клиентов
NextDouble() – вносит случайное число клиентов в очереди
Next() – определяет в какую очередь отправится клиент
6
Statistic
timeMin – потраченное на обслуживание время
step – шаг/обслуженный клиент
processed – подведение статистики по обслуживанию
Statistic() – определяет существование статистики
Mean() – среднее число обслуживаний в минуту
Sd() – среднеквадратичное отклонение
Add() – обновляет/дополняет значения времени на обслуживание,
количество клиентов
Live
rest – обслуженные клиенты
restMin – кол-во обслуженных клиентов
min – минимум клиентов которых можно обслужить за время
averageToPurchase – среднее количество клиентов
AddStore() – добавляет заказ в кассу
Live() – определяет наличие "живого потока"
Start() – запускает таймер
Stop() – останавливает таймер
SetParams() – позволяет задать данные по времени обслуживания
мастерами одного клиента, среднее кол-во клиентов в час
StateChange() – определяет кол-во людей в очередях и отправляет
клиентов соответственно полученной информации
GeneratePopulation() – образует очередь/поток
MainWindow
MainWindow() – определяет создание отдельного окна
OnStart() – запускает процесс образования и обслуживания очереди
OnStop() – останавливает процесс образования и обслуживания очереди
7
OnReStart() – перезапускает процесс образования и обслуживания
очереди
OnStateChange() - отправляет клиентов соответственно полученной
информации
OnStatistic() – выводит статистические значения проделанных операций
8
АЛГОРИТМ СОБЫТИЙ
9
10
ЗАКЛЮЧЕНИЕ
В
ходе
работы
мы
изучили
лингвистический
анализ
задания,
распределение выделенных объектов на классы, построение диаграмм классов,
перечня событий, определили основные задачи каждого класса и требуемые для
выполнения задачи функции. Разработали в объектно-ориентированной
методологии проект программной системы, реализующий жизненный цикл
объектов предметной области во взаимодействии с пользователем программной
системы, состоящей из двух подсистем, взаимодействующих по сетевому
протоколу UDP.
11
Download