Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»
Автор работы: Пользователь скрыл имя, 13 Декабря 2014 в 10:49, курсовая работа
Описание работы
Цель работы: получение навыков разработки объектных программ, включая создание набора собственных взаимосвязанных классов для объектной реализации специализированного контейнера. Контейнер предназначен для хранения и обработки данных некоторой информационной задачи. Контейнер представляет собой двухуровневую структуру данных, в которой уровни реализуются разными способами – один статически на базе массива (непрерывная реализация), другой – динамически с использованием адресных связей (связная реализация).
Содержание работы
Постановка задачи (цель работы, исходные данные, ожидаемый результат, требования к реализации)……………………………………………………………………………………….2 Теоретическое описание используемых структур данных с алгоритмами реализации основных операций…………………………………………………………….…………….......3 Описание основных понятий и механизмов ООП……………………………………………………………………………………………….9 Описание всех разработанных классов (объектная модель)……………………………...…11 Описание демонстрационного модуля с характеристикой использованных стандартных компонентов……………………………………………………………………………………25 Описание структуры проекта…………………………………………………………………27 Список использованной литературы…………………………………………………………47
Описание всех разработанных
классов (Объектная реализация контейнера
на основе комбинированной структуры
«Динамический упорядоченный список массивов-стеков»,
язык реализации С++)
1)Первый класс, класс Apartment (класс квартир).
Необходимые данные для объекта: номер
квартиры, площадь квартиры. Значит класс Apartment будет иметь
два поля: номер квартиры- Number, площадь квартиры- Area. Методы класса: конструктор
без параметров Apartment () служит
для динамического выделения памяти под
объект, конструктор с входными параметрами Apartment (int N, float S) выделяет
память под объект и инициализирует поля
данных, деструктор, методы доступа к полям.
Метод getNumber возвращает
значение поля Number; метод getArea возвращает
значение поля Area; метод setNumber задаёт
значение поля Number, в качестве
входного параметра принимает целочисленный
тип; метод setArea задаёт значение
поля Area, в качестве
входного параметра принимает вещественный
тип.
2)Второй класс StackOfApartments - это
стек на основе массива, элементами которого
являются объекты класса Apartment. В качестве
полей содержит массив указателей на объекты
класса Apartment, указатель
на тип int – Spoint , указывающий
на вершину стека, служебное поле - указатель
на тип int – ShowSpoint, для
отображения состояния стека, указатель
на тип int - Count, количество
элементов. Методы класса: конструктор,
деструктор, методы для добавления, удаления
и просмотра элементов, методы для проверки
возможности добавления, удаления и просмотра
элементов.
Конструктор без параметров StackOfApartments() служит
для динамического выделения памяти под
объект. Метод getCount возвращает
значение поля Count-количество
элементов. Метод Push служит для
добавления нового элемента в стек, в качестве
входных параметров получает целое число
для инициализации поля Number, вещественное
число для инициализации поля Area объекта класса Apartment. Метод Pop служит для
удаления элемента с вершины стека. Методы Show и ShowAll служат для
показа вершины стека и всех элементов
стека соответственно, возвращают указатели
на объекты типа Apartment. Метод DelAll служит для
удаления всех элементов структуры. Метод checkShowAll служит
для проверки перед вызовом функции ShowAll, используется
как условие в цикле while, тип возвращаемого
значения bool (true-можно показать). Метод checkAdd проверяет
возможность добавления нового элемента
в стек, возвращает true, если можно добавить.
Метод CheckDel проверяет
возможность удаления элемента из стека,
возвращает true, если можно удалить.
const int max=400;
class StackOfApartments
//стек квартир на основе массива
{
protected:
Apartment * flats[max];
int *SPoint;
//индекс вершинного+1 элемента стека
в
//массиве=количество элементов
int *ShowSPoint;
//индекс элемента для показа
int *Count;
public:
StackOfApartments();
~StackOfApartments();
void Push(int N,float S);
//добавление элемента
void Pop();
//удаление элемента
Apartment * Show();
//показ вершины
Apartment * ShowAll();
//показ всех элементов стека
поочередно
void DelAll();
//удаление всех элеметов
bool checkShowAll();
//проверка перед каждым вызовом
ShowAll()
3)Третий класс ApartmentHouse(класс
домов) получаем, используя
механизм наследования. Наследуем его
от класса StackOfApartments. В новом
классе добавляем новые свойства: номер
дома Number, указатель
на объект типа ApartmentHouse - указатель
на следующий элемент списка (самоадресация). Новые методы
класса: конструктор, деструктор, методы
доступа к полю Number, методы доступа
к полю Next.
Конструктор класса
в качестве входного параметра
принимает целое число для
инициализации поля Number, затем вызывает
конструктор родительского класса. Деструктор
использует вспомогательный указатель
на объекты типа StackOfApartments для
вызова деструктора соответствующего
класса. Метод setNumber задаёт
значение поля Number, в качестве
входного параметра принимает целое число.
Метод getNumber возвращает
значение поля Number, тип целый.
Метод setNext задаёт значение
поля Next, в качестве
входного параметра принимает указатель
на объект типа ApartmentHouse. Метод getNext возвращает
значение поля Next, указатель
на объект типа ApartmentHouse.
class ApartmentHouse:public StackOfApartments
//класс домов
{
private:
int *Number;
//номер дома
ApartmentHouse *Next; //указатель на
следующий элемент списка