Материал: Объектно-ориентированное программирование на языке С++

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Объектно-ориентированное программирование на языке С++

Институт Информационных технологий

Кафедра Математическое и программное обеспечение ЭВМ










КУРСОВАЯ РАБОТА

по дисциплине Объектно-ориентированное программирование

на тему "Объектно-ориентированное программирование на языке С++"


Выполнил

студент группы 1ИС 310

Шидловская Валерия Игоревна





Череповец, 2014

Оглавление

Введение

. Общие сведения

. Функциональное назначение

3.      Объектно-ориентированный анализ предметной области

4. Описание логической структуры программы

. Используемые технические средства

. Вызов и загрузка

. Входные данные

. Выходные данные

. Тестирование программы

Заключение

Список используемой литературы

Приложения

Введение


Данный программный продукт предназначен для обработки предметной области "Бытовая техника". В ходе разработки были использованы принципы и возможности объектно-ориентированного программирования. При его разработке была создана иерархия родственных классов предметной области, реализована работа виртуальных и чисто виртуальных функций, а также класс интерфейс.

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

1. Общие сведения


Программа предназначена для обработки информации об объектах предметной области "Бытовая техника".

В программе использовались следующие концепции ООП:

·        механизм наследования;

·        принцип инкапсуляции;

·        перегрузка операторов.

Для обработки объектов в программе предусмотрены функции добавления, удаления, сортировки, копирования и поиска по полям, выбранным пользователем.

Разработка программного продукта была произведена с использованием средств языка С++ в среде визуального программирования C++ Builder 6.0 в операционной системе Windows 7.

2. Функциональное назначение


Программа предназначена для обработки данных, относящихся к предметной области "Бытовая техника" и выполняет следующие возможности:

ввод данных с клавиатуры;

сохранение данных в файл;

загрузка данных из файла;

просмотр данных об объектах выбранного класса;

сортировка данных по полю "Цена"(по возрастанию/убыванию);

сравнение объектов класса по полю "Цена";

копирование данных;

поиск данных по названию элемента интерьера.

 

3.      Объектно-ориентированный анализ предметной области


Для описания предметной области разработана следующая иерархия классов (рис.1):

Рис. 1. Иерархия родственных классов

Класс-интерфейс (абстрактный базовый класс) содержит объявление чисто виртуальных функций (или отложенных методов). В данном случае, это функция печати print(). Объявляется такая функция в открытой части класса.

Производный от АБК класс - базовый класс Бытовая техника - содержит общие характеристики элементов бытовой техники, такие как название, мощность, цена.

Эти поля размещены в защищенном блоке protected для того, чтобы быть доступными для всех классов-потомков. Доступ к полям базового класса осуществляется с помощью методов, объявленных в блоке public. В базовом классе реализованы: конструктор по умолчанию, с параметрами и копирующий конструктор, функция вывода данных на экран.

Классы Замораживающая техника, Пылесосы, Микроволновые печи являются производными для БК. Механизм наследования - одиночный. Каждый производный класс содержит элементы родительского класса и при этом включает собственные, присущие только ему характеристики.

Класс Замораживающая техника содержит 2 числовые характеристики - "Максим. температура" и "Количество камер" и в свою очередь имеет 2 производных класса со своими характеристиками:

Морозильные камеры ("Расположение");

Холодильники ("Схема компоновки");

Класс Пылесосы имеет числовые характеристики "Объём пылесборника", "Мощность всасывания", "Количество насадок" и не имеет производных классов.

Класс Микроволновые печи (СВЧ) содержит одну строковую характеристику - "Тип".

В программе создаются объекты классов Морозильные камеры, Холодильники, Пылесосы, Микроволновые печи. Внутри этих классов содержатся функции файлового ввода / вывода, перегруженные операторы присваивания, сравнения, а виртуальная функция вывода описана в соответствии с компонентными данными каждого класса.

4. Описание логической структуры программы


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

Для создания иерархии родственных типов используется механизм одиночного наследования. Количество уровней в иерархии - 4.

В программе предусмотрены следующие компонентные функции:

·        load - загрузка из файла, при этом необходимо передать в качестве формального параметра файл - источник, таблица для вывода, номер строки;

·        save - сохранение в файл, в качестве формального параметра указывается файл - приемник;

·        clear - очищает файл перед записью;

·        operator = - перегруженный оператор присваивания, используется для присвоения объектов;

·        оperator == - перегруженный оператор сравнения[1];

Добавление записей производится вручную с клавиатуры или при загрузке из файла. Выбрав нужный класс и заполнив все поля, нажимаем "Добавить". Данные заносятся в соответствующую таблицу. При нажатии на кнопку "Сохранить" данные перезаписываются в файл.

При нажатии на кнопку "Загрузить" в таблицу заносятся данные в соответствии с выбранным классом, которые ранее были сохранены в файл.

При нажатии на кнопку "Сортировать" производится сортировка по возрастанию / убыванию по полю "Цена".

Кнопка "Сравнить" позволяет сравнить выведенные в таблицу объекты по "Цене" с заданными номерами.

При вызове функции print вызываются виртуальная функция print из класса interf. Так как данная функция - виртуальная, то работает механизм замещения, поэтому виртуальная функция замещается соответствующей функцией для производного класса.

Обработка исключительных ситуаций выполняется при добавлении информации в таблицы: осуществляется проверка на соответствие типов данных введенной информации и проверка на ввод пустого значения. Также в поля, где предусмотрен ввод чисел, невозможен ввод букв. При возникновении ошибки появляется соответствующее информационное сообщение[2].

 

5. Используемые технические средства

Системные средства:

) операционные системы:

·        Windows XP;

·        Windows 7;

·        Windows 8.

) аппаратные средства:

·        клавиатура;

·        мышь;

·        монитор.

. Вызов и загрузка


Для запуска программы необходимо запустить файл с расширением .exe , затем появится главное окно программы.

7. Входные данные


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

 

Таблица 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


8. Выходные данные


Выходной информацией является информация сохраняемая в файл и выводимая на экран.

9. Тестирование программы


Тестирование программы оформлено в виде таблиц. Тестированию каждого класса соответствует отдельная таблица(табл.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.      Реализуйте функции обработки данных (сортировка и поиск по выбранным полям и задаваемым диапазонам значений, другие функции, в том числе перегруженные)..         Реализуйте файловый ввод/вывод и ввод данных с клавиатуры, вывод данных на дисплей..  Предусмотрите обработку различных исключительных ситуаций.