Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Иерархия классов.docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
43 Кб
Скачать
☆

4)Порядок вызова методов.

Сначала компилятор ищет данный метод в классе, к которому принадлежит вызывающий объект, если не находит, то ищет метод в родительском классе и далее вверх по иерархии. Если метод не найден, то выдаёт сообщение об ошибке.

5)Основные принципы ооп.

Инкапсуляция – объединение полей записи с процедурами и функциями, работающих с полями этих записей, которое формирует новый тип объекта.

Наследование – создание иерархии классов для того, чтобы поля данных и методы предков автоматически были полями данных и методами потомков. Наследование полей и методов различны.

Полиморфизм – присвоение определённому действию одного имени, которое затем совместно используется по всей иерархии класса (сверху вниз), причем каждый класс иерархии выполняет характерным именно для него способом.

6)Пример использования указателя this.

В методе объекта на поля объекта, для которого она была вызвана, можно ссылаться непосредственно. Например:

class x {

int m;

public:

int Get_m() { return m; }

};

x aa;

x bb;

void main()

{

int a = aa.Get_m();

int b = bb.Get_m();

// ...

}В первом вызове метода Get_m(), m относится к aa.m, а во втором - к bb.m.

Указатель на объект, для которого вызван метод, является скрытым параметром метода. На этот неявный параметр можно ссылаться явно как на this. В каждом метода класса x указатель this неявно описан как

x* this;

и инициализирован так, что он указывает на объект, для которого была вызван метод. this не может быть описан явно, так как это ключевое слово. Класс x можно эквивалентным образом описать так:

class x {

int m;

public:

int Get_m() { return this->m; }

};

При ссылке на поля использование this излишне. Главным образом this используется при написании методов, которые манипулируют непосредственно указателями.

7.8) Директивы Private, Public, Protected.

Модификатор доступа

Область видимости элементов раздела

Из внешних функций

Из методов наследуемых классов

Из методов самого класса

public

Да

Да

Да

protected

Нет

Да

Да

private

Нет

Нет

Да

Директивы private и public называются спецификаторами доступа. Спецификатор private означает, что элементы данных и элементы-функции, размещенные под ним, доступны только функциям-элементам данного класса. Это так называемый закрытый доступ.

Спецификатор public означает, что размещенные под ним элементы доступны как данному классу, так и функциям других классов и вообще любым функциям программы через представитель класса.

Есть еще спецификатор защищенного доступа protected, означающий, что элементы в помеченном им разделе доступны не только в данном классе, но и для функций-элементов классов, производных от него.

п. 8.1 Private

class obj{

Private:

Приватные (закрытые) поля;

Приватные методы;

Public:

Общедоступные поля;

Общедоступные методы;

}

class tlocation {

public:

int GetX() { return x };

int GetY() { return y };

Private:

Int x, y;

void Init(int InitX, int InitY);

}

{доступ к полям x, y и методу Init получить не возможно}

void tlocation::Init(int InitX, int InitY){

x= InitX;

y= InitY;

}

п.8.2 Public

class tlocation {

Private:

Int x, y;

Init( )

Public:

Int GetX();

Int GetY();