Перегрузка методов (процедур)

Перегрузка – это создание более чем одной процедуры в модуле класса с одинаковыми именами, но с различными типами и количеством аргументов.

Перегрузка методов представляет собой один из частных случаев полиморфизма. Напомним, что полиморфизм в переводе с греческого языка означает «много форм». В отношении к методам класса полиморфизм позволяет с помощью одного имени представлять различный программный код.

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

'Процедура вывода данных типа Double в TextBox Sub vivodDbl1(ByVal Z As Double, ByVal T As TextBox) T.Text = CStr(Z) End Sub
Sub vivodSng3(ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub

Для вызова этих процедур использовались следующие операторы:

vivodDbl1(x1, TextBox1) vivodSng3(S, TextBox5)

При описании эти методы можно перегрузить, то есть присвоить им одно имя, Для этого необходимо использовать модификатор процедуры Overloads перед описанием процедур. Например,

'Процедура вывода данных типа Double в TextBox Overloads Sub vivod (ByVal Z As Double, ByVal T As TextBox) T.Text = CStr(Z) End Sub
Overloads Sub vivod (ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub

Для вызова этих процедур использовались следующие операторы:

vivod(x1, TextBox1) vivod(S, TextBox5)

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

· модификаторы, такие как ByVal или ByRef, которые применимы к элементу, или параметрам элемента;

· имена параметров;

· возвращаемые типы процедур.

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

Таким образом, при перегрузке процедур, сигнатура метода – это комбинация его имени, списка параметров и служебных слов.

4.3.6. Тестовые задания

1.Алгоритм называется линейным, еслиего выполнение предполагает многократное повторение одних и тех же действий

1) ход его выполнения зависит от истинности тех или иных условий

2) его команды выполняются в порядке их естественного следования независимо от каких-либо условий

3) он включает в себя вспомогательный алгоритм

2.Программа – это

1) протокол взаимодействия компонентов компьютерной сети

2) понятное и точное предписание человеку совершить последовательность

действий, направленных на достижение поставленных целей

3) ориентированный граф, указывающий порядок исполнения команд компьютера

4) алгоритм, записанный на языке программирования

5) набор команд операционной системы компьютера

3.Процедура – это

1) последовательность логически связанных фрагментов программы, оформленная

как отдельная часть программы специальным способом

2) последовательность отдельных фрагментов программы

3) последовательность только циклических фрагментов программы

4) последовательность только разветвляющихся фрагментов программы

4.Глобальные переменные – это

1) переменные, доступные во всех других процедурах и модулях без механизма

передачи параметров

2) все переменные одной отдельной процедуры

3) все переменные всех используемых процедур

4) все переменные, описанные в модуле

5) в списке нет правильного ответа

5.Локальные переменные – это

1) все переменные с одинаковыми именами во всех процедурах

2) переменные только одной процедуры

3) переменные всех процедур

4) переменные, область видимости которых процедура, в которой они описаны

6.Формальными параметрами называются

1)список передаваемых параметров, указанных в описании процедуры

2)список параметров, указанных в модуле программе

3)все переменные, используемые в процедуре

4)список передаваемых параметров, указанных при вызове процедуры

7.Формальные параметры являются для данной процедуры

1) глобальными

2) фактическими

3) локальными

4) формализованными

8.Формальные параметры определяют

1) имя и тип переменных

2) только имена переменных

3) только типы массивов

4) в списке нет правильного ответа

9.При вызове процедуры происходит замена формальных параметров

1) локальными

2) глобальными

3) статическими

4) фактическими

10.Фактические параметры – это

1) конкретные значения переменных, на которые заменяются формальные параметры при обращении к процедуре

2) глобальные переменные

3) локальные переменные

4) статические переменные

11.Параметры могут передаваться в процедуру

1) только по значению

2) по значению или по ссылке

3) только по ссылке

4) любым образом

12.При передаче параметра по значению в процедуру передается

1) копия передаваемого параметра

2) адрес передаваемого параметра

3) адрес и значение передаваемого параметра

13.По значению могут передаваться

1) входные параметры процедуры

2) выходные параметры процедуры

3) как входные, так и выходные параметры процедуры

4) только глобальные переменные

14.По ссылке могут передаваться

1) как входные, так и выходные параметры процедуры

2) только входные параметры процедуры

3) только выходные параметры процедуры

4) в списке нет правильного ответа

15.Изменение в процедуре значения параметра, передаваемого по значению

1) не приводит к изменению значения этого параметра в вызывающей процедуре

2) приводит к изменению значения этого параметра в вызывающей процедуре

3) приводит к изменению значений всех параметров вызывающей процедуры

4) в списке нет правильного ответа

