
- •Лабораторная работа № 1 Решение задачи на работу с целым типом данных.
- •Лабораторная работа № 2. Решение задачи на работу с вещественным типом данных.
- •Лабораторная работа № 3 Решение задачи на ввод, вывод данных.
- •Лабораторная работа № 4 Решение задачи на условный оператор и оператор выбора
- •Лабораторная работа № 5 Решение задачи на работу с множеством.
- •Лабораторная работа № 6 Решение задачи с применением оператора цикл с параметром и перечисляемый тип.
- •Лабораторная работа № 7 Решение задачи с применением операторов цикла итерационного типа.
- •Лабораторная работа № 8
- •Лабораторная работа № 9. Решение задачи на создание наследника.
- •Лабораторная работа № 10 Решение задач на перегружаемые и виртуальные методы.
- •Лабораторная работа № 11. Знакомство со средой Delphi.
- •Лабораторная работа № 12 Решение задачи на линейные алгоритмы в среде Delphi.
- •Пример написания программы
- •Индивидуальные задания
- •Лабораторная работа № 13
- •Лабораторная работа № 14.
- •Лабораторная работа № 15
- •Размещение многострочного окна вывода (tMemo)
- •Лабораторная работа № 16
- •Лабораторная работа № 17. Использование компонентов таблиц для работы с двумерным массивом..
- •Лабораторная работа № 18. Использование компонентов кнопок обычных, графических и с фиксацией.
- •1.Дано двузначное число. Определить: а) входит ли в него цифра 3;
- •Лабораторная работа № 19. Использование компонента таймер для управления при выполнении программы.
- •Запоминание времени и инициализация счетчика тактов
- •Лабораторная работа № 20. Использование компонентов зависимых и независимых переключателей.
- •Лабораторная работа №21 Использование диалоговых окон.
- •Лабораторная работа №22 Использование операторов обработки исключений.
Лабораторная работа № 10 Решение задач на перегружаемые и виртуальные методы.
Цель работы: использовать различные виды методов при создании программ.
Теория.
Имеется четыре вида методов: статические, виртуальные, динамические и абстрактные.
По умолчанию все методы статические. Если в классе — наследнике переопределить такой метод (ввести новый метод с тем же именем), то для объектов этого класса новый метод отменит родительский. Если обращаться к объекту этого класса, то вызываться будет новый метод. Но если обратиться к объекту как к объекту родительского класса, то вызываться будет метод родителя.
Виртуальные и динамические методы не связаны с другими методами с тем же именем в классах — наследниках. Если в классах — наследниках эти методы перегружены, то при обращении к такому методу во время выполнения будет вызываться тот из методов с одинаковыми именами, который соответствует классу объекта, указанному при вызове.
Абстрактный метод — это виртуальный или динамический метод, реализация которого не определена в том классе, в котором он объявлен. Предполагается, что этот метод будет перегружен в классах — наследниках. Только в тех классах, в которых он перегружен, его и можно вызывать.
Объявляется абстрактный метод с помощью ключевого слова abstract после слова virtual или dynamic.
Например:
procedure DoSomething; virtual; abstract;
Любой метод (и статический, и виртуальный) может быть перегружен с помощью ключевого слова overload.
Для виртуальных методов в этих случаях надо еще добавить ключевое слово reintroduce. Если перегруженные таким образом методы различаются числом или типом параметров (так называемой сигнатурой), то при вызове метода из класса — наследника будет вызываться тот метод, список параметров которого соответствует списку аргументов.
При реализации метода, переопределенного любым способом в классе — нследнике, можно вызывать метод класса — родителя.
Для этого перед именем метода при его вызове записывается ключевое слово inherited. Например, оператор
inherited create (...);
вызывает метод Create родителя.
Если записать слово inherited и после него не писать имя вызываемого метода, то будет вызываться наследуемый метод, совпадающий по имени с именем того метода, из которого он вызывается.
Например, если в переопределяемом конструкторе встречается оператор
inherited; то будет вызван конструктор родительского класса.
Задание 1.
В заданиях с №1 по 15 (табл. 3.1.) необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk с шагом h=(xn-xk)/10. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).
Таблица 3.1
№ |
|
|
S(x) |
n |
Y(x) |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
0.1 |
1 |
|
16 |
|
2 |
0.1 |
1 |
|
10 |
|
3 |
0.1 |
1 |
|
12 |
|
4 |
0.1 |
1 |
|
8 |
|
5 |
0.1 |
1 |
|
14 |
|
6 |
0.1
|
1 |
|
8 |
|
7 |
0.1 |
1 |
|
12 |
|
8 |
0.1 |
1 |
|
10 |
|
9 |
0.1 |
1 |
|
14 |
|
|
|
|
Окончание табл. 3.1 |
||
1 |
2 |
3 |
4 |
5 |
6 |
10 |
0.1 |
0.5 |
|
15 |
|
11 |
0.1 |
1 |
|
10 |
|
12 |
0.1 |
1 |
|
8 |
|
13 |
-2 |
-0.1 |
|
16 |
|
14 |
0.2 |
0.8 |
|
12 |
|
15 |
0.1 |
0.8 |
|
18 |
|
Контрольные вопросы :
Имя метода, который используется для уничтожения экземпляра класса?
Конструктор - это... ?
На какие группы делятся методы ?
Конструктор - это... ?