Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vsyo_33.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.88 Mб
Скачать

I.7. Полиморфизм в программировании. Перегрузка функций, знаков операций. Действия над объектами.

Обычные знаки операций, как +,-,* и т.д. в С++ предусмотрены для выполнения операций для операндов базовых типов. Введение с помощью классов новых типов данных требует введения и операций над величинами этих типов, над объектами, массивами объектов, указателями на классы.

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

Какой знак операции, как истолковывается при выполнении операции над объектами, описывается с помощью функций класса или друж. функций. Именами функций, перегруж. знаки операций, явл. слово operator с суффиксом в виде перегружаемого знака.:

Тип operator_знак_операции(описание форм.пар-ров) или friend тип operator _знак_операции (описание форм.пар-ров) при составлении перегружаемых операторов нужно иметь в виду, что:

  1. функции-операторы не могут иметь пар-ры по умолчанию;

  2. нельзя изменять предусмотренное стандартом языка количество операндов, приоритет и правила ассоциации операций;

  3. функции-операторы не могут иметь класс памяти static;

  4. если функция-оператор явл. дружеств. или обычной неклассовой функцией, то хотя бы один из форм. пар-ров должен быть объектом типа этого класса, ссылкой или указателем на класс;

  5. запрещается перегружать операции выбора члена субъекта (.), разрешения области видимости (::), разыменования (*), условную (?:) и операцию sizeof.

II.1. Методика проектирования и составления программ модульной структуры.

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

  1. тщательно проанализировать всю задачу, выделить подзадачи, записать задачи и подзадачи на естественном языке; убедиться, что выбранная схема приводит к решению задачи, каждой подзадаче поставить в соответствие определенную функцию.

  2. Составить функциональную блок-схему решения задачи, представив каждую функцию отдельным блоком; определить имя и тип значений каждой функции, для каждой функции выписать все ее аргументы и полученные ею окончательные результаты; если функция будет использоваться несколько раз, то для каждого вызова под аргументами в виде отдельных строк выписать фактические значения аргументов.

  3. Для каждой функции разбивать аргументы и результаты вычислений на 2 группы: на величины, передаваемые через внешние имена, и величины, определяемые с помощью формальных и фактических параметров; в соответствии с этим за именем функции описать все форм. пар-ры; описать внешние величины.

  4. Проанализировать используемые массивы, их размещение в полях факт. массивов; позаботиться о динамическом размещении в свободной памяти рабочих массивов самой функции и освобождение этой памяти при выходе из функции.

  5. Проанализировать схему обращений функций друг к другу, соблюдение необходимой совместимости форм. и факт. пар-ров.

  6. Найти аргументы всей задачи, т.е. величины, не заданные алгоритмом решения и подлежащие вводу; считать эти величины аргументами головной функции или другой функции по удобству их ввода; обеспечить в соответствующей функции ввод аргументов задачи.

  7. Составить исходную программу, записав команды препроцессора, описав прототипы функций, внешние объекты, а затем и все функции, приводимые в произвольном порядке.

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