16.К средствам процедурного программирования в VB относятся

1) процедуры-функции и процедуры-подпрограммы

2) процедуры-функции

3) процедуры-подпрограммы

4) процедуры-функции, процедуры-подпрограммы и событийные процедуры

17.Результатом выполнения функции является

1) скалярная величина

2) несколько скалярных величин

3) коллекция данных

4) коллекция данных и скалярные величины

18.Переменные, описанные внутри функций, являются

1) глобальными

2) локальными

3) статическими

4) фактическими

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

1) количество и тип аргументов, их порядок следования

2) количество аргументов, их порядок следования

3) порядок следования аргументов

4) количество и тип аргументов

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

1) количество и тип аргументов, их порядок следования

2) количество аргументов, их порядок следования

3) порядок следования аргументов

4) количество и тип аргументов

21.Передача фактических параметров-выражений в процедуру и в процедуру-функцию производится

1)по значению

2)по ссылке

3)как по ссылке, так и по значению

4)в процедуру - по ссылке, в процедуру-функцию – по значению

4.3.7. Лабораторная работа по теме
«Структура VB-программ и процедуры.
Средства программирования алгоритмов
линейной структуры»

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

Вопросы, подлежащие изучению

1)Средства процедурного программирования в VB.

2)Средства описания процедур в VB.

3)Преимущества программ, имеющих процедуры.

4)Организация обмена данными между процедурами.

5)Роль фактических и формальных параметров.

6)Способы передачи параметров по значению и адресу.

7)Отличия в передаче значения результата выполнения функций и процедур.

8)Средства реализации алгоритмов линейной структуры.

9)Особенности разработки блок-схем алгоритмов, использующих процедуры.

4.3.7.2. Общее задание

1) Изучите структуру VB-программ, процедуры и средства программирования алгоритмов линейной структуры»

2) Первое задание:

2.1. Выберите индивидуальный вариант из табл. П.1.2-1.

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

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

2.4. Выполните созданные проекты и получите результаты.

2.5. Выполните созданные проекты по шагам, с помощью отладчика,

поставив точку останова после ввода данных.

2.6. Докажите, что результат правильный.

3) Второе задание:

3.1. Выберите индивидуальный вариант задания из таблицы 4.3.7-1.

3.2. Запишите заданные или полученные в процессе формализации математические формулы в виде арифметических выражений.

3.3. Разработайте алгоритм решения заданной задачи и

представьте его в виде схем алгоритмов.

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

3.5. Подготовьте тесты для контрольного решения задачи.

3.6. Выполните проект и получите результаты.

3.7. Докажите, что результат правильный.

Варианты индивидуальных заданий

Таблица 4.3.7-1

