Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c++ 2.0.docx
Скачиваний:
4
Добавлен:
25.09.2019
Размер:
77.41 Кб
Скачать

21) Способы обмена данными: Возвращаемое значение.

Возвращает значение функции - это значит что функцию можно использовать как переменную в операторе присвоения или в другой функции (например printf). Например. Есть функция delat_chto-to( ); если в ней написано например return 2; то можно написать

A=3+delat_chto-to( ); и получится что A=5; Чаще функция что-то делает а не вычисляет, например переставляет местами элементы массива. Тогда в return можно записать например коды ошибок. 0 если все хорошо, 1 если нет. Короче говоря, с помощью оператора return мы присваиваем какое-то значение идентификатору ф-ии, (то есть названию ф-ии) после чего название ф-ии можно использовать как обычную переменную. Таким образом, ф-я выполняется, делает то, что ей положено, и одновременно с помощью return названию ф-ии присваивается какое-то значение. Иногда єто бывает полезно. Если присваивать значение особо не нужно, то используют значения для кодов ошибки.

22) Наследование (С++, Паскаль).

Цель объектно-ориентированного программирования состоит в повторном использовании созданных вами классов, что экономит ваше время и силы. Если вы уже создали некоторый класс, то возможны ситуации, что новому классу нужны многие или даже все особенности уже существующего класса, и необходимо добавить один или несколько элементов данных или функций. В таких случаях C++ позволяет вам строить новый объект, используя характеристики уже существующего объекта. Другими словами, новый объект будет наследовать элементы существующего класса (называемого базовым классом). Когда вы строите новый класс из существующего, этот новый класс часто называется производным классом

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

Для инициализации элементов производного класса ваша программа должна вызвать конструкторы базового и производного классов. Используя оператор точку, программы могут легко обращаться к элементам базового и производного классов. В дополнение к общим (public) (доступным всем) и частным (private) (доступным методам класса) элементам C++ предоставляет защищенные (protected) элементы, которые доступны базовому и производному классам. Для разрешения конфликта имен между элементами базового и производного классов ваша программа может использовать оператор глобального разрешения, указывая перед ним имя базового или производного класса. Наследование является фундаментальной концепцией объектно-ориентированного программирования. Выберите время для экспериментов с программами, представленными в этом уроке. И вы обнаружите, что реально наследование реализуется очень просто и может сохранить огромные усилия, затрачиваемые на программирование.

ПРОСТОЕ НАСЛЕДОВАНИЕ

Наследование представляет собой способность производного класса наследовать характеристики существующего базового класса. Например, предположим, что у вас есть базовый класс employee:

class employee

{

public:

employee(char *, char *, float);

void show_employee(void);

private:

char name[64];

char position[64];

float salary;

};

Ключевое слово public, которое предваряет имя класса employee, указывает, что общие (public) элементы класса employee также являются общими и в классе manager. Например, следующие операторы порождают класс manager.

class manager : public employee

{

public:

manager(char *, char *, char *, float, float, int);

void show_manager(void);

private:

float annual_bonus;

char company_car[64];

int stock_options;

};

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

Представление о наследовании

Наследование представляет собой способность производного класса наследовать характеристики существующего базового класса. Простыми словами это означает, что, если у вас есть класс, чьи элементы данных или функции-элементы могут быть использованы новым классом, вы можете построить этот новый класс в терминах существующего (или базового) класса. Новый класс в свою очередь будет наследовать элементы (характеристики) существующего класса. Использование наследования для построения новых классов сэкономит вам значительное время и силы на программирование. Объектно-ориентированное программирование широко использует наследование, позволяя вашей программе строить сложные объекты из небольших легко управляемых объектов.

ПАСКАЛЬ

Одним из наиболее впечатляющих свойств классов Object Pascal является возможность их расширения посредством механизма наследования. Наследование означает расширение функциональных возможностей существующего класса за счет порождения от него нового класса. В цепочке наследования исходный класс называется базовым (или предком), а новый, созданный вами класс — производным (или потомком). Чтобы проиллюстрировать сказанное, давайте снова вернемся к классу TAirplane. Согласитесь, что военная и гражданская авиация — это два совершенно разных мира. Для представления военного самолета я ввел в класс TMilitaryPlane (производному от TAirplane) дополнительные функциональные возможности:

TMilitaryPlane = class(TAirplane)

private

TheMission : TMission;

constructor Create(AName : string; AType : Integer);

function GetStatus(var StatusString : string) : Integer; override;

protected

procedure TakeOfffDir : Integer); override;

procedure Land; override;

procedure Attack; virtual;

procedure SetMission; virtual;

end;

Класс TMilitaryPlane обладает не только всеми достоинствами класса TAirplane, но и некоторыми дополнительными элементами. Обратите внимание на первую строку в объявлении класса TMilitaryPlane. Имя класса, помещенное после ключевого слова class в круглые скобки, должно сообщить компилятору, что речь идет о наследовании существующего класса. В нашем случае базовым (т. е. классом, наследниками которого мы являемся) будет класс TAirplane. Производный класс имеет все функциональные возможности базового класса плюс все то, чем вы сочтете нужным его дополнить Вы можете включить в него новые поля и методы, но вы не можете устранить ни одного из существующих элементов Обратите внимание на присутствие в разделе private переменной класса TMission. Сам класс TMission здесь не показан, однако нетрудно предположить, что он должен инкапсулировать все то, что относится к боевому заданию, поставленному перед военным самолетом: цель, навигационные точки, высоты и курсовые углы входа и выхода и т. д. Этот пример показывает, что допускается использование полей данных, которые являются экземплярами других классов. При программировании в Delphi вам нередко придется сталкиваться с таким явлением.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]