Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТ...docx
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
695.51 Кб
Скачать

4. Полиморфизм и перегрузка функций

Одним из характерных свойств объектно-ориентированного языка, в

том числе и Си++, является полиморфизм – использование одного имени

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

Применительно к функциям это называется перегрузкой. Для основных

операций Си++ перегрузка уже встроена в язык: например, у сложения

существует только одно имя, "+", но его можно применять для сложения как

целых, так и вещественных значений. Эта идея расширяется на обработку

операций, определенных пользователем, т.е., функций.

Перегруженные функции имеют одинаковые имена, но разные списки

параметров и возвращаемые значения (см. программу 5.4).

#include<iostream.h>

int average( int first_number, int second_number,

int third_number );

int average( int first_number, int second_number );

// ГЛАВНАЯ ФУНКЦИЯ:

void main()

{

int number_A = 5, number_B = 3, number_C = 10;

cout << "Целочисленное среднее чисел " << number_A << " и ";

cout << number_B << " равно ";

cout << average(number_A, number_B) << ".\n\n";

cout << "Целочисленное среднее чисел " << number_A << ", ";

cout << number_B << " и " << number_C << " равно ";

cout << average(number_A, number_B, number_C) << ".\n";

}

// КОНЕЦ ГЛАВНОЙ ФУНКЦИИ

// ФУНКЦИЯ ДЛЯ ВЫЧИСЛЕНИЯ ЦЕЛОЧИСЛЕННОГО СРЕДНЕГО

// ЗНАЧЕНИЯ 3-Х ЦЕЛЫХ ЧИСЕЛ:

int average( int first_number, int second_number,

int third_number )

{

return ((first_number + second_number + third_number)/3);

}

// КОНЕЦ ФУНКЦИИ

// ФУНКЦИЯ ДЛЯ ВЫЧИСЛЕНИЯ ЦЕЛОЧИСЛЕННОГО СРЕДНЕГО

// ЗНАЧЕНИЯ 2-Х ЦЕЛЫХ ЧИСЕЛ:

int average( int first_number, int second_number )

{

return ((first_number + second_number)/2);

}

// КОНЕЦ ФУНКЦИИ

Программа 5.4

Программа 5.4 выводит на экран сообщения:

Целочисленное среднее чисел 5 и 3 равно 4.

Целочисленное среднее чисел 5, 3 и 10 равно 6.

5. Процедурная абстракция и "хороший" стиль программирования

Функции помогают применять для разработки программ структурный

метод проектирования "сверху вниз". При этом решаемая задача делится

на подзадачи (и затем на под-подзадачи и т.д.). Для решения каждой

подзадачи программист реализует отдельную функцию, при этом ему не

нужно знать детали реализации остальных функций.

Чтобы функцией мог воспользоваться другой программист, она

должна иметь осмысленное имя и комментарий с описанием назначения

функции, ее параметров и возможных возвращаемых значений.

Опытные программисты на начальных этапах разработки часто

применяют пустые функции (заглушки), которые содержат только оператор

возврата значения соответствующего типа. Эти функций облегчают отладку

главной функции или просто функции более высокого уровня.

Выделение в решаемой задаче функций методом "сверху вниз" часто

называется функциональной или процедурной абстракцией. При

проектировании независимых друг от друга функций широко применяется

передача параметров по значению и локальные переменные внутри

функций. После реализации программист может рассматривать подобные

функции как "черные ящики". Для их использования знать детали

реализации не обязательно.