Министерство образования РФ
ГОУ ВПО «Удмуртский Государственный Университет»
Математический Факультет
Курсовая работа
Библиотека классов контейнеров и итераторов FIFO и LIFO
Выполнил:
Студент гр.19-33
Михлик С.А.
Проверил:
Тонков Л.Е.
Ижевск, 2011
Содержание
Введение 3
-
Постановка задачи 4
-
Формализация 5
-
Идентификация классов 6
-
Идентификация семантики классов 7
-
Идентификация отношений между классами 9
-
Реализация 11
-
Пример работы программы 19
-
Список используемой литературы 20
Введение
Объектно-ориентированное программирование – это обобщение структурного и модульного программирования для оптимизации создания программ и программных комплексов. ООП позволяет быстро и с минимальным количеством ошибок написать программу, код которой легко понять другим и самому, и, следовательно, изменить при необходимости.
Объектно-ориентированное программирование основано на «трех китах» - трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляция, наследование и полиморфизм.
• Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.
• Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
• Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.
Наследование, полиморфизм, инкапсуляция позволяют конструировать сложные объекты из более простых. В результате существенно увеличивается показатель повторного использования кодов, появляется возможность создания библиотек объектов для различных применений, и разработчикам предоставляются дополнительные возможности создания систем повышенной сложности.
Данная курсовая работа является примером реализации программы, демонстрирующей применение объектно-ориентированного программирования.
-
Постановка задачи
Определить классы для представления очередей символов с дисциплинами FIFO и LIFO. Необходимо реализовать операции постановки в очередь и выборки очередного элемента, очистки, вывода очереди в поток (без изменения ее состояния), вычисления текущей длины.
-
Формализация
Отметим, что LIFO и FIFO отличаются только добавлением элемента. Так же, определим, что в LIFO и в FIFO можно получить доступ только к первому элементу. Так же, заполнение очередей осуществляется путем добавления в него элементов.
Задача реализована на языке программирования С++. Входные данные вводятся с клавиатуры.
-
Идентификация классов
Из формулировки задачи следует, что необходимо создать два класса LIFO и FIFO.
LIFO
FIFO
Диаграмма 1.
Однако эта диаграмма не совсем полная. Дело в том, что LIFO и FIFO не отдельные абстрактные понятия, а вариации на одну тему. Поэтому следует выделить еще один класс «Очередь», который и будет являться базовым. В связи с этим диаграмма примет вид:
Очередь
LIFO
FIFO
Диаграмма 2.
Таким образом, необходимо будет реализовать: