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

1. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

1.1 Понятия класса С++

Класс – это новый тип данных с доступом к данным, разрешённым только определённому множеству функций. Класс, как и структура1, представляет собой набор данных и функций, предназначенных для совместного выполнения определённой задачи.

Характерные элементы класса:

1.средства контроля доступа;

2.конструкторы;

3.деструкторы;

4.элементы–данные;

5.функции–члены;

6.специально скрытый указатель this. Основные положения:

1.класс, как и структура, предварительно должен быть объявлен (при

помощи создания шаблона класса);

2.доступ к элементам класса может быть разрешён только набору функций, объявленных, как часть класса (функциям–членам);

3.объекты класса создаются и инициализируются специальными функциями, называемыми конструкторами;

4.можно объявить особую функцию для очистки всякого объекта класса при его уничтожении, называемую деструктором.

Рассмотрим реализацию понятия “данных” с использованием структуры. struct date

{

int day, month, year;

};

struct date today;

void set (date *, int, int, int); void next (date *);

void print (date *);

1Структура-это объединение нескольких переменных возможно разного типа под одним именем. Для

еесоздания необходимо определить шаблон, то есть имена и типы данных входящих в структуру

Строка struct date today; отвечает за создание объекта типа struct day. Перечисленные функции не связаны с объектом. Эту связь можно установить, описав функции, как члены.

struct date

{

int day, month, year; void set (int, int, int); void next (void); void print (void);

};

Функции, объявленные внутри структуры, называются функции–члены и могут вызываться только для работы с определёнными переменными с использованием синтаксиса для доступа к элементам структуры.

struct date today; struct date my birthday;

my birthday. set (10, 2, 1989); today. set (16, 2, 2007); today. next ();

today. day =5; обращение объекта todayк элементу day.

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

void date:: print (void)

{

cout<<day<<month<<year;

}

определение функции.

date:: – принадлежность функции print к структуре date.

В функции–члене имена элементов структуры могут указываться без явной ссылки на объект. В этом случае, имя относится к элементу того объекта, для которого функция была вызвана.

today. print();– вызов функции.

Функции не являются единственными для доступа к элементам структуры day. Это ограничение можно наложить, если объявить структуру, как класс.

Пример: class date

{

private:

int day, month, year; public:

void set (int, int, int); void next (void); void print (void);

};

Объявлен новый тип данных: класс day. Класс может содержать закрытую (private) и общую (public) часть. По умолчанию, все элементы класса закрытые. Поэтому ключевое слово private в данном примере можно убрать.

Закрытые элементы класса не могут использоваться никакими функциями, кроме функции-члена класса.

Открытая часть – это переменные и функции, доступные для всех других функций программы и объявленные после ключевого слова public. Открытая часть представляет интерфейс к объекту класса.

Как правило, большинство данных в классе являются закрытыми, доступ к ним осуществляется при помощи открытых функций.

Защищённый режим доступа protected используется при наследовании класса.

Ключевые слова: private, public, protected могут встречаться в шаблоне класса в любом порядке, любое количество раз, однако, хорошим стилем программирования считается описание один раз.

После создания класса можно объявить объект этого класса. date dat1, dat2;

где date – имя класса, dat1, dat2 – имена объектов. Таким образом, создано два объекта класса day.

1.2 Описание и вызов функций–членов класса

Описание функции–члена класса осуществляется при помощи операции принадлежности :: , которая определяет, к какому классу относится эта функция.

void date:: print (void)

{

cout<<day<<month<<year;

}

void date:: set (int a, int b, int c)

{

day=a; month=b; year=c;

}

Имя date::print называется полным или квалифицированным именем функции–члена класса. Чтобы вызвать функцию–член класса необходимо использовать имя объекта и операцию (.).

dat1. print ();

dat2. set (2, 2, 2002);

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

На практике объявление класса (создание шаблона) и описание функции– членов, как правило, осуществляется до main, так как не требует выделения памяти.

Класс – это не объектные переменные, а типы (шаблоны) для создания объектов.

Общий вид шаблона класса: Class имя класса {

private:

-||-||-||- protected:

-||-||-||- public:

-||-||-||-

};

При объявлении класса используются прототипы функции–члена класса. После описания класса можно объявить несколько объектов класса в качестве экземпляра этого класса.

date dat1,dat2;

Для доступа к элементам класса можно использовать три способа указания имени объекта:

1.Указание полного (квалифицированного) имени функции: dat1.date::print();

2.Непосредственное указание имени объекта и (.): dat1.print();

Соседние файлы в папке Информатика