Бөлім. 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 секциясына алмастыру жасағаннан кейін хабарлау элементті ұрпақтарына көрінбейді, одан кейін оны басқа секцияға орналастыруға болмайды.
Класс модульдің тек интерфейстік бөлігінде немесе жүзеге асырудың бастапқы кезеңінде хабарланады. Класты қосалқы программаның сипаттау бөлігінде анықтауға болмайды.