Задача
1) Определите периметры правильных n – угольников (10 – угольника, 50 – угольника, 100 – угольника), вписанных в окружность заданного радиуса R. Назначение процедуры: Вычисление стороны правильного n-угольника Перегрузка методов (процедур) - student2.ru вычисление периметра n-угольника Перегрузка методов (процедур) - student2.ru
2) Определите длины всех медиан треугольника, заданного длинами сторон a,b,c. Назначение процедуры: Вычисление медианы, проведенной к стороне a: Перегрузка методов (процедур) - student2.ru
3) Определите углы между тремя векторами, направленными из общей начальной точки с координатами (0,0) в конечные точки: точку (2;5); точку (7;6); точку (9;3). Назначение процедуры: Вычисление угла между 2-мя векторами, проведенными из точки (0, 0) в точки (x1, y1) и (x2, y2) по формуле Перегрузка методов (процедур) - student2.ru
4) Вычислите площадь пятиугольника, заданного прямоугольными координатами своих вершин: A1(3;2), A2(9;6), A3(14;2), A4(10;-3), A5(7;-2) Использовать формулу площади треугольника: Перегрузка методов (процедур) - student2.ru Назначение процедуры: Вычисление площади треугольника по заданным координатам его вершин: (x1;y1), (x2;y2), (x3;y3)
5) Определите длины всех биссектрис треугольника, заданного длинами сторон a, b, c. Назначение процедуры: Вычисление биссектрисы угла Перегрузка методов (процедур) - student2.ru Перегрузка методов (процедур) - student2.ru
6) ВычислитеR – расстояние между двумя точками A и B, заданными сферическими координатами. Соотношение между сферическими координатами и декартовыми Перегрузка методов (процедур) - student2.ru Перегрузка методов (процедур) - student2.ru Назначение процедуры: Вычисление декартовых координат точки по заданным сферическим координатам
7) Вычислите значение площади полной поверхности треугольной пирамиды, если известны длины всех ребер: |AB| = 3; |AD| = 5; |DB| = 4; |DC| = Перегрузка методов (процедур) - student2.ru ; |BC| = Перегрузка методов (процедур) - student2.ru ; |AC| = 5. Для вычисления площади треугольника использовать формулу Герона: Перегрузка методов (процедур) - student2.ru , где a, b, c - длины сторон треугольника. Назначение процедуры: Вычисление площади треугольника по формуле Герона
8) Определите высоту, на которой будет мяч, подброшенный вертикально вверх с высоты y0=1м и начальной скоростью V0=20м/сек через время t=1сек, 3сек и 4сек Назначение процедуры: Вычисление высоты в момент t Перегрузка методов (процедур) - student2.ru , где Перегрузка методов (процедур) - student2.ru м/сек
9) Определитеплощади правильных n - угольников (10-угольника; 50-угольника; 100-угольника), вписанных в окружность радиуса R Назначение процедуры: Вычисление стороны правильного n-угольника Перегрузка методов (процедур) - student2.ru - радиус вписанной окружности; площадь n-угольника Перегрузка методов (процедур) - student2.ru
10) Определите площадь кольца, внутренний радиус которого равен R1; а внешний R2 (R2>R1). Назначение процедуры:Вычисление площади круга радиуса R: Перегрузка методов (процедур) - student2.ru
11) Вычислите полярные координаты 3-х точек, заданных прямоугольными координатами в правой полуплоскости. Формулы преобразования координат: Перегрузка методов (процедур) - student2.ru . Назначение процедуры: Вычисление полярных координат по заданным прямоугольным координатам точки правой полуплоскости
12) Определите площадь каждого из 3-х секторов с радиусами R1, R2, R3 и с центральными углами Перегрузка методов (процедур) - student2.ru Назначение процедуры: Площадь сектора радиуса Rc центральным углом Перегрузка методов (процедур) - student2.ru (в градусах) равна Перегрузка методов (процедур) - student2.ru .
13) Вычислите Перегрузка методов (процедур) - student2.ru Назначение процедуры: Вычисление Перегрузка методов (процедур) - student2.ru
14) Определите стороны треугольника, заданного величинами своих углов и радиусом описанной окружности. Назначение процедуры: Применить теорему синусов Перегрузка методов (процедур) - student2.ru Перегрузка методов (процедур) - student2.ru
15) Определите площадь каждого из 3-х кругов, ограниченных тремя окружностями, длины которых L1,L2,L3 известны. Назначение процедуры: Вычислить площадь круга Перегрузка методов (процедур) - student2.ru предварительно вычислив R по формуле Перегрузка методов (процедур) - student2.ru
16) Определите углы треугольника, длины сторон которого a, b, c заданы. Назначение процедуры: Примените теорему половинного угла Перегрузка методов (процедур) - student2.ru где Перегрузка методов (процедур) - student2.ru угол, противолежащий стороне с
17) Вычислите Перегрузка методов (процедур) - student2.ru Назначение процедуры:Вычисление Перегрузка методов (процедур) - student2.ru
18) Определите общую длину дуги, образованной полуокружностями
2.5

Назначение процедуры:Вычисление длины половины окружности Перегрузка методов (процедур) - student2.ru

19) Вычислите стороны треугольника A и Bпри условии, что заданы сторона C и углы треугольника Перегрузка методов (процедур) - student2.ru и Перегрузка методов (процедур) - student2.ru . Назначение процедуры: Вычисление стороны треугольника по формуле Перегрузка методов (процедур) - student2.ru ,где Перегрузка методов (процедур) - student2.ru - угол, противолежащий стороне A, Перегрузка методов (процедур) - student2.ru - угол, противолежащий стороне C
20) Вычислите значения медиан треугольника, сторонами которого являются медианы исходного треугольника со сторонами a, b, c. Назначение процедуры:Вычисление длины медианы, проведенной к стороне a: Перегрузка методов (процедур) - student2.ru
21) Вычислите Перегрузка методов (процедур) - student2.ru Назначение процедуры:ВычислениеПерегрузка методов (процедур) - student2.ru
22) Вычислите Перегрузка методов (процедур) - student2.ru Назначение процедуры: Вычисление Перегрузка методов (процедур) - student2.ru
23) Определите длину дуги каждого из трех секторов с радиусами R1, R2, R3 и с центральными углами Перегрузка методов (процедур) - student2.ru Назначение процедуры: Длина дуги сектора радиуса R c центральным углом Перегрузка методов (процедур) - student2.ru (в градусах) равна Перегрузка методов (процедур) - student2.ru
24) Вычислите координаты точки пересечения двух прямых: Перегрузка методов (процедур) - student2.ru , вычисляемые по формулам: Перегрузка методов (процедур) - student2.ru , где Перегрузка методов (процедур) - student2.ru . Назначение процедуры:Вычисление определителя второго порядка.
25) Вычислите Перегрузка методов (процедур) - student2.ru Назначение процедуры:Вычисление Перегрузка методов (процедур) - student2.ru
26) Определите все углы треугольникапри заданных значениях сторон a, b, c. Назначение процедуры:Вычисление угла по теореме косинусов: Перегрузка методов (процедур) - student2.ru
27) Вычислите определенный интеграл Перегрузка методов (процедур) - student2.ru для функции Перегрузка методов (процедур) - student2.ru Перегрузка методов (процедур) - student2.ru
28) Вычислите площадь трех круговS1, S2 и S3с заданными диаметрами d1, d2 и d4.3. Назначение процедуры: Вычисление Перегрузка методов (процедур) - student2.ru
29) Вычислите Перегрузка методов (процедур) - student2.ru Назначение процедуры:Вычисление Перегрузка методов (процедур) - student2.ru
30) Определите общую площадь фигуры, образованной полукругами
2.5

