Вы находитесь на странице: 1из 11

Методические указания к выполнению курсовой работы

по курсу «Объектно-ориентированное
программирование»
для специальности "Информационная безопасность"

Общие положения объектной методологии

1. Упрощенная схема процесса проектирования объектно-


ориентированных программ:

2. Основные определения

ОБЪЕКТНАЯ МОДЕЛЬ описывает структуру предметов и


понятий, составляющих систему, их свойства, поведение и
взаимодействия между собой.
В объектной модели должны быть отражены те понятия
и предметы реального мира, которые важны для
разрабатываемой системы. В ней отражается прежде всего
прагматика разрабатываемой системы. Прагматика
выражается в использовании терминологии предметной
области, связанной с использованием разрабатываемой
программной системы.
КЛАСС как элемент объектной модели - это
абстракция, определяющая характеристики и поведение
некоторого множества ПРЕДМЕТОВ или ПОНЯТИЙ существенных
для решения поставленной задачи в заданной предметной
области.
КЛАСС как элемент представления объектной модели в
тексте программы - это тип данных, описывающий
характеристики соответствующих ПРЕДМЕТОВ или ПОНЯТИЙ, а
также стереотипов их поведения, изменяющих их состояние
при взаимодействии со своим окружением.

3. Положения, которые являются аксиомами для


проектирования объектно-ориентированных программ.
- использование объектно-ориентированного языка
программирования не является достаточным условием,
чтобы программа на нем была объектно-ориентированной,
- за любым классом и объектом в программе должны стоять
реальные предметы или понятия предметной области, чтобы
всегда можно было сказать: класс <имя> описывает то-то
в терминах предметной области,
- если одно понятие или предмет является более общим по
сравнению с другим(и), то класс, его описывающий,
строится на основе класса(ов), описывающего(их) это(и)
общее(ие) (принцип наследования),
- распределение членов класса по областям видимости
(принцип инкапсуляции) должно обеспечивать целостность
и безопасность существования объектов класса на всем их
жизненном цикле,
- поля класса (характеристики) должны описывать
свойства, определяющие семантику класса и возможные
устойчивые отношения с объектами окружения
(ассоциативные отношения),
- методы класса должны обеспечивать полный жизненный
цикл своих объектов (непротиворечивую
последовательность смены их состояний) и возможные
взаимодействия с объектами окружения, обусловленные
отношениями зависимости и ассоциации,
- объектная модель описывается (в терминах UML) набором
из 12 диаграмм, разделенных на три группы:
- четыре типа диаграмм представляют статическую
структуру приложения;
- пять представляют поведенческие аспекты системы;
- три представляют физические аспекты
функционирования системы (диаграммы реализации).
Основные диаграммы объектной модели, требуемые в данной
курсовой работе (КР), описаны в лекционном материале.

Соблюдение вышеизложенных положений является


обязательным для выполнения курсовой работы по курсу
«Объектно-ориентированное программирование»

4. Укрупненное изложение проектной процедуры


Излагаемая здесь методика проектирования использует
понятие "компонента".
Под компонентой понимается множество классов,
объединенных некоторым логическим условием, иногда это
общий стиль программирования или описания, иногда —
предоставляемый сервис.
Структура компонент проектируется использованием
итерационного нарастающего процесса. Обычно для
получения проекта нужно несколько раз проделать
последовательность из следующих четырех шагов.
Шаг 1. Выделение понятий (классов, порождающих объекты)
и установление основных связей между ними.
Шаг 2. Уточнение классов с определением наборов
операций (методов) для каждого.
Шаг 3. Уточнение классов с точным определением их
зависимостей от других классов. Выясняется наследование
и использование зависимостей.
Шаг 4. Задание интерфейсов классов. Более точно
определяются отношения классов. Методы разделяются на
общие и защищенные. Определяются типы операций над
классами.

4.1. Шаг 1. Выделение понятий и установление основных


