Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Home-Programming.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
648.7 Кб
Скачать

Требования к отчетности

В качестве отчета студент предоставляет в электронном виде программу на языке C++, решающую поставленную задачу, примеры тестовых данных о программы и отчет, описывающий основные принятые при разработке программы решения (в частности, в виде UML-диаграмм).

Предлагаемые этапы выполнения задания

  1. Изучение теоретического материала.

  2. Создание проекта программы.

    1. Выделение основных классов и их операций.

    2. Разработка UML-диаграмм.

    3. Выбор используемых контейнеров данных и алгоритмов.

    4. Выбор форматов данных, хранимых в файлах.

  3. Разработка функциональных компонентов и консольных тестовых программ к ним.

  4. Отладка функциональных компонентов.

  5. Разработка пользовательского интерфейса.

  6. Отладка программы в целом.

  7. Оформление отчета.

Теоретический материал, необходимый для выполнения домашнего задания

Описание работы с классами в языке программирования C++

Класс в C++ - это определяемый пользователем тип данных. Переменную, типом которой является класс, называют объектом (экземпляром) класса.

В случае динамического выделения памяти мы создаем экземпляр класса в момент вызова new. Может существовать множество указателей на один и тот же экземпляр класса. Копирование указателя не приводит к копированию экземпляра класса.

Это правило иллюстрируется кодом ниже:

TClass* ptr_class1 = new TClass; //создан экземпляр класса

TClass* ptr_class2 = ptr_class1; //копируется указатель – их 2, экземпляр 1

TClass class1;

TClass class2 = class1; //Копируется объект, создан второй экземпляр

Пользователь может задать поля данных класса и методы класса. Поля данных (у каждого из которых есть тип) – это значения, которые объект класса должен помнить внутри себя. Методы – это операции, которые могут быть выполнены с объектом класса.

Например, может существовать класс строки, выглядящий примерно так:

class TString

{

public:

TString();//Конструктор класса – создание строки

~TString();//Деструктор – разрушение строки

//Методы установки значения строки и поиска символа – доступны //пользователю

void Set( const char* ptr_string );

int Find( char symbol );

private:

//Освобождение памяти – только изнутри класса.

void ReleaseMemory();

private:

char* ptr_Buffer;//Указатель на начало строки

int BufferLength;//Длина выделенной по адресу ptr_Buffer памяти

};

//Что мы делаем, когда создается новая строка

TString::TString()

{

//Мы обнуляем указатель и длину - память не выделена

ptr_Buffer = 0;

BufferLength = 0;

}

//Разрушение строки

TString::~TString()

{

//Достаточно вызвать метод освобождения памяти

ReleaseMemory();

}

//Если у нас вызовут метод Set и передадут нам строку – что мы сделаем

void TString::Set( const char* ptr_string )

{

//Определим необходимую длину строки

int need_length = strlen( ptr_string ) + 1;

if ( need_length > BufferLength )

{

//при необходимости выделим нужный объем памяти

ReleaseMemory();

ptr_Buffer = new char[ need_length ];

BufferLength = need_length;

}

//Скопируем переданную строку в выделенную память.

strcpy( ptr_Buffer , ptr_string );

}

//Что делать, если вызван метод ReleaseMemory (освободить память)

void TString::ReleaseMemory()

{

//Освободить выделенную память и установить в 0 указатель и длину

delete[] ptr_Buffer;

ptr_Buffer = 0;

BufferLength = 0;

}

//Что делать, если нас попросили найти в строке символ

int TString::Find( char symbol )

{

//Вызвать стандартную функцию strchr и определить номер символа по

//возвращаемому ей указателю на символ

char* ptr_symbol = strchr( ptr_Buffer , symbol );

if ( ptr_symbol )

return ptr_symbol - ptr_Buffer;

else

return -1;

}

int _tmain(int argc, _TCHAR* argv[])

{

TString string; //Создаем переменную типа TString

string.Set( "Test" ); //Устанавливаем ее значение

int pos1 = string.Find( 's' ); //Ищем символ

int pos2 = string.Find( 'a' ); //Ищем символ

printf( "%d %d" , pos1 , pos2 );

getch();

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]