Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lections_rus.doc
Скачиваний:
31
Добавлен:
06.02.2016
Размер:
1.41 Mб
Скачать

2.1.1.Понятие класса объектов

Класс объектовв ООП рассматривается как абстрактный тип дан­ных. Это означает, что в качестве некоторого единого целого в прог­рамме выступает определенная совокупность данных и набор операций (процедур), которые могут быть выполнены для этих данных.

Классявляется ключевым понятием C++. По определению Б.Страус­трупа "Класс - это тип, определяемый пользователем". Классы обеспе­чивают скрытие данных, гарантированную инициализацию данных, неяв­ное преобразование типов для типов, определенных пользователем, ди­намическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операцій (обо всем этом мы поговорим позже).

2.1.2. Основные характеристики состояния класса

Совокупность данных, которые характеризуют текущее состояние объекта определенного класса и его взаимосвязи с другими объектами, называют локальной (приватной) памятью объекта, а определенные для объектов данного класса операции- методами объектов класса.Сово­купность всех методов, специфицированных для некоторого класса, на­зывается интерфейсом класса.

2.1.3. Понятие инкапсуляции свойств объекта

Структура локальной памяти объектов и реализация методов скры­ты от внешнего наблюдателя, т.е. любого другого объекта. Это фунда­ментальное свойство классов объектов в ООП получило название "скры­тия данных" (data hiding) или, что более точно, -инкапсуляции свойств. В соот­ветствии с догмами ООП не существует другого метода получить инфор­мацию о состоянии объекта или изменить состояние его приватной па­мяти, кроме как воспользоваться одном из специфированных в описании соответствующего класса методе. Единственно, что доступно знанию о методе - это способ и правила его вызова.

При реализации инкапсуляции свойств различные языки програм­мирования позволяют управлять уровнем доступа к приватной памяти. Так, например, С++ допускает три уровня защиты данных и функ­ций-членов класса: общедоступные, закрытые и защищенные (public, private, protected).. Другой особенностью С++ в этом аспекте является то, что в нем инкапсуляция свойств обеспечивается не на уровне объекта, а на уровне класса объектов. Это означает, в частности, что объект может получить дос­туп к приватной памяти другого объекта этого же класса или вызвать защищенный метод для такого объекта.

2.1.4. Структура глобальной памяти класса и глобальные методы класса

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

В С++ такие данные и методы носят название статических членов класса.

2.1.5. Интерфейс класса

Определение пользовательского типа (в C++ называется class), определяет данные, необходимые для представления объекта этого типа, и множество операций, для работы с этими объъектами. Определение имеет две части: закрытую (private) часть, которой может пользоваться только его разработчик, и открытую (public) часть, которая представляет интерфейс типа с пользователем. Формально самое простое описание класса выглядит так:

ключевое_слово имя_класса

{

список_членов

};

(то есть объединения и структуры в С++ являются элементарной формой класса). Поле имя_класса- уникальный идентификатор класса. Полесписок_членоввключает описание типов данных и имен данных, а также функций работы с ними. Переменные, перечисленные в классе, имеют тип(private)- область действия в пределах класса (по умолчанию - private) и доступ к ним имеют только функции-члены класса. Функции имеют типpublic, то есть видимы снаружи класса, и к ним может осуществляться доступ извне. Список членов - это важнейший элемент описания класса. Он определяет особенности объектов класса, их внутреннюю структуру, поведение и способы взаимодействия с другими объектами.

ПРИМЕР описания класса:

#include <iostream.h> // библиотека потоков ввода-вывода

#include <dos.h>

#include <stdlib.h>

// Описание класса

class my_date // определим класс дата

{

int day,mon,year;// по умолчанию private!

public:

my_date(char *str); //ініціалізація рядком

my_date(char *d, char *m, char *y); //инициализация символами

void print_dat(void);

};

// Описание методов класса

void my_date::print_dat(void) //вивід дать на печать

{

cout<<day<<'.'<<mon<<'.'<<year<<'\n';

}

my_date::my_date(char *str)

{

year = atoi(str+4); *(str+4)='\0'; //конвертация сроки в число

mon = atoi(str+2); *(str+2)='\0';

day = atoi(str );}

my_date::my_date(char *d, char *m, char *y)

{

year = atoi(y); //конвертация символа в число

mon = atoi(m);

day = atoi(d);

}

// Основная (прикладная) программа

void main (void)

{

// Объявляется класс прикладной программы типа my_date

my_date one_date = my_date("14021995");

// Вывод значения дать с использованием метода print_dat

one_date.print_dat();

}

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