связей между ними
Выделение объектов производится во время процесса
мысленного представления или описания системы. Часто
это происходит как цикл вопросов "что/кто", "что
требуется делать?", "кто будет выполнять действие?" и
т.п. Теперь программная система в значительной мере
становится похожей на некую организацию. Действия,
которые должны быть выполнены, присваиваются некоторому
программному объекту в качестве его обязанностей.
Понятия (объекты) соответствуют порождающим классам
и могут иметь форму в виде имен существительных и, как
экзотика, глаголов и имен прилагательных.
Часто говорят, что понятия в форме имен существительных
играют роль классов и объектов, используемых в
программе. Это действительно так, но это только начало.
Глаголы могут представлять операции над объектами
или обычные (глобальные) функции, вырабатывающие новые
значения, исходя из своих параметров.
Имена прилагательные можно успешно использовать как
свойства объектов классов.
Все классы можно условно разделить на две группы:
классы ПрО из предметной (прикладной) области и классы,
являющиеся артефактами реализации или абстракциями
периода реализации, т.е. конструкторские.
Классы ПрО — непосредственно отражают понятия из
прикладной области, т.е. понятия, которые использует
конечный пользователь для описаний своих задач и
методов их решения.
Конструкторские классы — это те понятия, которые
применяют программисты и проектировщики для реализации
проектов.

4.2. Шаг 2. Уточнение классов с определением набора


операций (методов) для каждого
Возможно несколько подходов к процессу определения
набора операций. Может быть предложена следующая
стратегия:
— рассмотрите, каким образом объект класса будет
создаваться, копироваться (если нужно) и уничтожаться;
— определите минимальный набор операций, необходимый
для понятия, представленного классом;
— рассмотрите операции, которые могут быть добавлены
для удобства записи, и включите только несколько
действительно важных;
— рассмотрите, какие операции можно считать
тривиальными, т.е. такими, для которых класс выступает
в роли интерфейса для реализации производного класса;
— рассмотрите, какой общности именования и
функциональности можно достигнуть для всех классов
компонента.
4.3. Шаг 3. Уточнение классов с точным определением их
зависимостей от других классов
Виды взаимоотношений между классами могут быть
следующими: отношения композиции (наследования);
отношения композиции; отношения агрегации и отношения
зависимости.

4.4. Шаг 4. Задание интерфейсов классов


Подробности реализации обычно прячутся за фасадом
интерфейса. Объект инкапсулирует поведение, если он
умеет выполнять некоторые действия, но подробности, как
это делается, остаются скрытыми за фасадом интерфейса.
Эта идея представляется в виде правил, которые часто
называются принципами Парнаса.
Правило 1. Разработчик программы должен предоставлять
пользователю всю информацию, которая нужна для
эффективного использования приложения, и ничего кроме
этого.
Правило 2. Разработчик программного обеспечения должен
знать только требуемое поведение объекта и ничего кроме
этого.
Следствие принципа отделения интерфейса от реализации
состоит в том, что программист может экспериментировать
с различными алгоритмами, не затрагивая остальные
классы объектов программы.
На этом шаге дается четкое описание классов, их данных
и методов (опуская реализацию и, возможно, скрытые
методы). Всем методам задаются точные типы параметров.
Идеальный интерфейс:
- представляет пользователю полный и последовательный
набор понятий;
- согласован со всеми частями компоненты;
- не открывает подробности реализации и может быть
реализован различными способами;
- ограниченно и четко определенным образом зависит от
других интерфейсов.
Интерфейсы классов предоставляют полную информацию
для реализации классов на этапе кодирования.

Требования к выполнению курсовых заданий

В задании описана некоторая предметная область,


которая на протяжении своего жизненного цикла может
иметь несколько состояний. Переход из одного
стабильного состояния в другое осуществляется при
возникновении событий, как внешних, так и внутренних.
Требуется разработать в объектно-ориентированной
методологии программную систему (ПС), имитирующую
жизненный цикл объектов описанной ПрО.
ПС должна состоять из двух взаимодействующих в
рамках одного GUI приложения подсистем, подсистемы
«Интерфейс» и подсистемы «Модель».

Подсистема «Интерфейс» должна обеспечивать реализацию


GUI интерфейса в виде множества интерфейсных окон,
каждое из которых отвечает за определенный
функциональный состав взаимодействия с пользователем
ПС:
- основное окно осуществляет управление окнами
подсистемы «Интерфейс»
- окно управления событиями должно состоять из
интерфейсных элементов, необходимых для
формирования команд управления моделью: «Начальное
состояние» и «Выбор и инициирование событий,
изменяющих состояние ПрО»,
- отображение состояния объектов ПрО.
Примечание. Все 3 вида окон должны быть представлены
отдельными классами.

