Пример кода программы на языке C++, иллюстрирующий применение классов
В качестве примера приведем текст программы, реализующей класс сортировки элементов целочисленного массива по возрастанию. Программа состоит из трех модулей:
- «main.cpp» - содержит функцию main – точку входа в программу;
- «SortClass.h» - объявление классаCIntSort, реализующего сортировку целочисленного массива по возрастанию его элементов;
- «SortClass.cpp» - реализация классаCIntSort.
Файл «SortClass.h».
#ifndef SORTCLASS_H
#define SORTCLASS_H
/*
Объявляем класс для сортировки массива CIntSort
*/
class CIntSort
{
private:
int size; //Переменная для хранения
//числа элементов в массиве
int *array; //указатель на область памяти,
//которая будет динамически
//распределена под массив
public:
CIntSort(): size(0), array(NULL) {}; //конструктор без
//параметров
CIntSort(int, int *); //конструктор, инициализирующий
//массив для сортировки
~CIntSort(); //деструктор
public:
int *Get_Mas() const; //возвращаем отсортированный
bool Test_Mas(); //проверка на существование массива
};
#endif
Файл «SortClass.cpp».
//Включаем стандартные заголовочные файлы
#include <conio.h>
#include <iostream.h>
#include <math.h>
//Включаем заголовочный файл с описанием класса
//для сортировки целочисленного массива
#include "SortClass.h"
//Конструктор класса CIntSort
CIntSort::CIntSort(int newSize, int *newArray)
{
//newSize - размер передаваемого массива
//newMas - массив, подлежащий сортировке
Set_Mas(newSize, newArray);
};
//Формирование массива, элементы которого подлежат
//сортировке.
void CIntSort::Set_Mas(int newSize, const int *newMas)
{
//newSize - размер передаваемого массива
//newMas - массив, подлежащий сортировке
//Проверяем на существование массива и,
//в случае необходимости, освобождаем память
if (Test_Mas())
delete[] array;
//Если размер передаваемого массива newSize корректен,
//запоминаем его элементы в массиве array
if (newSize > 0)
{
size = newSize; //запоминаем размер массива
array = new int[size]; //выделяем память под
//отсортированный массив
//запоминаем переданный массив
for (int i =0; i<size; i++)
array[i] = newMas[i];
}
else
{
//считаем, что нам ничего не передавали
size = 0;
array = NULL;
}
}
//Отображаем отсортированный массив
void CIntSort::View_Mas()
{
View_Mas(size, array);
}
//Отображаем произвольный массив
void CIntSort::View_Mas(int num, const int *mas)
{
//num - размер передаваемого массива
//mas - массив, подлежащий сортировке
//Отображаем массив mas из num элементов на экране
for (int i=0; i<num; i++)
cout<<mas[i];
cout<<endl;
}
//Сортировка массива array по возрастанию значений
//его элементов
void CIntSort::Sort_Mas()
{
int tmp;
for (int i=0; i<size-1; i++)
for (int j=size-1; i<j; j--)
if (array[j-1]>array[j])
{
tmp = array[j];
array[j] = array[j-1];
array[j-1] = tmp;
}
}
//Проверка на существование массива array
bool CIntSort::Test_Mas()
{
if (array)
return true;
else
return false;
}
//Возвращаем отсортированный массив
int *CIntSort::Get_Mas() const
{
return array;
}
//Деструктор класса CIntSort
CIntSort::~CIntSort()
{
//освобождаем память, выделенную под массив
if (Test_Mas())
delete[] array;
}
Файл «main.cpp».
/*
Программа сортировки целочисленных массивов
по возрастанию с использованием классов
*/
//Включаем стандартные заголовочные файлы
#include <conio.h>
#include <iostream.h>
//Включаем заголовочный файл с описанием класса
//для сортировки массива
#include "SortClass.h"
//Объявляем пользовательские функции
int Set_Mas(int**);
//Главная функция приложения
int main(int argc, char *argv[])
{
int i_mas_num; //число элементов в массиве
int *i_mas; //указатель на область памяти,
//которая будет динамически
//распределена под массив
//Создаем представитель класса
CIntSort cIS;
//Формируем массив
i_mas_num = Set_Mas(&i_mas);
//Формируем массив для сортировки
cIS.Set_Mas(i_mas_num, i_mas);
//Отображаем исходный массив на экране
cIS.View_Mas(i_mas_num, i_mas);
//Сортируем элементы массива по возрастанию
cIS.Sort_Mas();
//Отображаем отсортированный массив на экране
cIS.View_Mas();
}
/*
Функция, отвечающая за формирование массива элемен-тов, подлежащих сортировке.
В качестве параметра передается указатель на указа-тель на область памяти,
предназначенной для хранения эле-ментов типа int: **mas.
В случае удачного выполнения возвращается число эле-ментов в созданном массиве.
В противном случае возвраща-ется 0 и выдается предупреждающее сообщение.
*/
int Set_Mas(int **mas)
{
int num; //Переменная для хранения
//числа элементов в массиве
//Запрос числа элементов будущего массива
cin>>num;
//Проверка размерности будущего массива
if (num <= 0)
{
/*
Если введен запрос на формирование массива, состоящего менее чем из 1 элемента,
то выводим сообщение об ошибке
и возвращаем код некорректного выполнения нашей функции.
*/
cout<<"Error size!!!";
cout<<endl;
return 0;
}
//Выделяем, динамическим образом, память под num
//элементов массива mas типа int
*mas = new int[num];
//Вводим элементы массива mas с консоли
for (int i=0; i<num; i++)
cin>>(*mas)[i];
cout<<endl;
//Возвращаем число элементов сформированного массива
return num;
}
Опубликовал Kest
September 09 2010 08:54:22 ·
1 Комментариев ·
28194 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
йцй\\\\\\\\\ February 20 2019 15:57:10
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.