Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л работы (Языки пр_ 2 Курс).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
674.85 Кб
Скачать

Лабораторная работа № 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

Контрольные вопросы :

  1. Имя метода, который используется для уничтожения экземпляра класса?

  2. Конструктор - это... ?

  3. На какие группы делятся методы ?

  4. Конструктор - это... ?

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