Подсистема «Модель» должна:


- содержать реализацию объектной модели предметной
области,
- обеспечивать изменение состояний объектов ПрО по
командам управления,
- обеспечить передачу своего состояния в подсистему
«Интерфейс» для его отображения.
Примечание. В случае реализации MDI интерфейса
(независимые окна), актуальное состояние ПрО должно
отображаться сразу после открытия из основного окна
окна отображения.

Требования к оформлению курсовых заданий

Задания могут выполняться группой не более 2


человек. Вариант задания выбирает преподаватель после
того, как состав исполнителей будет сообщен ему каждым
из соисполнителей.

Пояснительная записка должна иметь следующее


содержание:
1. Постановка задачи
1.1. Описание предметной области
1.2. Перечень библиотечных конструкторских классов,
использованных в проекте (наименование, назначение)
1.3. Обоснование выбора языка программирования и
объектных библиотек конструкторских классов (параграф
необходим, если используются другие, не рекомендованные
для применения данным документом)
2. Подсистема «Интерфейс»
2.1. Графическое представление интерфейсных окон
2.1.1. Основное окно
2.1.2. Окно управления событиями ПрО
2.1.3. Окно отображения состояния объектов ПрО
3. Подсистема «Модель»
3.1. Модель «сущность-связь» ПрО
3.2. Перечень событий, изменяющих состояние ПрО
4. Объектная модель
4.1. Диаграмма классов
4.1.1. Логическое описание полей классов
(тип, наименование, область видимости)
4.1.2. Логическое описание методов классов
(наименование, параметры вызова, область
видимости)
4.1.3. Заголовочные файлы (h-файлы) классов
4.2. Диаграмма объектов ПрО
5. Выводы

Рекомендуемый язык реализации - С++. Рекомендуемая


объектная библиотека для выбора конструкторских классов
в курсовой работе — Qt. Среда реализации - Qt Creator.
Задание 1
На автозаправочной станции установлено 3 колонки,
каждая из которых заправляет с двух сторон разным видом
топлива (1-ая колонка - топливо 1 и 2, 2-ая - 1 и 3, 3-
я - 2 и 3). Если заправка невозможна, то автомобили
становятся в очередь. Площадка при АЗС допускает
пребывание в очереди на заправку не более трех
автомобилей одновременно. Если в очереди уже находится
3 автомобиля, то очередной автомобиль, прибывший к
станции проезжает мимо. Обслуженные автомобили уезжают.

Задание 2
Пост диагностики автомобилей проводит диагностику
двух видов, каждый на своих комплектах оборудования,
которых имеется 2 и 3 соответственно. Заявка (прибывший
автомобиль) на диагностику, поступившая в момент, когда
все комплекты необходимого оборудования заняты,
получает отказ. Если есть альтернатива из свободных
комплектов, то выбор равновероятен. Некоторым
автомобилям требуется диагностика только первого вида,
некоторым – только второго и некоторым — обоих видов.
Порядок прохождения диагностики двух видов не важен.
Обслуженные автомобили уезжают.

Задание 3
В инструментальном отделении сборочного цеха
работают 5 кладовщиков. Свободного кладовщика они
выбирают равновероятно, а при занятости всех становятся
в очередь. Очередь ограничена величиной 2. Обслуженные
рабочие уходят.

Задание 4
Билетная касса работает без перерыва. Билеты
продают 3 кассира. Пассажиры становятся в ту очередь,
но не более 2 человек, которая меньше, а при равных
условиях выбирают кассу равновероятно. Обслуженные
пассажиры уходят.

Задание 5
Малое транспортное предприятие эксплуатирует 5
автомобилей, 2 грузовых и 3 легковых. Автомобили могут
ломаться. На предприятии работают 2 механика, из них 1-
ый может обслуживать только легковые, а 2-ой - грузовые
и легковые. Отремонтированные автомобили уезжают.
Задание 6
Технические устройства (ТУ) в количестве 4 ед.
могут время от времени выходить из строя (отказывают).
Количество технологических линий, выполняющих
обслуживание ТУ, равно 2. На каждой линии организуется
очередь из не более, чем 3 ТУ. Обслуженные ТУ
освобождают линию.

