Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритм+жне+бадарламалау+негіздері.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs;

type

TForm1 = class(TForm) { TForm1 класын жариялау}

Button1: TButton; {өріс}

Button2: TButton; {өріс}

L1: TLabel; {өріс}

L2: TLabel; {өріс}

procedure Button1Click(Sender: TObject); {әдіс}

procedure FormActivate(Sender: TObject); {әдіс}

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

i: Integer;

Implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); {әдістің сипатталынуы}

begin

L1.Caption:= DateTimeToStr(Date);

L2.Caption:= TimeToStr(Time);

end;

procedure TForm1.FormActivate(Sender: TObject); {әдістің сипатталынуы}

begin

i:=125;

end;

end.

2.4 Кластың өрістері

Өріс деп кластағы инкапсуляцияланған берілгендерді айтамыз. Кластың өрістері жазбаның өрістері сияқты, бірақ айырмашылығы олар кез – келген типті болуы мүмкін, сонымен қатар кез – келген класс та бола алады, мысалы:

type

TChildClass = class(TObject) { TChildClass класын жариялау}

FOne: integer; {бүтін типтің өрісі}

FTwo: String; {жолдық типтің өрісі}

FThree: TObject; { TObject класс өрісінің типі}

end;

Ерер арғы тегі TObject класы болса, онда тақырыпта оны түсіруге болады.

Инкапсуляция принципі бойынша өрістерге қатынау кластың әдістері мен қасиеттерінің көмегімен жүзеге асырылады. Сонымен бірге Object Pascal - да өрістерге тікелей қатынауға да мүмкіндік берілген. Өріске қатынау үшін құрамды ат жазу қажеттігі туады, ол нүкте арқылы ажыратылған кластың аты мен өрістің атынан тұрады, мысалы:

var

MyObject : TChildClass;

begin

MyObject := 16;

MyObject := ’Некоторое строковое значение’;

end;

Ұрпақ – класының өзінің арғы – тегінің барлық өрістеріне қатынауға мүмкіндігі бар, бірақ оларға қол жеткізу мүмкін емес болғандықтан, оларды анықтауға болмайды. Мысалы:

type

TPredok = class {арғы тек класын жариялау}

Value: Integer;

end;

TPotomok = class(TPredok) {ұрпақ класын жариялау}

Value: String; {туындау өрісінің қабысуы}

end;

var

My1: TPredok; {класс айнымалысын жариялау (My1 –айнымалы-объект)}

My2: TPotomok; {класс айнымалысын жариялау (My2 – айнымалы-объект)}

begin

My1 := TPotomok.Create; { TPredok класының объектісін құрады }

My2 := TPotomok.Create; { TPotomok класының объектісін құрады}

My1.Value := 'Hello!'; {қате, TPredok өрісінің типі емес}

My2.Value := 'Hello!'; {дұрыс, Value: String өрісі жұмыс істейді}

My2.Value := 8; {қате: Value: Integer өрісі қалқаланған}

end;

Бұл мысалда екі класс сипатталған: TPredok – арғы тек және TPotomok – ұрпақ кластары. Әр класс біратты әртүрлі типті Value өрісінен тұрады.

Ары қарай var-секциясында әртүрлі class типті екі айнымалы - My1 және My2 жарияланған. Бір қарағанда My1:= TPotomok.Create объектісінің оператор – конструкторы TPotomок типті My1 объектісін құруы мүмкін (оны құруға жады бөледі). Бірақ My1 басқа типті болғандықтан , ол олай емес. Осы себептен конструктор аталық типті объект құрады, яғни TPredok типті объект. Енді келтірілген мысалдардағы бірнеше операторлардағы қателердің көзі түсінікті болды.