Знакомство с классами.Определение класса и cоздание его объекта.
Класс - это производный структурированный тип, введенный программистом на основе уже существующих типов. Другими словами, механизм классов задает некоторую структурированную совокупность типизированных данных и позволяет определить набор операций над этими данными. Общий синтаксис класса можно определить с помощью конструкции: class имя_класса { список_компонентов };
|
1. имя_класса - произвольно выбираемый идентификатор 2. список_компонентов - определения и описания типизированных данных и принадлежащих классу функций. Компонентами класса могут быть данные, функции, классы, перечисления, битовые поля и имена типов. Вначале для простоты будем считать, что компоненты класса - это типизированные данные (базовые и производные) и функции. 3. Заключенный в фигурные скобки список компонентов называют телом класса. 4. Телу класса предшествует заголовок. В простейшем случае заголовок класса включает слово class и имя. 5. Определение класса всегда заканчивается точкой с запятой. Итак, принадлежащие классу функции мы будем называть методами класса или компонентными функциями. Данные класса -компонентными данными или элементами данных класса. Вернемся к определению: класс - это тип, введенный программистом. А, так как, каждый тип служит для определения объектов, определим синтаксис создания объекта класса. Определение объекта класса предусматривает выделение участка памяти и деление этого участка на фрагменты, соответствующие отдельным элементам объекта, каждый из которых отображает отдельный компонент данных класса. Способы доступа к компонентам класса.Существует несколько уровней доступа к компонентам класса. Рассмотрим два основных. public - члены класса открыты для доступа извне. private - члены класса закрыты для доступа извне. Давайте расшифруем. По умолчанию все переменные и функции, принадлежащие классу, определены как закрытые (private). Это означает, что они могут использоваться только внутри функций-членов самого класса. Для других частей программы, таких как функция main(), доступ к закрытым членам запрещен. Это, кстати, единственное отличие класса от структуры - в структуре все члены по умолчанию - public. С использованием спецификатора доступа public можно создать открытый член класса, доступный для использования всеми функциями программы (как внутри класса, так и за его пределами). Синтаксис для доступа к данным конкретного объекта заданного класса (как и в случае структур), таков:
имя_объекта.имя_члена класса;
|
Пришло время примера...# include <iostream>
using namespace std;
class Test{
// так как спецификатор доступа не указан
// данная переменная будет по умолчанию закрыта
// для доступа вне класса (private)
int one;
// спецификатор доступа public
// все члены, идущие после него
// будут открыты для доступа извне
public:
// инициализировать переменные в классе
// при создании запрещено, поэтому мы определяем
// метод, реализующий данное действие
void Initial(int o,int t){
one=o;
two=t;
}
// метод показывающий переменные класса
// на экран
void Show(){
cout<<"\n\n"<<one<<"\t"<<two<<"\n\n";
}
int two;
};
void main(){
// создается объект с типом Test
Test obj;
// вызывается функция, инициализирующая его свойства
obj.Initial(2,5);
// показ на экран
obj.Show(); // 2 5
// прямая запись в открытую переменную two
// с переменной one такая запись невозможна, так
// как доступ к ней закрыт
obj.two=45;
// снова показ на экран
obj.Show(); // 2 45
}
|
Вышеописанный пример вполне интуитивно прост, однако, выделим один из главных моментов - переменные класса нет необходимости передавать в методы класса в качестве параметров, так как они видны в них автоматически.
|