Что такое модификатор доступа?

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

Давайте воспользуемся ключевым словом public и объявим переменную с именем
PublicDataMember:
#include <iostream.h>
class DataClass
{
private:
int PrivateDataMember";
public:
int PublicDataMember;
.
.
.
};

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

Теперь давайте включим в класс DataClass какую-нибудь функцию. Функции, принадлежащие классу, называются методами1. В нашем примере будет добавлен метод с именем
PublicMethod():
#include <iostream.h>
class DataClasshttp:
{
private:
int PrivateDataMember;
public:
int PublicDataMember;
int PublicMethod(void);
};

 

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

 

Данные передаются методам в виде переменных, которые называются параметрами. Это может выглядеть, например, так: add(variable1, variable2). Метод использует передаваемые данные так, как это делается и в других языках программирования.

Однако наш метод не получает параметров. На это указывает ключевое слово void: int PublicMethod(void) (присутствие void в круглых скобках необязательно - можно написать просто int PublicMethod();). Кроме того, приведенное выше объявление сообщает, что метод возвращает значение целого типа: для этого в начале объявления ставится ключевое слово int. Итак, наш метод не получает параметров и возвращает целое значение.

Метод PublicMethod() объявлен. Остается понять, как же написать его код? Мы отделим определение метода от объявления класса и снабдим определение префиксом DataClass::. Он сообщает Visual C++, к какому классу относится определяемый метод.
#include <iostream.h>
class DataClass
{
private:,br. int PrivateDataMember;
public:
int PublicDataMember;
int PublicMethod(void);
};
int DataClass::PublicMethod(void)
{
}

Теперь все готово к написанию кода метода. Наш метод не получает параметров, но возвращает целое значение. Какое значение он должен возвращать? Поскольку переменная PrivateDataMember недоступна за пределами класса, пусть метод PublicMethod возвращает ее значение, чтобы его можно было узнать в любом месте программы.

 

Обращение к закрытым переменным через методы наподобие PublicMethod() входит в число стандартных приемов программирования; тем самым удается ограничить доступ к закрытым данным класса.

 

Код метода PublicMethod() будет выглядеть так (поскольку он принадлежит классу DataClass, то может беспрепятственно обращаться к закрытой переменной PrivateDataMember):
#include <iostream.h>
class DataClass
{
private:
int PrivateDataMember;
public:
int PublicDataMember;
int PublicMethod(void);
};
return PrivateDataMember;
}

Метод PublicMethod() должен возвращать значение переменной класса PrivateData Member - но какое значение в ней будет храниться? Мы еще не инициализировали эту переменную и не присвоили ей никакого значения, так что возвращаемая методом PublicMethod() величина не будет иметь никакого смысла. Необходимо позаботиться об инициализации PrivateDataMember.













































Инициализация данных класса в конструкторе

Довольно часто приходится присваивать начальное значение данным создаваемого объекта; например, в классе DataClass нужно инициализировать переменную PrivateDataMember. Для этой цели можно создать отдельный метод или же воспользоваться конструктором класса.

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

Объявление конструктора выглядит так:
#include <iostream.h>
class DataClass
{
private:
int PrivateDataMember;
public:
DataClass(int value);
int PublicDataMember;
int PublicMethod(void);
};
Затем необходимо определить конструктор:
#include <iostream.h>
class DataClass
{
private:
int PrivateDataMember;
public:
DataClass(int Value);
};
DataClass::DataClass(int Value)
{
}

В нашем примере достаточно сохранить переданную величину в PrivateDataMember:
#include <iostream.h>
class DataClass
{
private:
int PrivateDataMember;
public:
DataClass(int value);
int PublicDataMember;
int PublicMethod(void);
};
DataClass::DataClass(int Value)
{
PrivateDataMember = Value;
}

Готово. У нас есть класс с открытыми и закрытыми переменными и методом, который можно вызывать в программе. Осталось лишь воспользоваться им, и в этом нам поможет функция main().






































Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: