Принцип инкапсуляции в ООП. Структура базового класса. Спецификаторы доступа к элементам класса. Классы и экземпляры классов. Доступ к элементам класса.
Понятие класса в ООП. Структура базового класса. Вложенные и локальные классы. Сравнение базового класса со структурой и объединением.
Класс(тип класса) – логическая абстракция(шаблон) связывающие данные и код между собой.
Экземпляр класса – объект, физически представляющий класс (переменную типа класса). экземпляры одного класса имеют общую структуру и методы, но различаются расположением в памяти и текущим состоянием.
class имя_класса
{
закрытые данные и функции;
спецификатор доступа:
данные и функции;
спецификатор доступа:
данные и функции;
} список объектов;
Вложенные классы – класс, определенный внутри другого. Ограничения:
· Вложенный класс может существовать только внутри области видимости внешнего класса
· Используется редко по причине возможности замены путем наследования
Локальный класс – класс, определенный внутри функции. Ограничения:
· Тела всех функций-членов должны определяться только внутри объявления класса
· Не могут обращаться к локальным переменным, объявленным внутри функции (кроме локальных статических и внешних переменных)
· Не могут иметь статических переменных-членов
Структура (struct) – эквивалент класса, а ее объявление определяет тип класса. Отличие структуры от класса – все члены структуры имеют спецификатор доступа public по умолчанию. Структуры обеспечивают обратную совместимость программ с языком С, а так же используются для легкой трансформации программ на С в С++
Объединение (union) – эквивалент класса, а его объявление определяет особый тип класса. Отличия от класса: все члены объединения имеют спецификатор доступа public по умолчанию, не могут быть базовым классом, не могут использовать механизм наследования, не могут содержать виртуальные функции, статические переменные и ссылки, перегруженный оператор присваивания.
Локальный класс:
void function()
{
class example
{
int a;
public:
example()
{
a = 0;
}
example(int A)
{
a = A;
}
int getInt()
{
return a;
}
};
example object(10);
cout >> object.getInt();
}
Вложенный класс:
class example
{
int a;
class nested
{
double b;
public:
void setDouble(double B) { b = B; }
double getDouble() { return b; }
} C;
public:
example()
{
a = 0;
C.setDouble(0.0);
}
example(int A, double B)
{
a = A;
C.setDouble(B);
}
int getInt() { return a; }
double getDouble() { return C.getDouble(); }
}
Принцип инкапсуляции в ООП. Структура базового класса. Спецификаторы доступа к элементам класса. Классы и экземпляры классов. Доступ к элементам класса.
class имя_класса
{
закрытые данные и функции;
спецификатор доступа:
данные и функции;
спецификатор доступа:
данные и функции;
} список объектов;
Класс(тип класса) – логическая абстракция(шаблон) связывающие данные и код между собой.
Экземпляр класса – объект, физически представляющий класс (переменную типа класса). экземпляры одного класса имеют общую структуру и методы, но различаются расположением в памяти и текущим состоянием.
Спецификаторы доступа описывают правила доступа к данным и методам класса:
· public – полный доступ к данным и методам класса
· private – закрытый доступ (только через функции-члены класса, закрытая секция не доступна в производном классе), режим доступа по умолчанию
· protected – защищенный доступ (только через функции-члены класса, видимость в производном классе зависит от уровня доступа наследования базового класса)
Cпецификатор доступа действует по умолчанию от { до следующего спецификатора или до }. зона действия объявленного спецификатора – от текущего объявления до следующего спецификатора или до }. Спецификаторы допускается чередовать в любом порядке и количестве. Рекомендуется создавать не более одного раздела каждого вида – упрощает восприятие класса.
Любой элемент класса – член класса. Различают данные-члены и функции-члены. Члены класса не могут быть объявлены с ключевыми словами auto, extern, register. Обычно данные-члены объявляются закрытыми, для поддержки инкапсуляции данных. Доступ к открыты данным выполняется быстрее, поэтому переменные используемые часто следует объявлять как public. Доступ к элементам класса осуществляется с помощью операторов “.” или “–>”
class example
{
double b;
public:
void setDouble(double B)
{
b = B;
}
double getDouble()
{
return b;
}
};
void main()
{
example object1;
object1.setDouble(1.5);
cout << object1.getDouble() << endl;
example *object2 = new example;
object2->setDouble(2.5);
cout << object2->getDouble() << endl;
}
Дата добавления: 2022-02-05; просмотров: 252;