Принцип инкапсуляции в ООП. Структура базового класса. Спецификаторы доступа к элементам класса. Классы и экземпляры классов. Доступ к элементам класса.


Понятие класса в ООП. Структура базового класса. Вложенные и локальные классы. Сравнение базового класса со структурой и объединением.

Класс(тип класса) – логическая абстракция(шаблон) связывающие данные и код между собой.

Экземпляр класса – объект, физически представляющий класс (переменную типа класса). экземпляры одного класса имеют общую структуру и методы, но различаются расположением в памяти и текущим состоянием.

 

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; просмотров: 247;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.014 сек.