Задание: Создать собственный объект с помощью конструкторов и деструкторов и использовать его в программе.

 

Вариант№1

Объект – овал

  1. Свойства - координаты центра, радиусы, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№2

Объект – ломаная линия ( ^ ).

  1. Свойства – координаты начала и конца, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№3

Объект – прямоугольный треугольник

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№4

Объект –круг.

  1. Свойства - координаты начала и конца, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№5

Объект – треугольник равнобедренный, прямоугольный

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№6

Объект – прямоугольник

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

Вариант№7

Объект – квадрат.

  1. Свойства - координаты точек, цвет линии;
  2. Методы – нарисовать, переместить, удалить

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

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;

 

Задание: Создать потомка для ранее созданного объекта

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

  1. Как создать объект?
  2. Как породить потомка?
  3. Как использовать методы объекта?

 

 

Лабораторная работа №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. Применить перегружаемый метод над разнотипными данными