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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать документ)

Министерство образования  Российской Федерации

Южно-Уральский Государственный  университет

Приборостроительный факультет

Кафедра автоматики и  управления

 

 

 

 

 

 

 

 

Реферат на тему:

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

 

 

 

 

      Выполнила:

Кулиненко Е. Е.

ПС-145

 

Проверил:

Касюк С.Т.

Челябинск 2008

Содержание

 

Введение 3

1.Класс CString 4

2.Класс CTime и CTimeSpan 7

3.Класс COleDateTime 10

4.Классы файлов MFC 11

5.Класс CArchive 14

6.Коллекции объектов MFC 18

7.Обработка исключительных ситуаций 21

Заключение 26

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

 

Введение

 

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

В языке Си существует несколько классов общего назначения, о которых и пойдет речь. В данной работе рассматриваются классы CString, CTime, CTimeSpan, ColeDateTime, классы файлов MFC, класс CArchive, коллекции объектов MFC и обработка исключительных ситуаций.

 

1. Класс CString

 

Класс CString - текстовые  строки

 

Практически ни одно приложение не обходится без использования  текстовых строк. Язык Си и Си++ не имеет специального строкового типа. Обычно для хранения строк используют массивы символов. MFC предоставляет программисту более удобное средство для организации и работы со строками. Для этого предназначен специальный класс CString.

 

Строки CString XE "CString" состоят из символов, типа TCHAR XE "TCHAR" . Тип TCHAR определяется по разному в зависимости от того, определен или нет символ _UNICODE XE "_UNICODE" . Если символ _UNICODE не определен, TCHAR соответствует обычному типу char. В противном случае он представляет символы, определяемые двумя байтами.

 

При использовании класса CString отпадает необходимость постоянно  следить за тем, чтобы длина строки не превысила объем выделенной для  нее памяти. Строки CString XE "CString" автоматически расширяются и  сокращаются в зависимости от фактической длины строки.

 

В класс CString входят методы, выполняющие все основные операции над строками - копирование, сравнение, присваивание и т. д. Над объектами  класса CString определены такие операции как +, -, облегчающие работу со строками. Строки, представленные объектами CString, можно сравнивать, используя обычные операторы сравнения <, >, <=, >=, ==. Объекты класса CString можно записывать на диск - для них работает механизм сохранения и восстановления объектов класса. Фактически вы можете работать со стоками как с другими простыми типами данных.

 

Строки CString можно использовать совместно с строками языка Си (массивами символов, заканчивающихся  знаком двоичного нуля). Вы можете обращаться к объектам класса CString как к обычным массивам символов, то есть использовать их как строки символов языка Си. Вы можете указывать строки в качестве параметра функций и методов, которые принимают параметры типа const char* или LPCTSTR.

 

Класс CString содержит большое  количество различных методов, предназначенных для работы со строками. Среди них есть методы для доступа к отдельным элементам строки, сравнения строк между собой, поиска подстрок, сохранения строк в файле и их последующего восстановления. Мы оставляем класс CString для вашего самостоятельного изучения и ограничимся описанием только самых основным методов.

Конструктор класса

 

Класс CString имеет несколько  различных конструкторов, позволяющих  создавать строки на основе различных  данных.

 

Конструктор класса CString, используемый по умолчанию, не имеет параметров. Он создает пустую строку. В последствии вы можете записать в нее любой текст.

CString();

 

Для класса CString определен  конструктор копирования. Он позволяет  создать строку на основе другой, ранее  определенной строки. Этот и все остальные конструкторы могут вызвать исключение CMemoryException XE "CMemoryException" , если для создания строки недостаточно оперативной памяти.

 

CString(const CString& stringSrc);

throw(CMemoryException);

 

Конструктор, представленный ниже, позволяет создать строку из nRepeat символов ch. Параметр nRepeat можно не указывать. В этом случае строка будет содержать единственный символ ch.

 

CString(TCHAR ch, int nRepeat = 1);

throw(CMemoryException);

 

