
- •10.3 Операторы управления
- •10. 4 Оператор мультиветвления switch
- •10.6 Применение функции printf для форматирования
- •11.1 Графические программы
- •11.2 Построение символьного графика
- •11.4 Построение графика в графическом режиме
- •12.1 Передача данных для построения графика в MathCad
- •12.4 Указатели
- •12.5 Описание указателей
- •12.6 Указатели для массивов и строк
- •13.3 Оператор динамического выделения памяти new
- •Void main ( ) {
- •Void tab( ); };
- •Void main ( ) {
- •15.1 Класс объектов, элементы класса
- •15.2 Доступ к элементам класса
- •15.3 Вызов элементов класса
- •15.4 Конструкторы классa
- •15.5 Пример класса Tkplk
- •16.1 Наследование
- •16.2 Полиморфизм
- •16.3 О перегрузке функций и операций
- •17. 1 Среда программирования и библиотека vcl
- •17.2 Консольное приложение в Builder
- •При выполнении лабораторных работ в дисплейном классе используется
- •17.5 Вид экрана в builder
- •17.6 Работа с проектом в системе Builder
- •18.1 Редактор кода
- •18.4 Пример запроса, ввода, вывода для Win -программы
16.2 Полиморфизм
При составлении больших программ, например, при совместной работе коллектива разработчиков, могут появляться функции с одинаковыми именами. Кроме того, часто удобно иметь одно имя для функций с разными типами аргументов , например, exp(x) и exp(z) для вещественного значения x и комплексного значения z .
Как указывалось в разделе 14.3, п о л и м о р ф и з м - это правила использования функций с одинаковыми именами для разных целей.
Слово полиморфизм можно трактовать как "многоформенность", многообразие.
( по-гречески μορφη = форма ). Например, графит и алмаз полиморфны, т.к. имеют
одинаковый химический состав, но разный вид и разные свойства.
В ООП полиморфизм реализуется несколькими способами, в которых используются
перегрузка функций, перегрузка операторов, виртуальные функции, шаблоны. Эти разделы ООП сложны и кратко рассмотрим лишь некоторые возможности.
Виртуальную функцию использовали в предыдущем разделе.
В случаях, когда функции с одинаковыми именами находятся в разных классах,
используется полное имя метода для конкретного объекта, например,
obmy.Ma1 :: fmet(z) ;
для примера рис. 14.3.
16.3 О перегрузке функций и операций
Перегрузкой ( англ. overloading ) называется использование функций с одинаковыми именами, но различными аргументами.
Компилятор находит нужную функцию по типу фактических параметров при вызове.
Если у двух функций одинаковые имена и параметры, а различны только типы функций, то перегрузка невозможна.
Цель перегрузки состоит в том, чтобы функции с одинаковыми именами
по-разному выполнялась при обращении к ним с различающимися по типам и количеству аргументами. Например, для float x и complex z имеем разные алгоритмы вычисления значений exp(x) и exp (z) и разные типы возвращаемых значений - double и complex соответственно. Многие стандартные функции, как и exp, являются перегруженными. Конструкторы классов также обычно являются перегруженными функциями. Пример перегруженных функций:
# include < iostream.h >
# include < conio.h >
int f (int a ) { return a; }
int f ( int a, float b ) { cout << b <<endl ; return (int) (a*b) ; }
void main ( )
{ cout << f ( 4) << endl << f ( 3, 1.9) ; getch( ); }
Здесь будут вызываться разные функции, хотя их имена совпадают.
Перегрузкой операций называют возможность распространения действия стандартных операций ( например, + - * ) на нестандартные для них операнды. Другими словами, перегрузка операции есть назначение ей другого действия.
Все операции с комплексными числами перегружены и выполняются по правилам, отличным от правил операций для обычных чисел. Нестандартные правила для операций с комплексными числами описываются в классе complex.
Перегружены также операции для работы со строками класса string. Например,
знак + (плюс) для строк означает операцию конкатенации, т.е. соединения строк:
string a ("aa"), b ("bb"), c ("vvvvvv"); c = a + b ; cout << c <<endl;
При выполнении этого фрагмента получим на экране строку
aabb
Возможно описание перегрузки операций в тексте программы. Для этого используются специальные подпрограммы, называемые операциями-функциями, заголовки которых содержат ключевое слово operator и знак операции после этого служебного слова.
Лекция 17 Введение в систему BUILDER