Перегрузка методов (процедур)
Перегрузка – это создание более чем одной процедуры в модуле класса с одинаковыми именами, но с различными типами и количеством аргументов.
Перегрузка методов представляет собой один из частных случаев полиморфизма. Напомним, что полиморфизм в переводе с греческого языка означает «много форм». В отношении к методам класса полиморфизм позволяет с помощью одного имени представлять различный программный код.
Перегрузка особенно полезна, когда в программном коде нужно использовать одинаковые имена процедур, работающих с различными типами данных и различным числом параметров. Например, в примерах из предыдущего параграфа для вывода данных были использованы процедуры:
'Процедура вывода данных типа 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, то все остальные перегруженные элементы с этим же именем также должны быть определены этим ключевым словом.
Таким образом, при перегрузке процедур, сигнатура метода – это комбинация его имени, списка параметров и служебных слов.
Тестовые задания
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)Особенности разработки блок-схем алгоритмов, использующих процедуры.
Общее задание
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-угольника вычисление периметра n-угольника | ||||
2) | Определите длины всех медиан треугольника, заданного длинами сторон a,b,c. Назначение процедуры: Вычисление медианы, проведенной к стороне a: | ||||
3) | Определите углы между тремя векторами, направленными из общей начальной точки с координатами (0,0) в конечные точки: точку (2;5); точку (7;6); точку (9;3). Назначение процедуры: Вычисление угла между 2-мя векторами, проведенными из точки (0, 0) в точки (x1, y1) и (x2, y2) по формуле | ||||
4) | Вычислите площадь пятиугольника, заданного прямоугольными координатами своих вершин: A1(3;2), A2(9;6), A3(14;2), A4(10;-3), A5(7;-2) Использовать формулу площади треугольника: Назначение процедуры: Вычисление площади треугольника по заданным координатам его вершин: (x1;y1), (x2;y2), (x3;y3) | ||||
5) | Определите длины всех биссектрис треугольника, заданного длинами сторон a, b, c. Назначение процедуры: Вычисление биссектрисы угла | ||||
6) | Вычислите R – расстояние между двумя точками A и B, заданными сферическими координатами. Соотношение между сферическими координатами и декартовыми Назначение процедуры: Вычисление декартовых координат точки по заданным сферическим координатам | ||||
7) | Вычислите значение площади полной поверхности треугольной пирамиды, если известны длины всех ребер: |AB| = 3; |AD| = 5; |DB| = 4; |DC| = ; |BC| = ; |AC| = 5. Для вычисления площади треугольника использовать формулу Герона: , где a, b, c - длины сторон треугольника. Назначение процедуры: Вычисление площади треугольника по формуле Герона | ||||
8) | Определите высоту, на которой будет мяч, подброшенный вертикально вверх с высоты y0=1м и начальной скоростью V0=20м/сек через время t=1сек, 3сек и 4сек Назначение процедуры: Вычисление высоты в момент t , где м/сек | ||||
9) | Определитеплощади правильных n - угольников (10-угольника; 50-угольника; 100-угольника), вписанных в окружность радиуса R Назначение процедуры: Вычисление стороны правильного n-угольника - радиус вписанной окружности; площадь n-угольника | ||||
10) | Определите площадь кольца, внутренний радиус которого равен R1; а внешний R2 (R2>R1). Назначение процедуры:Вычисление площади круга радиуса R: | ||||
11) | Вычислите полярные координаты 3-х точек, заданных прямоугольными координатами в правой полуплоскости. Формулы преобразования координат: . Назначение процедуры: Вычисление полярных координат по заданным прямоугольным координатам точки правой полуплоскости | ||||
12) | Определите площадь каждого из 3-х секторов с радиусами R1, R2, R3 и с центральными углами Назначение процедуры: Площадь сектора радиуса R c центральным углом (в градусах) равна . | ||||
13) | Вычислите Назначение процедуры: Вычисление | ||||
14) | Определите стороны треугольника, заданного величинами своих углов и радиусом описанной окружности. Назначение процедуры: Применить теорему синусов | ||||
15) | Определите площадь каждого из 3-х кругов, ограниченных тремя окружностями, длины которых L1,L2,L3 известны. Назначение процедуры: Вычислить площадь круга предварительно вычислив R по формуле | ||||
16) | Определите углы треугольника, длины сторон которого a, b, c заданы. Назначение процедуры: Примените теорему половинного угла где угол, противолежащий стороне с | ||||
17) | Вычислите Назначение процедуры:Вычисление | ||||
18) | Определите общую длину дуги, образованной полуокружностями
Назначение процедуры:Вычисление длины половины окружности | ||||
19) | Вычислите стороны треугольника A и Bпри условии, что заданы сторона C и углы треугольника и . Назначение процедуры: Вычисление стороны треугольника по формуле ,где - угол, противолежащий стороне A, - угол, противолежащий стороне C | ||||
20) | Вычислите значения медиан треугольника, сторонами которого являются медианы исходного треугольника со сторонами a, b, c. Назначение процедуры:Вычисление длины медианы, проведенной к стороне a: | ||||
21) | Вычислите Назначение процедуры:Вычисление | ||||
22) | Вычислите Назначение процедуры: Вычисление | ||||
23) | Определите длину дуги каждого из трех секторов с радиусами R1, R2, R3 и с центральными углами Назначение процедуры: Длина дуги сектора радиуса R c центральным углом (в градусах) равна | ||||
24) | Вычислите координаты точки пересечения двух прямых: , вычисляемые по формулам: , где . Назначение процедуры:Вычисление определителя второго порядка. | ||||
25) | Вычислите Назначение процедуры:Вычисление | ||||
26) | Определите все углы треугольникапри заданных значениях сторон a, b, c. Назначение процедуры:Вычисление угла по теореме косинусов: | ||||
27) | Вычислите определенный интеграл для функции | ||||
28) | Вычислите площадь трех круговS1, S2 и S3с заданными диаметрами d1, d2 и d4.3. Назначение процедуры: Вычисление | ||||
29) | Вычислите Назначение процедуры:Вычисление | ||||
30) | Определите общую площадь фигуры, образованной полукругами
Назначение процедуры:Вычисление площади полукруга . |
Содержание отчёта
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)Доказательства правильности результатов.