Вы можете создать новую строку и скопировать в нее nLength символов из массива lpch. Строка, расположенная в массиве lpch, может не иметь завершающего двоичного нуля. Для этого используйте следующий указатель:

 

CString(LPCTSTR lpch, int nLength);

throw(CMemoryException);

 

Новую строку можно создать и  скопировать в нее данные из массива символов, закрытого двоичным нулем. В этом случае количество символов, которые будут записаны в новую строку не указывается. Копируются все символы до двоичного нуля.

Для создания строки вы можете воспользоваться  одним из трех конструкторов, представленных ниже. Как видите, конструкторы отличаются только типом параметра:

CString(const unsigned char* psz);

throw(CMemoryException);

CString(LPCWSTR lpsz);

throw(CMemoryException);

CString(LPCSTR lpsz);

throw(CMemoryException);

 

2. Класс CTime и CTimeSpan

 

CTime не имеет базового  класса.

 

Объект CTime представляет абсолютное время и дату. Класс CTime объединяет тип данных ANSI time_t и ассоциированные run-time функции (функции периода выполнения), включая способность конвертировать из и в Григорианскую дату и 24-часовое время.

 

Значение CTime базируется на UTC (coordinated universal time -универсальные  координаты времени), которые эквивалентны GMT (Greenwich mean time - значение времени по Гринвичу). Местная временная зона контролируется переменной среды окружения - TZ.

 

При создании CТime установите параметр nDST равным 0 для сообщения  что действует стандартное представление  времени, или равным некоторому значению большем 0 для сообщения что действует  время в формате daylight savings, или равным некоторому значению меньше нуля для того чтобы код C run-time библиотеки сам определял какой формат времени применять - стандартное время или daylight savings. tm_isdst - необходимое поле. Если оно не установлено, то данное значение считается не определенным и значение, возвращаемое функцией mktime не предсказуемо. Если timeptr указывает на структуру tm, возвращенную предыдущим вызовов функций asctime, gmtime, или localtime, то поле tm_isdst содержит правильное значение.

Для получения более  подробной информации о типе данных time_t и run-time функциях, которые использует CTime смотри Run-Time Library Reference.

 

Дружественный класс CTimeSpan, представляет промежуток времени - разницу между  двумя объектами CTime.

Классы CTime и CTimeSpan не предназначены для наследования, так как они не имеют виртуальных функций. Размер объектов CTime и CTimeSpan обычно - 4 байта. Большинство функций-членов - встроенные (inline).

Для получения более  подробной информации смотри статью Date and Time в Visual C++ Programmer's Guide и Time Management в Run-Time Library Reference.

 

Члены класса CTime

 

КонструкторыCTime  Различные конструкторы объекта CТime.

GetCurrentTime  Создание объекта CTime содержащего текущее время (статическая член-функция).

Методы доступа GetTime  Возвращает time_t соответствующее объекту CТime.

GetYear  Возвращает год, который содержит данный объект CTime.

GetMonth  Возвращает месяц, который содержит данный объект CTime. (от 1 до 12).

GetDay  Возвращает день, который содержит данный объект CTime. (от 1 до 31).

GetHour  Возвращает час, который содержит данный объект CTime. (от 0 до 23).

GetMinute  Возвращает минуты, которые содержит данный объект CTime. (от 0 до 59).

GetSecond  Возвращает секунды, которые содержит данный объект CTime. (от 0 до 61).

GetDayOfWeek  Возвращает день недели (1 - воскресенье, 2 - понедельник, и т.д.).

 

 

КонверторыGetGmtTm  Разбивает объект CТime на компоненты - основываясь на UTC.

GetLocalTm  Разбивает объект CTime на компоненты - основываясь на локальной временной зоне (local time zone).

GetAsSystemTime  Переводит информацию о времени сохраненную в объекте CТime в Win32-совместимую SYSTEMTIME структуру

Format  Переводит объект CТime в форматированную строку - основываясь на локальной временной зоне (local time zone).

FormatGmt  Переводит объект CТime в форматированную строку - основываясь на UTC.

 

 

