Полиморфизм
Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов. Класс в языке С++ задается с помощью ключевого слова class, за которым следует его имя и в фигурных скобках {} дается его описание. После определения класса ставится точка с запятой. Ниже приведен пример описания класса для хранения координат графических примитивов: class CPos { int sp_x, sp_y; //координата начала int ep_x, ep_y; //координата конца };
30-32Определение и вызов функций.. Фактические и формальные параметры. Передача массивов и указателей на функции. Предварительная инициализация параметров, функции с переменным числом параметров. Программа С++ состоит из одной или нескольких функций. Функции разбивают большие задачи на маленькие подзадачи. Имя одной из функций - main, которая обязательно должна присутствовать в любой программе, является зарезервированным. Функция main необязательно должна быть первой, хотя именно с нее начинается выпол-нение программы. Функция не может быть определена в другой функции. С использованием функции связаны 3 понятия - определение функции, объявление функции и вызов функции. Определение функции имеет вид: тип имя (список описаний аргументов){ операторы } Здесь имя - это имя функции; Аргументы в списке описаний называют формальными параметрами. Например, функция, находящая и возвращающая максимальное значение из двух целых величин a и b определяется так: int max(int a, int b){ return(a>=b)? a:b; } Это определение говорит о том, что функция с именем max имеет два целых аргумента и возвращает целое значение. Если функция действительно должна возвращать значение какого-либо типа, то в ее теле обязательно должен присутствовать оператор return выражение; при выполнении этого оператора выполнение функции прекращается, управление передается в функцию, вызывающую данную функцию, а значением функции будет значение выражения. Функция может и не возвращать никакого значения. В этом случае ее определение таково: void имя (список описаний аргументов){ операторы } Вызов такой функции имеет вид: имя (список фактических аргументов); Выполнение функции, не возвращающей никакого значения, прекращается оператором return без следующего за ним выражения. Выполнение такой функции и возврат из нее в вызывающую функцию происходит также и в случае, если при выполнении тела функции произошел переход на самую последнюю закрывающую фигурную скобку этой функции. ормальные параметры – данные, с которыми работает подпрограмма (ПП). Это внутренние данные для ПП. Они перечисляются в заголовке ПП и связаны с фактическими параметрами. Фактические параметры – данные, передаваемые в ПП и возвращаемые из нее. Это внешние для ПП данные, с которыми имеет дело вызывающая часть программы. В ПП им соответствуют формальные параметры. Указываются в списке фактических параметров при обращении к ПП. Синонимы: · Параметры = формальные параметры. · Аргументы = фактические параметры. Для формальных и фактических параметров необходимо соблюдать соответствия: · одинаковое количество, · одинаковый порядок следования, · совместимость типов по присвоению. Категории формальных параметров · Параметры-значения (в списке формальных параметров не имеют атрибута). Передаются ПП через стек, как копии, и не изменяются ею. · Параметры-переменные (в списке формальных параметров имеют атрибут var). Передаются ПП через адреса, и могут изменяться ею. Используются для возврата результатов в вызывающую программу. · Выходные параметры-переменные (в списке формальных параметров имеют атрибут out). Подобны параметрам-переменным, но передаются только из ПП в программу. · Параметры-константы (в списке формальных параметров имеют атрибут const). Передаются ПП через адреса, но не могут изменяться ею. Применяются вместо параметров-значений, когда стек может переполняться. · Процедуры или функции. Это параметры процедурного типа. Задаются именами. · Параметры без типа. За правильность использования отвечает программист. · Умалчиваемые параметры. Их в списке фактических параметров можно пропускать. В списке формальных параметров для них нужно задать тип и значение.
|