Задание 7
В парикмахерскую, в которой работают мастер и
ученик, приходят клиенты. Пришедший клиент направляется
к мастеру, если он свободен, а к ученику в противном
случае. Когда мастер и ученик заняты, клиент
располагается в зале, где имеются 5 стульев для
ожидающих клиентов. Если все стулья заняты, то
пришедший клиент покидает парикмахерскую. Обслуженный
клиент также покидает парикмахерскую.

Задание 8
На вокзале билетная касса с 3 окошками (кассирами)
и очередью длины не более 3 к каждому. Пассажиры,
желающие купить билет, выбирают свободную кассу или ту,
где меньше очередь. Обслуженные пассажиры уходят.

Задание 9
На автозаправочной станции (АЗС) имеется 5 колонок:
3 для заправки легковых автомобилей и 2 для заправки
грузовых автомобилей. Перед АЗС имеется площадка для
ожидания прибывающих автомобилей, на которой 4 места
для ожидания. Один грузовой автомобиль занимает сразу 2
места. При освобождении колонки к ней подъезжает
автомобиль из очереди. Если площадка занята, то
автомобили покидают АЗС. Заправленные автомобили
уезжают.

Задание 10
В автомобильной мастерской работает 5 мастеров.
Каждый автомобиль необходимо сначала помыть, а затем
выполнить технический осмотр. Если все мастера заняты,
то очередной прибывший автомобиль с вероятностью 0.5
остается и ожидает обслуживания. Если при этом мойка
свободна, то он заезжает на мойку и ожидает там. Если
мойка занята, а в мастерской уже имеется автомобиль,
ожидающий обслуживания, то очередной прибывший
автомобиль покидает мастерскую не обслуженным.
Обслуженные автомобили уезжают.

Задание 11
В вычислительном центре работает 5 персональных
компьютера (ПК). ПК отказывают с одинаковой
вероятностью, причем неисправный ПК отказать не может.
Неисправность проявляется в момент ее возникновения, но
для определения ПК с неисправностью инженер должен
периодически последовательно обходить работающие ПК и
делать диагностику. При определении неисправности
инженер прекращает обход и выполняет ремонт. Закончив
его инженер продолжает обход.

Задание 12
В вычислительном центре работает 5 персональных
компьютеров (ПК). Поступающие на обработку задачи
распределяются по ПК равновероятно. ПК могут давать
сбой. Задача, решаемая в момент сбоя, получает отказ и
ПК освобождается. Задача также получает отказ, если
все ПК заняты. Решенная задача освобождает ПК.

Задание 13
На АЗС имеются 5 заправочных колонок и 1 кассир.
Колонка освобождается только после обслуживания
водителя кассиром. Прибывающая машина встает на
заправку к свободной колонке с равной вероятностью, а
если все колонки заняты, то в очередь к колонке, выбор
которой также равновероятен. Число мест в каждой
очереди ограничено значением 2. Все машины, вставшие в
очередь на заправку, дожидаются своей очереди.
Заправленные автомобили уезжают.

Задание 14
В аудиторскую фирму поступают заявки. Аудиторская
фирма располагает 5 независимыми бухгалтерами,
выполняющими аудиторские проверки (обслуживание
заявок). Каждый бухгалтер имеет свой рейтинг, равный 4,
4, 5, 6 и 8 соответственно, согласно которому
вычисляется вероятность выбора на обслуживание из числа
свободных. Очередь заявок ограничена значением 3.
Обслуженные заявки освобождают аудитора.
Задание 15
В бухгалтерии предприятия имеются 3 кассира.
Пришедший за заработной платой сотрудник выбирает
свободную кассу с равной вероятностью или он становится
в очередь в кассу с вероятностями P1, P2, P3, где
Pi=(1-Li/(L1+L2+L3))/2, а L1, L2, L3 - текущие длины
очередей к кассам на момент прихода сотрудника.
Получивший зарплату сотрудник уходит.

Задание 16
В магазине в 3 отделах работают по одному продавцу.
Каждому покупателю с вероятностями 0.25, 0.3 и 0.45
необходимо сделать покупки в соответствующих отделах,
которые они обходят в порядке их нумерации. В очереди в
каждый отдел может стоять не более 5 человек.
Обслуженный покупатель освобождает продавца.