Операторыoperator =  Присвоить новое значение.

operator + -  Добавить или вычисть объекты CТimeSpan или CТime.

operator +=, -=  Добавить или вычисть объект CТimeSpan к или из данного объекта CТime.

operator ==, < , etc.  Сравнить два абсолютных значения времени.

 

 

Сохранениеoperator <<  Вывести объект CTime в CArchive или CDumpContext.

operator >>  Получить объект CTime из CArchive.

 

3. Класс COleDateTime

Библиотека MFC предоставляет класс COleDateTime, облегчаю-

щий работу с датами. Вы можете сформировать дату следующим образом:

COleDateTime date(1998, 10, 1, 18, 0, 0); // 1 октября  1998, 6 часов вечера

В классе COleVariant определен оператор присваивания для COleDateTime, а у COleDateTime

есть функции-члены для выделения  компонентов времени и даты. Вот  как можно вывести

показания времени:

TRACEftime = %d:%d:%d\n",

date.GetHourO, date.GetMinuteC), date.GetSecond());

Если у Вас есть переменная VARIANT, содержащая значение типа DATE, то для преобразо-

вания даты в строку можно использовать COleVariant::ChangeType-.

COleVariant vaTimeDate = date;

COleVariant vaTemp;

vaTemp.ChangeType(VT_BSTR, &vaTimeDate);

CString str = vaTemp.bstrVal;

TRACEC'date = %s\rT, str);

И последнее замечание  о параметрах Invoke-, у функции, вызываемой через IDispatch, мо-

гут быть необязательные параметры (optional parameters). Если компонент объявляет тип

последних параметров (крайних справа) как VARIANT, то клиент не обязан передавать их. При

таком вызове (без определения значения необязательного параметра) поле vt объекта VARIANT

на стороне компонента будет  содержать VT_ERROR.

 

 

4. Классы файлов MFC

 

Иерархия классов MFC

Библиотека MFC содержит большую иерархию классов, написанных на С++. Структура иерархии приведена на рис. 1. В ее вершине находится класс СObject, который содержит различные функции, используемые во время выполнения программы и предназначенные, в частности, для предоставления информации о текущем типе во время выполнения, для диагностики, и для сериализации.

 

Информация о типе времени  выполнения

Если указатель или ссылка ссылается  на объект, производный от класса CObject, то в этом случае предусмотрен механизм определения реального типа объекта  с помощью макроса RUNTIME_CLASS(). Хотя в С++ имеется механизм RTTI, механизм, реализованный в MFC, намного более эффективен по производительности.

 

Диагностика

Каждый класс, производный от CObject, может по запросу проверить свое внутреннее состояние и выдать диагностическую  информацию. Это интенсивно используется в MFC при отладке.

 

Сериализация

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

Основные классы

Некоторые классы порождаются непосредственно  от CObject. Наиболее широко используемыми среди них являются CCmdTarget, CFile, CDC, CGDIObject и CMenu. Класс ССmdTarget предназначен для обработки сообщений. Класс СFile предназначен для работы с файлами. Класс CDC обеспечивает поддержку контекстов устройств. Об контекстах устройств мы будем говорить несколько позднее. В этот класс включены практически все функции графики GDI. CGDIObject является базовым классом для различных DGI-объектов, таких как перья, кисти, шрифты и другие. Класс СMenu предназначен для манипуляций с меню. От класса CCmdTarget порождается очень важный класс CWnd. Он является базовым для создания всех типов окон, включая масштабируемые ("обычные") и диалоговые, а также различные элементы управления. Наиболее широко используемым производным классом является CFrameWnd. Как Вы увидите в дальнейшем, в большинстве программ главное окно создается с помощью именно этого класса.

От класса CCmdTarget, через класс CWinThread, порождается, наверное, единственный из наиболее важных классов, обращение  к которому в MFC-программах происходит напрямую: CWinApp. Это один из фундаментальных классов, поскольку предназначен для создания самого приложения. В каждой программе имеется один и только один объект этого класса. Как только он будет создан, приложение начнет выполняться.

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