МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра Информационных систем ОТЧЕТ ПО КУРСОВОЙ РАБОТЕ по дисциплине «Объектно-ориентированное программирование» Тема: Проектирование объектно-ориентированных программ Студентка гр. 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