Назначение процедуры:Вычисление площади полукруга Перегрузка методов (процедур) - student2.ru .

Содержание отчёта

1)Тема и название лабораторной работы.

2)Фамилия, имя студента, номер группы, номер варианта.

3) Реализация 1-го задания:

3.1.Задание на разработку задачи.

3.2.Формализация и уточнение задания.

3.3.Элементы, разрабатываемых проектов в одном решении:

3.3.1) графический интерфейс пользователя;

3.3.2) таблица свойств объектов;

3.3.3) схемы двух алгоритмов;

3.3.4) программный код трех проектов;

3.4.Результаты выполнения трех проектов.

3.5.Доказательства правильности результатов.

4) Реализация 2-го задания:

4.1)Задание на разработку задачи.

4.2)Формализация и уточнение задания.

4.3)Элементы, разрабатываемого проекта:

4.3.1) графический интерфейс пользователя;

4.3.2) таблица свойств объектов;

4.3.3) схемы алгоритмов;

4.3.4) программный код проекта;

4.4)Результаты выполнения проекта 2-го

4.5)Доказательства правильности результатов.

Пример выполнения заданий (1-го и 2-го)

1) Тема и название лабораторной работы:

Структура VB-программ и процедуры.

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

2) Фамилия, имя студента, номер группы, номер варианта:

Иванов И., БИН1405, вариант 14.3.

3) Реализация 1-го задания –три проекта в одном решении:

3.1) Задание на разработку задачи:

Создайте приложение (решение), состоящее из трех проектов с именем Решение 3.1 для вычисления арифметического выражения (Тема3):

Перегрузка методов (процедур) - student2.ru

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

3.2) Формализация и уточнение задания:

Для формализации и уточнения задания запишите арифметическое выражение на языке программирования:

z = (0.002 - Exp(x^y)) / ((100 – y)*(x + 2))

В соответствии с требованиями задания разобьем решение задачи на несколько отдельных задач и создадим три процедуры пользователя, вычисляющие заданное арифметическое выражения: процедуру-функцию func() с двумя формальными параметрами, необходимыми для вычисления выражения и передающимися по значению как входные аргументы; процедуру-подпрограмму proc1() с тремя формальными параметрами, из которых два необходимы для вычисления выражения и передаются по значению как входные аргументы и один является результатом и передается по ссылке; процедуру-подпрограмму proc2() без параметров, в которой два необходим для вычисления выражения аргумента, а результат передаются через глобальные объекты.

3.3) Элементы, разрабатываемых проектов в одном решении:

3.3.1) Графический интерфейс пользователя:

Разработайте форму каждого проекта (форма проектов

может иметь такой же вид, как в примере Темы 2;

3.3.2) Таблица свойств объектов:

Установите и сведите в табл. 4.3.7-2свойства всех
объектов(эта таблица аналогична табл. 4.2.8-2);

3.3.3) Схемы алгоритмов процедур:

3.3.4) Разработайте схемы алгоритмов трех процедур
(рис. 4.3.7-1, . 4.3.7-2, . 4.3.7-3) и событийную процедуру

(рис. 4.3.7-4).

 

Рис. 4.3.7-1. Схема алгоритма процедуры функция func()

Проекта 3.1.1

Рис. 4.3.7-2. Схема алгоритма процедуры подпрограмма proc1()

Проекта 3.1.2

Рис. 4.3.7-3. Схема алгоритма процедуры proc2()

Проекта 3.1.3

Рис. 4.3.7-4Схема алгоритма событийной процедуры

Наши рекомендации