Классы общего назначения в языке Си

Автор работы: Пользователь скрыл имя, 13 Апреля 2013 в 10:28, реферат

Описание

Кроме того, имеется возможность получать целую иерархию производных типов данных из указателей, массивов, структур и объединений. Выражения формируются из операторов и операндов. Любое выражение, включая присваивание и вызов функции, может быть инструкцией. Указатели обеспечивают машинно-независимую адресную арифметику. Си, как и любой другой язык программирования, не свободен от недостатков. Уровень старшинства некоторых операторов не является общепринятым, некоторые синтаксические конструкции могли бы быть лучше. Тем не менее, как оказалось, Си - чрезвычайно эффективный и выразительный язык, пригодный для широкого класса задач.

Содержание

Введение 3
1.Класс CString 4
2.Класс CTime и CTimeSpan 7
3.Класс COleDateTime 10
4.Классы файлов MFC 11
5.Класс CArchive 14
6.Коллекции объектов MFC 18
7.Обработка исключительных ситуаций 21
Заключение 26
Использованная литература 27

Работа состоит из  1 файл

реферат.doc

— 116.00 Кб (Скачать документ)

 

Некоторые языки также  допускают специальный блок (else), который выполняется, если ни одного исключения не было сгенерировано в  соответствующей области действия. Чаще встречается возможность безусловного выполнения кода (finally, ensure), даже в случае если исключение было выброшено, но не обработано. Заметным исключением является Си++, где такой конструкции нет. Вместо неё используется автоматический вызов деструкторов объектов. Вместе с тем существуют нестандартные расширения Си++, поддерживающие и функциональность finally (например в MFC).

 

В целом, обработка исключений может выглядеть следующим образом (в некотором абстрактном языке):

 

try { line = console.readLine(); if (line.length() = 0) throw new EmptyLineException("Строка, считанная с консоли, пустая!");

 

console.printLine("Привет, %s!" % line);}catch (EmptyLineException exception) { console.printLine("Привет!");}catch (Exception exception) { console.printLine("Ошибка: " + exception.message());}else { console.printLine("Программа выполнилась без исключительных ситуаций");}finally { console.printLine("Программа завершается");}

 

В некоторых языках может  быть лишь один обработчик, который  разбирается с различными типами исключений самостоятельно.

 

В некоторых языках, например Си или Перл, нет встроенной обработки  исключений.

 

Проверяемые исключения

 

Изначально (например, в C++), исключения не являлись обязательными  для обработки. Если какое-либо исключение не обрабатывается, то есть если для него нет обработчика в стеке вызова, или обработчик выбросил исключение заново, то выполнение программы прерывается.

 

В более новых языках, например в Java, наряду с «классическими»  появились "проверяемые исключения ". Обрабатываемость таких исключений проверяется компилятором. Метод, в котором оно может возникнуть (в том числе и в вызываемых методах) обязан либо обработать его, либо объявить, что может выбросить такое исключение.

 

Преимущества  и недостатки

 

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

 

Однако, у проверяемых  исключений есть и недостатки. Во-первых, они часто «заставляют» обрабатывать то, с чем программист в принципе справиться не может, например ошибку ввода-вывода в веб-приложении. Это приводит к появлению «глупых» обработчиков, которые не делают ничего или выводят стек вызова исключения и, в итоге, только замусоривают код. Во-вторых это делает невозможным добавление нового проверяемого исключения в методе, описанном в библиотеке, поскольку это нарушает обратную совместимость. (Это верно и для небиблиотечных методов, но в этом случае проблема менее существенна).

 

 

 

В итоге, многие библиотеки объявляют все методы как выбрасывающие некоторый суперкласс исключений (например, Exception). В результате, компилятор «заставляет» писать обработчики исключений даже там, где они, казалось бы, не нужны.

 

Заключение

 

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

 

Использованная литература

Электронные ресурсы:

1. http://frolov-lib.ru/

 

2. http://www.codenet.ru/

 

3. http://dic.academic.ru/

 

4. http://ishodniki.ru/

Книжные издания:

 

1. Круглински Д., Уингоу С., Шеферд Дж.  Программирование на Microsoft Visual C++ 6.0 для профессионалов

 

2. Герберт Шилдт  C++: базовый курс, 3-е издание

 


Информация о работе Классы общего назначения в языке Си