Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольнаая ООП.doc
Скачиваний:
20
Добавлен:
01.04.2014
Размер:
424.96 Кб
Скачать

Листинг класса пользовательских ошибок:

#include <iostream.h>

//Класс пользовательских ошибок

class myExceptions

{

public:

//Класс ошибки распределения памяти

class xMemoryAllocationError

{

public:

void Print()

{

cout <<"!!!--->Error: Memory Allocation!<---!!!\n";

}

};

//Класс ошибки открытия файла для чтения

class xNotOpenedForReading

{

public:

void Print()

{

cout <<"!!!--->Cannot open a file for reading!<---!!!\n";

}

};

//Класс ошибки открытия файла для записи

class xNotOpenedForWriting

{

public:

void Print()

{

cout <<"!!!--->Cannot open a file for writing!<---!!!\n";

}

};

//Класс ошибки ввода числа

class xNotANumber

{

public:

void Print()

{

cout <<"!!!--->Is not a number!<---!!!\n";

}

};

//Класс ошибки чтения данных из файла (прочтенное имеет не подходящий формат)

class xNotAnAnimal

{

public:

void Print()

{

cout <<"!!!--->Is not an animal! ERROR of reading file!<---!!!\n";

}

};

//Класс ошибки выхода за границы массива

class xOutOfRange

{

public:

void Print()

{

cout <<"!!!--->Index of Array is Out Of Range!<---!!!\n";

}

};

};

//Класс проверочный - содержит методы для проверки условия

class cheker

{

public:

//Вспомогательная функция, осуществляет проверку правильности ввода пользователем целого числа

static void isIntegerNumber(char* _Buf)

{

char* Buf = _Buf;

while(*Buf)

{

if(!(((*Buf) >= '0' && (*Buf) <= '9') || (*Buf) == '-'))

throw myExceptions::xNotANumber();

Buf++;

}

}

//Вспомогательная функция, осуществляет проверку правильности ввода пользователем вещественного числа

static void isDoubleNumber(char* _Buf)

{

char* Buf = _Buf;

while(*Buf)

{

if(!(((*Buf) >= '0' && (*Buf) <= '9') || (*Buf) == '-'||(*Buf) == '.'))

throw myExceptions::xNotANumber();

Buf++;

}

}

};

Диаграмма классов:

24