68952

Наслідування. Доступ до членів класу

Лекция

Информатика, кибернетика и программирование

Наслідування — один з наріжних каменів обєктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів.

Украинкский

2014-09-28

31.5 KB

0 чел.

Лекція № 14

Тема: Наслідування. Доступ до членів класу.

Наслідування — один з наріжних каменів об'єктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів. Ці класи можуть успадковувати властивості один у одного, додаючи до них свої власні унікальні характеристики.

Згідно стандартної термінології мови C++ клас, лежачий в основі ієрархії, називається базовим (base class), а клас, що успадковує властивості базового класу, — похідним (derived class). Похідні класи, у свою чергу, можуть бути базовими по відношенню до інших класів.

У мові C++ передбачений могутній і гнучкий механізм наслідування.

Управління доступом до членів базового класу

При наслідуванні члени базового класу стають членами похідного класу. Як правило, для наслідування використовується наступна синтаксична конструкція.

с1ass імя-похідного-класу: рівень_доступу імя-базового-класу

{

// тіло класу

}

Параметр рівень_доступу визначає статус членів базового класу в похідному класі. Як цей параметр використовуються специфікатори public, private або protected. Якщо рівень доступу не вказаний, то для похідного класу за умовчанням використовується специфікатор private, а для похідної структури - public. Розглянемо варіанти, що виникають в цих ситуаціях. (Специфікатор protected буде описаний в наступному розділі.)

Якщо рівень доступу до членів базового класу задається специфікатором publiс то всі відкриті і захищені члени базового класу стають відкритими і захищеними членами похідного класу. При цьому закриті члени базового класу не міняють свого статусу і залишаються недоступними членам похідного. Як демонструє наступна програма, об'єкти класу derived можуть безпосередньо посилатися на відкриті члени класу base.

#include <iostream>

using namespace std;

class base {

int i, j;

public:

void set(int а, int b) { i=a; j=b; }

void show() { cout « i << " " « j « "\n"; }

};

class derived : public base {

int k;

public:

derived(int x) { k=x; }

void showkO { cout « k « "\n"; }

};

int main() {

derived ob (3) ;

fcb.set(l, 2); // Звернення до члена класу base

ob.showO; // Звернення до члена класу base

job.showkO; // Звернення до члена класу derived

return 0 ;

}

Якщо властивості базового класу успадковуються за допомогою специфікатора доступу private, всі відкриті і захищені члени базового класу стають закритими ними похідного класу. Наприклад, наступна програма навіть не буде скомпільована, оскільки обидві функції set() і show() тепер є закритими членами класу derived.

Ця програма не буде скомпільована.

#include <iostream>

using namespace std;

class base {

int i, j ;

public:

void set (int а, int b) { i=a; j=b; }

void show() { cout « i « " " « j « "\n";}

};

 

Відкриті члени класу base є закритими членами класу derived.

class derived : private base {

int k;

public:

derived(int x) { k=x; }

};

void main() {

derived ob (3) ;

ob.set (1, pb.show());

// Помилка, доступ до функції set() заборонений.

ob.show();

// Помилка, доступ до функції show() заборонений.

}

При закритому наслідуванні всі відкриті і захищені члени базового класу стають закритими членами похідного класу. Це означає, що вони залишаються доступними членам похідного класу, але недоступні решті елементів програми, що не є членами базового або похідного класів.


 

А также другие работы, которые могут Вас заинтересовать

77363. ПОИСК НОВЫХ ПОДХОДОВ К ВИЗУАЛИЗАЦИИ ПРОЦЕССОВ 33 KB
  Важная проблема разработки систем компьютерной визуализации связана с выбором методов представления данных возникающих в связи с описанием сложных процессов. Такие подходы появляются в различных областях компьютерной визуализации см. Нужен дополнительный поиск более простых метафор визуализации позволяющих более эффективно анализировать абстрактные данные.
77364. Применение алгоритмов распознавания образов с целью захвата жестовых языков без применения маркирующих устройств 23.5 KB
  В этой работе рассматривается возможность построения системы на базе принципов захвата движения для распознавания жестовых языков обладающих большим количеством знаков. В этой связи важным является изучение современных алгоритмов распознавания образов. Проведен анализ ряда алгоритмов преобразования изображений применяемых в области распознавания образов а также их комбинации для эффективности решения поставленной задачи.
77365. VISUAL SUPPORTING OF PROGRAM PARALLELIZING 26 KB
  We have developed the simple prototype of the system to support visually the parallelizing process. The prototype is realized twofold. One of the realizations has to deal with parallelism of Massage Passing paradigm; another has to deal with Shared Memory parallelization. That is our system works with MPI and OpenMP programs.
77366. ПРОЕКТ СРЕДЫ РАЗРАБОТКИ СПЕЦИАЛИЗИРОВАННЫХ СИСТЕМ ВИЗУАЛИЗАЦИИ 39.5 KB
  Средства визуализации результатов численного моделирования можно разделить на три класса: Универсальные системы визуализации способные отображать большое многообразие визуальных объектов. Специализированные системы визуализации предметной области вычислительного эксперимента или специфических визуальных сущностей. Специализированные системы визуализации созданные специально для данного исследовательского проекта или даже конкретного пользователя.
77367. РАЗРАБОТКА СРЕДСТВ ВИЗУАЛЬНОГО ПРЕДСТАВЛЕНИЯ СЕТОК 26 KB
  В настоящее время для визуализации сеток на этапе генерации используются средства разработанного в коллективе конструктора специализированных систем визуализации. Для визуализации сеток больших объемов проводится экспериментальная разработка по реализации параллельного программного воксельного рендеринга с применением графических ускорителей. Продолжаются исследования и опытные разработки по применению виртуальной реальности для визуализации сеточных данных. Система интерактивной визуализации параллельных вычислений 14я Международная...
77368. Remote Visualization in Computer Aided Engineering 14 KB
  IMM UrB RS Urls Stte University Computer ided Engineering softwre gin now the incresing distribution. To chieve dditionl productivity engineering clcultions re mde on the specil computing resources which re seprte from the engineer’s worksttion. It ssumes tht imges re rendered remotely from enduser worksttion close to the plce of ctul engineering computtions.
77369. РАЗРАБОТКА КОМПИЛЯТОРА ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ RIDE.L 24 KB
  Согласно которой используя статическую типизацию и перегрузку операторов для описания семантики синтаксических конструкций языка на самом языке можно получать эффективный машинный код. Оператор в качестве аргументов получает несколько выражений и одну строковую константу содержащую ассемблерный код в тернарной форме. В общем случае аппликация операторов происходит так: код реализация оператора подставляется по месту обращения; код определяется следующим образом: если выражение это оператор код фрагментов при проходе слева...
77370. Методика распределенных вычислений RiDE 391 KB
  RiDE это методика для программирования в параллельных распределенных средах основанная на модели потока данных dtflow. Иногда при создании подобных решений используется модель потоков данных Dtflow. В различных вариантах методики основанные на моделях потоков данных применяются для создания процессорных архитектур суперкомпьютеров в целом для программной организации вычислительных потоков в рамках одного процесса и взаимодействия процессов в распределенной вычислительной среде. Методика основана на анализе...
77371. Технология параллельного программирования RiDE 34.5 KB
  УрО РАН RiDE это технология программирования в параллельных распределенных средах на основе модели потока данных dtflow. RiDE основана на анализе различных в том числе и собственных моделей потока данных. Технология RiDE базируется на понятиях хранилища задач и правил.