Задание: Создать собственный объект с помощью конструкторов и деструкторов и использовать его в программе.
Вариант№1
Объект – овал
- Свойства - координаты центра, радиусы, цвет линии;
- Методы – нарисовать, переместить, удалить
Вариант№2
Объект – ломаная линия ( ^ ).
- Свойства – координаты начала и конца, цвет линии;
- Методы – нарисовать, переместить, удалить
Вариант№3
Объект – прямоугольный треугольник
- Свойства - координаты точек, цвет линии;
- Методы – нарисовать, переместить, удалить
Вариант№4
Объект –круг.
- Свойства - координаты начала и конца, цвет линии;
- Методы – нарисовать, переместить, удалить
Вариант№5
Объект – треугольник равнобедренный, прямоугольный
- Свойства - координаты точек, цвет линии;
- Методы – нарисовать, переместить, удалить
Вариант№6
Объект – прямоугольник
- Свойства - координаты точек, цвет линии;
- Методы – нарисовать, переместить, удалить
Вариант№7
Объект – квадрат.
- Свойства - координаты точек, цвет линии;
- Методы – нарисовать, переместить, удалить
Контрольные вопросы:
1. Как создать объект с помощью конструктора?
2. Как удалить объект с помощью деструктора?
Лабораторная работа №10 Решение задачи на создание наследника.
Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами создания объектов. Закрепить полученные на лекции знания. Написать и отладить программу
Теория:
Если объект порождается от какого-либо родителя, имя родителя указывается в круглых скобках сразу за словом object.
Type
Имя_потомка = object (имя_родителя)
….
End.
Например: создадим потомка от TPixel – объект TLine? С помощью которого будет рисоваться линия.
Type TLine = object (TPixel)
Procedure Draw (x,y,dx,dy, aColor:integer);
End;
Procedure TLine.Draw;
Begin
SetColor(Color);
Line(x,y,x+dx,y+dy);
End;
Задание: Создать потомка для ранее созданного объекта
Контрольные вопросы:
- Как создать объект?
- Как породить потомка?
- Как использовать методы объекта?
Лабораторная работа №11 Решение задач на перегружаемые и виртуальные методы. - 2 часа
Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с принципами применения перегружаемых и виртуальных методов. Закрепить полученные на лекции знания. Написать и отладить программу
Теория:
В Delphi появилась новая разновидность методов - перегружаемые. Перегрузка нужна для того, чтобы произвести одинаковые или похожие действия над разнотипными данными. Перегружаемые методы описываются с ключевым словом overload.
Type
tFirstClass=class
E:extended;
procedure SetData(aValue: Extended); overload;
end;
tSecondClass=class(tFirstClass)
I:integer;
procedure SetData(aValue: Integer); overload;
end;
Объявив метод SetData перегружаемым, в программе можно использовать обе его реализации одновременно. Это возможно потому, что компилятор определяет тип передаваемого параметра (целый или вещественный) и в зависимости от этого подставит вызов соответствующего метода.
Для перегрузки виртуального метода используется зарезервированное слово reintroduce:
procedure SetData(aValue:string); reintrouce;overload;
На перегрузку методов накладывается ограничение: нельзя перегружать методы, находящиеся в области видимости publi shed.
Задание:
Пусть имеется некое обобщенное поле для хранения данных - класс tFiled и три его потомка - для хранения строк, целых и вещественных чисел:
type
tFiled = class
function GetData:string; virtual; abctract;
end;
tStringFiled = class(tFiled)
fData:string;
function GetData: string; override;
end;
tIntegerFiled = class(tFiled)
fData:Integer;
function GetData: string; override;
end;
tExtendedFiled = class(tFiled)
fData:Extended;
function GetData: string; override;
end;
function tStringFiled.GetData: string;
Begin
Result:=fData;
End;
function tIntegerFiled.GetData: string;
Begin
Result:=IntToStr(fData);
End;
function tExtendedFiled.GetData: string;
Begin
Result:=FloatToStr(fData,ffFixed, 7, 2);
End;
function ShowData(aFiled:tFiled): string;
Begin
Form1.Label1.Caption:=aFiled.GetData;
End;
1.На примере показать виртуальный и перегружаемый метод
2. Применить перегружаемый метод над разнотипными данными