Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты по делфи.docx
Скачиваний:
2
Добавлен:
18.04.2019
Размер:
388.08 Кб
Скачать

Var мan: tМan;

Function TМan.GetVozr:integer; Begin result:= FVozrast; end;

Procedure TМan.SetVozr(r:integer); Begin if r<100 then FVozrast:=r else exit; end;

 Begin

Мan:= TМan.create;

Мan.vozrast:=188; //не позволит

Мan.vozrast:= 18; // позволит

Man.Free;

End.

Билет 9.

  • ПОЛИМОРФИЗМ

Замещение метода может быть сделано как на этапе компиляции так и на этапе выполнения программы. Такое замещение называется динамическим (или виртуальным).

Синтаксис объявления таков:

Tpar=class

Procedure DoWork; virtual; [dynamic;] //метод виртуальный

End;

Tchild=class(Tpar)

Procedure DoWork; override;//надо переопределять при выпол

End;

Полиморфизм допускает инициализацию объектной переменной любым классом потомком

Type

Tpar=class

Procedure DoWork; virtual; end;

Tchild=class(Tpar)

Procedure DoWork; override;

End;

Var par: Tpar; child: Tchild;

Begin par:=Tchild.create; par. DoWork; end;

  • Операции as и is

(man as Tman).Obed; //приведение типа

If man is Tman then …;//определение типа

Абстрактные методы

Динамически перекрываемые методы могут вообще ничего не делать, тогда они называются абстрактными, но они обязаны перекрываться в потомках.

Реализация абстрактного метода не описывается. Вызов не перекрытого метода приводит к ошибке периода исполнения.

Классы, содержащие абстрактные методы называются абстрактными, они, как правило, инкапсулируют в себе общие свойства своих неабстрактных методов. Чтобы в потомках потом поменьше расписывать общие члены предков.

Type TFigure = class function Area:real;virtual; abstract; end

TCIrcle = class(TFigure) r:real; function Area (rad:real):real; override; end

TRectangle = class (TFigure) x,y:real; function Area (ax,ay:real):real; override; end; 

Var cIrcle:tcIrcle; Rectangle:tRectangle;

function TCIrcle.Area (rad:real):real; begin result:=3.1415*rad*rad; end

function TRectangle.Area (ax,ay:real):real; begin result:=ax*ay; end;

begin

CIrcle:=TCIrcle.create; Rectangle:=TRectangle.create;

CIrcle.Area(3); Rectangle.Area(2,3); end.

ТИП «КЛАСС»

Type TmetaClass = Class of TObject;

Var MetaClass: TmetaClass;//может хранить в себе объект любого класса потомка Tobject Procedure UseObject(Obj: TmetaClass);

Begin UseObject(TButton); UseObject(TLabel); end;

УКАЗАТЕЛЬ НА СЕБЯ

В каждом классе имеется не явно описанный идентификатор self, который всегда указывает на текущий объект. В метод всегда неявно передается указатель self на вызвавший его объект.

Билет 10.

  • СОБЫТИЯ.

Событие – это то, что происходит в результате работы компьютера. На низком уровне это изменения, (нажатие кнопки, исход времени, деление на ноль) вызывающие прерывания.

С точки зрения языка событие - это свойство процедурного типа, его значением является указатель на некоторый метод.

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

Такие методы называются обработчиками событий.

СОБЫТИЯ ПРИМЕР.

Type TControl = class (TComponent) Private FOnDblClick: TNottifyEvent ; …………………….. Protected

property OnDblClick: TNottifyEvent read FOnDblClick write FOnDblClick; ……………………… end

TNotifyEvent = Procedure(Sender:TObject) of object;

Билет 11.

  • ДЕРЕВО КЛАССОВ DELPHI

Принцип наследования позволяет использовать любой класс использовать как предка для создания новых классов. При этом члены класса предка наследуются.

Билет 12.

  • Класс TObject.

Предок всех классов. Класс абстрактный. Обеспечивает возможность создания и разрушения объектов. Для этого определены следующие методы.

Constructor Create – выделяет динам память, инициализацию не делает, т.к. перегружается. Destructor Destroy; virtual; - освобождает выделенную память. Procedure Free – проверяет существование и, если память выделялась, то освобождает ее.

Методы класса: ClassName: shortString; - возвращает имя класса данного объекта ClassNameIs (const Name:string):Boolean; - данный класс совпадает Name InheritsForm(aClass:Tclass):Boolean; - является ли класс предком дан кл InstanceSize:Longint; - возвращает размер класс или объекта.

Билет 13.

  • Класс TPersistent.

Его объекты инкапсулируют в себе некоторый носитель информации. Память или дисковые файлы.

МЕТОДЫ:

Procedure Assign(Source:Tpersistent); - присваивает данному объекту данные, содержащиеся в объекте с именем Source

Function GetNamePath: string; dynamic; - возвращает строку, содержащую имя объекта.

Function GetOwner: TPersistent; dynamic;- возвращает указатель на владельца объекта.

Билет 14.

  • Класс TСomponent.

Вершина иерархии компонентов. Потомки его - невизуальные компоненты (TApplication, Tform таймер, меню, диалоговые окна).

Свойства Name (строка ) – имя компонента. При помещении компонента на форму присваивается стандартное имя Label1, Edit1, которое можно заменить на более осмысленное, при этом имя должно быть правильным идентификатором. Tag: Longint; - некоторое число, которым разработчик может распоряжаться по усмотрению.

В классе TComponent вводится концепция принадлежности, которая распространяется на всю VCL. Суть:

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