Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Разработка программного комплекса на языке программирования С++ с использованием принципов объектно-ориентированного программирования

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
Краткое сожержание материала:

Размещено на

Размещено на

СОДЕРЖАНИЕ

Введение

1. ОПИСАНИЕ ПРОГРАММНОГО КОМПЛЕКСА

1.1 Структура программного комплекса

1.2 Модуль ClassFile.cpp

1.2.1 Класс Pamiatnik

1.2.2 Класс Zdanie

1.2.3 Класс Kvartal

1.2.4 Класс Square

1.2.5 Класс Skulptura

1.2.6 Класс Massiv_Pamiatnikov

1.3 Модуль FunctionFile.cpp

1.4 Модуль main.cpp

2. Описание работы программы по контрольному примеру

2.1 Описание процесса сортировки памятников

2.2 Описание процесса поиска в массиве памятников

2.3 Описание формирования статистики по памятникам

Заключение

Список использованных источников

Приложения

Введение

Целью курсовой работы является: изучение принципов объектно-ориентированного программирования на базе языка программирования С++; приобретение навыков высокоуровневого проектирования многомодульных программ.

Заданием для курсовой работы является разработка программного комплекса на языке программирования С++ с использованием принципов объектно-ориентированного программирования.

Согласно индивидуальному заданию необходимо разработать программный комплекс для ведения учёта памятников города. Множество памятников представляют собой массив, элементами которого являются любые из следующих четырех типов памятников: здание, квартал, площадь, скульптура.

Для всех памятников имеются как общие данные, так возможно и специфические.

Общие данные содержат следующие поля:

1) год создания (integer);

2) название (string);

3) годовая стоимость расходов на содержание (longint);

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

· Загрузка массива памятников из текстового файла в формате csv (файл в котором данные разделённые символом «;», причём одна строка задаёт один элемент массива;

· Сохранения массива памятников в файл формата csv;

· Просмотр всех элементов массива (один элемент на одной строке);

· Добавление новых элементов в массив как вручную, так и из заданного файла;

· Удаление элементов из массива;

· Получение трёх отчётов;

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

· Обязательно использовать объектно-ориентированный подход при проектировании приложений;

· Все поля классов, описывающих элемент множества данных должны быть private;

· Год создания, название памятника и стоимость расходов на содержание включить в базовый класс. Разработать наследуемые классы для здания, квартала, площади и скульптуры.

· Классы для элементов множества данных должны содержать конструкторы следующих видов: а) конструктор без параметров, очищающий переменные объекта класса; б) конструктор, инициализирующий все переменные класса, значениями, заданными в качестве параметра; в) конструктор приведения из строки символов (поля класса, разделенные символом ";");

· В наследуемых классах переопределить хотя бы один метод базового класса;

· Интерфейс разработанных классов продемонстрировать в форме консольного приложения;

· Выводить отчеты в виде таблицы (одна запись - одна строка таблицы).

1. ОПИСАНИЕ ПРОГРАММНОГО КОМПЛЕКСА

1.1 Структура программного комплекса

Программный комплекс состоит из следующих модулей:

? ClassFile.cpp;

? FunctionFile.cpp;

? main.cpp.

? global.h.

На рисунке 1 показана схема подключения модулей.

Размещено на

Размещено на

Рисунок 1 - Схема подключения модулей

Модуль ClassFile.cpp содержит описание всех используемых в программе классов. А точнее базовый класс памятника и четыре его наследника (здание, квартал, площадь и скульптура), а также класс оболочка, который содержит динамический массив и все функции для работы с массивом памятника (добавление, удаление, сортировка и т.д.) Модуль FunctionFile.cpp содержит различные вспомогательные функции. Это и вывод на экран различных частей таблицы и вывод различных меню, а также выбор имени файла. Модуль main.cpp содержит точку входа в программу, в которой находится оператор switch для выбора необходимых действий.

Файл global.h является связующим звеном, где описаны все стандартные библиотеки и функции из файла FunctionFile.cpp

1.2 Модуль ClassFile.cpp

В модуле описаны следующие классы:

? Pamiatnik;

? Zdanie;

? Kvartal;

? Square;

? Skulptura;

? Massiv_Pamiatnikov.

Иерархия классов представлена на рисунке 2.

Размещено на

Размещено на

Рисунок 2 - Иерархия классов

1.2.1 Класс Pamiatnik

Класс Pamiatnik является базовым классом для всех памятников. Именно поэтому он содержит все общие поля и все общие методы. Ко всему прочему данный класс считается абстрактным, т.е. нельзя непосредственно создавать экземпляры этого класса. Данный класс предназначен только как шаблон для создания других классов памятника. Однако, несмотря на это, он содержит в себе множество методов, которые могут вызывать наследники.

Класс Pamiatnik содержит следующие поля:

- Set_God - Год основания памятника;

- Set_Stoimost - Стоимость расходов на содержание памятника;

- Set_Name - Название памятника;

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

- prev - указатель на предыдущий памятник в массиве.

- next - указатель на следующий памятник в массиве.

Поля prev и next предназначены для построения динамического массива. Принцип динамического массива заключается в том, что все его элементы не обязаны находиться в памяти последовательно друг за другом. Однако все элементы массива должны быть выстроены в определённую последовательность. При такой концепции сам массив должен знать элемент, который является первым, чтобы именно с него начать работу с массивом, а также должен знать последний элемент, для того, чтобы знать, куда добавлять следующий элемент. Таким образом, с помощью полей prev и next каждый памятник точно знает своё место в массиве.

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

Так как все ключевые поля являются закрытыми, то необходимо в поле public создать методы для записи и чтения данных в/из этих ключевых полей. Методы для записи имеют в своём названии слово Set, а методы для получения значения - Get.

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

Метод Draw в классе Pamiatnik является абстрактным. Дело в том, что класс Pamiatnik не будет непосредственно создаваться, поэтому и выводить свои данные ему незачем. А вот наследники обязаны будут выводить свои данные на экран. Поэтому в базовом классе данный метод является абстрактным.

Метод ToString также является абстрактным. Все наследники обязаны будут его реализовать. Сам же метод будет создавать строку, для записи в файл csv на основании ключевых полей.

1.2.2 Класс Zdanie

Класс описывает тип здание. Фактически здание наследует все поля от Pamiatnik и добавляет два поля visota и adress. В эти поля заносятся высота памятника и адрес памятника. По правилам, данный класс должен определить все виртуальные классы. Класс Zdanie знает, как себя отобразить, поэтому реализует метод Draw и ToString.

Так как конструкторы не наследуются, то в соответствии с заданием нужно реализовать три конструктора. Один конструктор без параметров, второй с пятью параметрами (значениями для заполнения ключевых полей). Данный конструктор просто делегирует обязанности по заполнению ключевых полей базовому классу Pamiatnik.

Третий конструктор - это конструктор, в которую...

Другие файлы:

Средства объектно-ориентированного программирования в задачах защиты информации
Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного прог...

Объектно-ориентированное программирование
Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Stud...

Учебный транслятор
Методы грамматического разбора. Разработка структуры учебного транслятора на базовом языке программирования Object Pascal в среде объектно-ориентирова...

Объектно-ориентированное программирование на языке С++
Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. О...

Основы алгоритмизации и объектно-ориентированного программирования
Рассматриваются вопросы программирования на базе платформы Microsoft .NET Framework. Дается описание современного языка объектноориентированного прогр...