Курсовая работа: Программа для решения дифференциальных уравнений первого порядка методом Рунге-Кутта

st := '';

for i:=l to SZL do // SZL - размер массива-списка

if list[i] о NIL

then st := st + list[i].Info

+ #13; ShowMessage (st);

Во время работы программы каждый элемент массива может содержать как объект типа xstud, так и объект типа TProf. Концепция полиморфизма обеспечивает применение к объекту именно того метода, который соответствует типу объекта.

Перегрузка методов

Есть еще одна, совершенно особенная разновидность методов — перегружаемые.

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

Пример, иллюстрирующий статические методы:

type

TlstObj = class

FExtData : Extended;

procedure SetData(AValue: Extended);

end;

T2ndObj = class(TlstObj)

FIntData : Integer;

procedure SetData(AValue: Integer); end;

var T1: TlstObj;

T2 : T2ndObj;

В этом случае попытка вызова из объекта Т2 методов

Т2.SetData (1.0);

Т2.SetData(1);

вызовет ошибку компиляции на первой из двух строк. Для компилятора внутри Т2 статический метод с параметром типа extended перекрыт, и он его "не признает".

Для выхода из сложившегося положения можно переименовать один из методов, например, создать SetlntegerData и SetExtendedData, но если методов не два, а, например, сто, моментально возникнет путаница. Сделать методы виртуальными нельзя, поскольку тип и количество параметров в одноименных виртуальных методах должны в точности совпадать. Для разрешения этой ситуации существуют перегружаемые методы, объявляемые при помощи директивы overload:

type

TlstObj = class

FExtData : Extended;

procedure SetData(AValue: Extended);overload;

К-во Просмотров: 450
Бесплатно скачать Курсовая работа: Программа для решения дифференциальных уравнений первого порядка методом Рунге-Кутта