Блім. Delphi – дегі кластар.

Таырып. Delphi – дегі кластар иерархиясы.

Жоспар:

1. Класты сипаттау элементтеріні крінетін блігі.

2. Delphi – дегі кластар иерархиясы.

3. Private секциясына алмастыру.

 

1. Класты сипаттау элементтеріні крінетін блігі. Жаадан рылатын кез келген класс тмендегідей ызметші сздермен аныталатын секциялардан трады: Private(жабылан), protected(оралан), public(ммкін), automated(автоматтандырылан). рбір секцияны ішінде басында ріс, одан кейін дістер мен асиеттер аныталады.

Секциялар класты сипаттау элементтеріні крінетін блігін анытайды. Рublic секциясы ондаы крсетілген рістерді кріну блігіне шектеулер жасамайды, дістер мен асиеттерді кез келген баса программа модулінде шаыруа болады. Published секциясы кріну блігін шектемейді, біра мнда тек орындалу кезеінде ана ммкін болатын асиеттер ана емес, программа ру кезеіндегі асиеттер жазылады.

Published секциясы тек стандартты емес компоненттерді жасауда пайдаланады. Delphi ортасы формаа орнатылан компоненттерді сипаттауда арнайы аты жо секцияа орналастырады, ал ол класс таырыбынан кейін жазылады да, бірінші хабарлануда секцияа дейін жазылады. Бл секция Published деп аталады.

Private секциясы кріну блігін е тменгі дегейге дейін кішірейтеді: жабы элементтерді сипатталуы осы класты ішіндегі, яги класс сипатталан модульде орналасан діс пен осалы программаа ана пайдаланады.

Private секциясында хабарланан элмент, егер ол баса модульде орналасан болса, тіпті класты жаын рпатары шін де пайдалынбайды.

2. Рrotected секциясы тек сол класты дістері шін, сондай- а, кез келген оны рпатары шін пайдаланылады, біра оны орналасуында туелсіз.

Аutomated секциясы OLE объектілерін автоматтандыру интерфейсінде осылатын асиеттер мен дістерді хабарлау шін пайдаланылады: бл секцияны ммшелеріні кріну блігі шектелмеген.

Object Pascal тілінде кез келген секцияны бірінші рет, яни ажетіне арай хабарлай беруге болады,секцияларды пайдаланушы алауынша орналастырумен болады. Кез келген секция бос болу ммкін. Келесі программа фрагменті секцияларды экрандаы кріну блігін сипаттайды.

Unit Unit1;

Uses Controls,Forms;

Type

TForm1= class(TForm)

Button1: TButton;

Private

FintField: integer;

Procedure SetValue (Value: Integer);

Function GetValue: Integer;

Published

Property IntField: read GetValue write Setvalue

Protected

Procedure Proc1;

Public

Procedure pros2;

End;

Var

Form1: TForm1;

Implementation

Procedure TForm1.Proc1;

Buttom1.Color:ClBtnFace;

FIntField:=0;

IntField:=0;

Pros1;

Pros2;

End;

Begin

Form1.Button1.Color:=clBtnFace;

Form1.FlintField:=0;

Form1.Proc1; // Бл жазу ате!

Form1.Proc2;

End;

Unit Unit2;

Interface

Uses Controls, Unit1;

Type

TForm2=class(TForm1)

Button2:TButton;

Procedure Button2Click(Sender:TObject);

End;

Var

Form2:TForm2;

Implementation

Procedure TForm2.Button2Click(Sender:TObject);

Begin

Button1.Color:=clBtnFace;

FlntField:=0; // Бл жазу ате!

Proc1;

Proc2;

End;

Begin

Form1.Button1.Color:=clBtnFace;

Form1.FIntField:=0; // Бл жазу ате!

Form1.IntField:=0;

Form1.Proc1; // Бл жазу ате!

Form1.Proc2; End;

3. Класс - рпаты хабарлауды класс элементтерін бір кріну блігінен баса блігіне алмастыруа болады. Алдындаы мысал шін тмендегідей хабарлауды жазуа болады.

Type

TForm2=class(TForm2)

Public

Procedure Proc1;

End;

Осындай хабарлаудан кейін Unit2 модулі былай шаыруа болады: Form2.prog1.

Private секциясына алмастыру жасааннан кейін хабарлау элементті рпатарына крінбейді, одан кейін оны баса секцияа орналастыруа болмайды.

Класс модульді тек интерфейстік блігінде немесе жзеге асыруды бастапы кезеінде хабарланады. Класты осалы программаны сипаттау блігінде анытауа болмайды.