Институт Информационных технологий
Кафедра Математическое и программное обеспечение ЭВМ
КУРСОВАЯ РАБОТА
по дисциплине Объектно-ориентированное программирование
на тему
"Объектно-ориентированное программирование на языке С++"
Выполнил
студент группы 1ИС 310
Шидловская Валерия Игоревна
Череповец, 2014
Оглавление
Введение
. Общие сведения
. Функциональное назначение
3. Объектно-ориентированный анализ предметной области
4. Описание логической структуры программы
. Используемые технические средства
. Вызов и загрузка
. Входные данные
. Выходные данные
. Тестирование программы
Заключение
Список используемой литературы
Приложения
Данный программный продукт предназначен для обработки предметной области "Бытовая техника". В ходе разработки были использованы принципы и возможности объектно-ориентированного программирования. При его разработке была создана иерархия родственных классов предметной области, реализована работа виртуальных и чисто виртуальных функций, а также класс интерфейс.
В расчетно-пояснительной записке описано функциональное назначение
данного программного продукта, его логическая структура, а также принцип работы
программы.
Программа предназначена для обработки информации об объектах предметной области "Бытовая техника".
В программе использовались следующие концепции ООП:
· механизм наследования;
· принцип инкапсуляции;
· перегрузка операторов.
Для обработки объектов в программе предусмотрены функции добавления, удаления, сортировки, копирования и поиска по полям, выбранным пользователем.
Разработка программного продукта была произведена с использованием средств языка С++ в среде визуального программирования C++ Builder 6.0 в операционной системе Windows 7.
Программа предназначена для обработки данных, относящихся к предметной области "Бытовая техника" и выполняет следующие возможности:
ввод данных с клавиатуры;
сохранение данных в файл;
загрузка данных из файла;
просмотр данных об объектах выбранного класса;
сортировка данных по полю "Цена"(по возрастанию/убыванию);
сравнение объектов класса по полю "Цена";
копирование данных;
поиск данных по названию элемента интерьера.
Для описания предметной области разработана следующая иерархия классов
(рис.1):
Рис. 1. Иерархия родственных классов
Класс-интерфейс (абстрактный базовый класс) содержит объявление чисто виртуальных функций (или отложенных методов). В данном случае, это функция печати print(). Объявляется такая функция в открытой части класса.
Производный от АБК класс - базовый класс Бытовая техника - содержит общие характеристики элементов бытовой техники, такие как название, мощность, цена.
Эти поля размещены в защищенном блоке protected для того, чтобы быть доступными для всех классов-потомков. Доступ к полям базового класса осуществляется с помощью методов, объявленных в блоке public. В базовом классе реализованы: конструктор по умолчанию, с параметрами и копирующий конструктор, функция вывода данных на экран.
Классы Замораживающая техника, Пылесосы, Микроволновые печи являются производными для БК. Механизм наследования - одиночный. Каждый производный класс содержит элементы родительского класса и при этом включает собственные, присущие только ему характеристики.
Класс Замораживающая техника содержит 2 числовые характеристики - "Максим. температура" и "Количество камер" и в свою очередь имеет 2 производных класса со своими характеристиками:
Морозильные камеры ("Расположение");
Холодильники ("Схема компоновки");
Класс Пылесосы имеет числовые характеристики "Объём пылесборника", "Мощность всасывания", "Количество насадок" и не имеет производных классов.
Класс Микроволновые печи (СВЧ) содержит одну строковую характеристику - "Тип".
В программе создаются объекты классов Морозильные камеры, Холодильники, Пылесосы, Микроволновые печи. Внутри этих классов содержатся функции файлового ввода / вывода, перегруженные операторы присваивания, сравнения, а виртуальная функция вывода описана в соответствии с компонентными данными каждого класса.
Программа одномодульная, содержащая в себе описание классов, создание объектов и осуществление работы с ними.
Для создания иерархии родственных типов используется механизм одиночного наследования. Количество уровней в иерархии - 4.
В программе предусмотрены следующие компонентные функции:
· load - загрузка из файла, при этом необходимо передать в качестве формального параметра файл - источник, таблица для вывода, номер строки;
· save - сохранение в файл, в качестве формального параметра указывается файл - приемник;
· clear - очищает файл перед записью;
· operator = - перегруженный оператор присваивания, используется для присвоения объектов;
· оperator == - перегруженный оператор сравнения[1];
Добавление записей производится вручную с клавиатуры или при загрузке из файла. Выбрав нужный класс и заполнив все поля, нажимаем "Добавить". Данные заносятся в соответствующую таблицу. При нажатии на кнопку "Сохранить" данные перезаписываются в файл.
При нажатии на кнопку "Загрузить" в таблицу заносятся данные в соответствии с выбранным классом, которые ранее были сохранены в файл.
При нажатии на кнопку "Сортировать" производится сортировка по возрастанию / убыванию по полю "Цена".
Кнопка "Сравнить" позволяет сравнить выведенные в таблицу объекты по "Цене" с заданными номерами.
При вызове функции print вызываются виртуальная функция print из класса interf. Так как данная функция - виртуальная, то работает механизм замещения, поэтому виртуальная функция замещается соответствующей функцией для производного класса.
Обработка исключительных ситуаций выполняется при добавлении информации в таблицы: осуществляется проверка на соответствие типов данных введенной информации и проверка на ввод пустого значения. Также в поля, где предусмотрен ввод чисел, невозможен ввод букв. При возникновении ошибки появляется соответствующее информационное сообщение[2].
Системные средства:
) операционные системы:
· Windows XP;
· Windows 7;
· Windows 8.
) аппаратные средства:
· клавиатура;
· мышь;
· монитор.
Для запуска программы необходимо запустить файл с расширением .exe , затем появится главное окно программы.
Входными данными данной программы является информация, введенная с клавиатуры в соответствующие поля либо загруженная из текстового файла. Типы вводимой информации должны соответствовать типам, представленным в таблицах.
Таблица 1.
Морозильные камеры.
|
Входные данные |
Тип данных |
|
Название |
String |
|
Мощность |
Integer |
|
Цена |
Integer |
|
Максим. Температура |
Integer |
|
Количество камер |
Integer |
|
Расположение |
String |
Таблица 2.
Холодильники.
|
Входные данные Тип данных |
|
|
Название |
String |
|
Мощность |
Integer |
|
Цена |
Integer |
|
Максим. Температура |
Integer |
|
Количество камер |
Integer |
|
Схема компоновки |
String |
Таблица 3.
Пылесосы.
|
Входные данные |
Тип данных |
|
Название |
String |
|
Мощность |
Integer |
|
Цена |
Integer |
|
Объём пылесборника |
Integer |
|
Мощность всасывания |
Integer |
|
Количество насадок |
Integer |
Таблица 4.
Микроволновые печи.
|
Входные данные |
Тип данных |
|
Название |
String |
|
Мощность |
Integer |
|
Цена |
Integer |
|
Тип |
String |
Выходной информацией является информация сохраняемая в файл и выводимая на экран.
Тестирование программы оформлено в виде таблиц. Тестированию каждого класса соответствует отдельная таблица(табл.5 - табл.8).
Таблица 5.
Морозильные камеры.
|
Дата |
Тестируемая функция |
Входные данные |
Результат работы |
|
27.05.2014 |
Создание объекта класса |
Нет |
Успех |
|
29.05.2014 |
Save - сохранение в файл |
moroz_kamera.txt |
Успех |
|
30.05.2014 |
Load - загрузка из файла |
moroz_kamera.txt |
Успех |
|
30.05.2014 |
Print - вывод на экран |
StringGrid1 |
Успех |
|
30.05.2014 |
Сравнение |
Объекты данного класса |
Успех |
Таблица 6.
Холодильники.
|
ДатаТестируемая функцияВходные данныеРезультат работы |
|
|
|
|
27.05.2014 |
Создание объекта класса |
Нет |
Успех |
|
29.05.2014 |
Save - сохранение в файл |
holodilniki.txt |
Успех |
|
30.05.2014 |
Load - загрузка из файла |
holodilniki.txt |
Успех |
|
30.05.2014 |
Print - вывод на экран |
StringGrid2 |
Успех |
|
30.05.2014 |
Сравнение |
Объекты данного класса |
Успех |
Таблица 7.
Пылесосы.
|
ДатаТестируемая функцияВходные данныеРезультат работы |
|
|
|
|
29.05.2014 |
Создание объекта класса |
Нет |
Успех |
|
01.06.2014 |
Save - сохранение в файл |
pilesos.txt |
Успех |
|
01.06.2014 |
Load - загрузка из файла |
pilesos.txt |
Успех |
|
01.06.2014 |
Print - вывод на экран |
StringGrid4 |
Успех |
|
01.06.2014 |
Сравнение |
Объекты данного класса |
Успех |
Таблица 8.
Микроволновая печь.
|
ДатаТестируемая функцияВходные данныеРезультат работы |
|
|
|
|
27.05.2014 |
Создание объекта класса |
Нет |
Успех |
|
04.06.2014 |
Save - сохранение в файл |
microv_pechi.txt |
Успех |
|
04.06.2014 |
Load - загрузка из файла |
microv_pechi.txt |
Успех |
|
04.06.2014 |
Print - вывод на экран |
StringGrid3 |
Успех |
|
04.06.2014 |
Сравнение |
Объекты данного класса |
Успех |
В результате проделанной работы был закреплен материал, изученный в курсе
дисциплины "Объектно-ориентированное программирование". Приобретены
навыки программирования в среде C++ Builder,также было разработано приложение,
которое отвечает всем требованиям, описанным в техническом задании (Приложение
1).
1. Лаптев В.В. "С++. Объектно - ориентированное программирование: Учебное пособие. - СПб.: Питер, 2008. - 464 с.: ил. - (Серия "Учебное пособие")"
. Р. Лафоре "Объектно-Ориентированное Программирование в С++.": 4-е издание.; - М.:Питер, - 2004. - 902 с.
Приложение 1. Техническое задание
Одной из самых значительных проблем в программировании является сложность. Чем больше и сложнее программа, тем важнее становится разбить ее на небольшие, четко очерченные части. Чтобы побороть сложность, необходимо абстрагироваться от мелких деталей. В этом смысле классы представляют собой весьма удобный инструмент.
Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы. ООП является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования.
1. Основание для разработки.
Основанием для разработки является задание на курсовую работу по дисциплине "Объектно-ориентированное программирование" по теме "Объектно-ориентированное программирование на языке C++".
Задание: программирование визуальный класс файловый
A. Разработайте иерархию родственных типов, корневой класс которой абстрактный базовый класс (класс-интерфейс), для моделирования и обработки данных предметной области набором отложенных методов - полиморфная обработка родственных объектов (согласно варианта А.х.х).
B. Реализуйте функции обработки данных (сортировка и поиск по выбранным полям и задаваемым диапазонам значений, другие функции, в том числе перегруженные).. Реализуйте файловый ввод/вывод и ввод данных с клавиатуры, вывод данных на дисплей.. Предусмотрите обработку различных исключительных ситуаций.