Қоршаған ортаны модельдеуде сапалы мүмкіндіктерге ие, сезімдік тұрғыдан түсініктіұғымдар жиынтығы негізінде құрылады, алдын ала жазылып қойған программа кодын көп рет қолдануға мүкіндік береді



бет1/35
Дата25.08.2017
өлшемі8,61 Mb.
#27256
  1   2   3   4   5   6   7   8   9   ...   35

ПОӘК 042-14.2.07.1.20.79/03-2013


03.09.2013ж. №1 басылым




беттің -сі





ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ

Семей қаласының шәкәрім атындағы мемлекеттік университеті


3 деңгейлі СМК құжаты


ПОӘК


ПОӘК

042-14.2.07.1.20.179/03-2013



«Объектіге бағдарланған программалау» пәнінің оқу- әдістемелік кешені

03.09.2013ж.

№2 басылым




«Объектіге бағдарланған программалау»

5В060200 – «Информатика» мамандығына арналған
ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР

Семей


2013.
мазмұны

1.Глоссарий

2.Дәрістер

3.Зертханалық сабақтар

ГЛОССАРИЙ
Нысанға бағытталған программалау (НБП) - қоршаған ортаны модельдеуде сапалы мүмкіндіктерге ие, сезімдік тұрғыдан түсініктіұғымдар жиынтығы негізінде құрылады, алдын – ала жазылып қойған программа кодын көп рет қолдануға мүкіндік береді.

Программалау – технология, ол бағдарлама құру процесін межелі өңдірістік іс-әрекетке айналдыру арқылы жинақталған тәжірибе мен білімді жетілдіреді.

Нысан өрістерібұл нысан қамтитын мәліметтер.

Инкапсуляция - өзінде тек қана өрістерді ғана емес, сонымен қатар осы өрістерге мүмкін әрекеттердің сипаттамасын қамтитын нысанның қасиетіні.

Әдістер - өріс түрінде берілген мәліметтерден басқа нысан осы өрістерге мүмкін әрекеттерді сипаттайтын ішкі программмалар.

Нысан экземпляры - нысандық тип жарияланғаннан кейін осы тип негізінде жасалатын типтік айнымалылар.

Мұрагерлеу - бар типтің негізінде оған жаңа өрістер мен әдістерді қоса отырып, жаңа тип жасауға болатын объектілік типтердің қасиеті.

Конструктор - егер нысандық типте тым болмаса бір виртуалды әдіс болса, онда виртуалды әдіске бірінші қатынас жасағанға дейін объект экземплярына қолданылатын арнайы әдіс.

Жоба - Delphi -де дайындалатын программа.

Форма - программаны дайындау алдында ашылатын, программалық сұқбаттық терезесі.

Қасиет – (сипаттама, параметр) –айнымалалардың ерекше түрі. Олар обьектінің түрлі мүмкіндіктерін сипаттап ағымдық күйін анықтайды.

Оқиға- программамен жұмыс істеу барысында обьект жағдайының белгілі бір әрекетке жауап ретінде өзгеруі.

Оқиғаны өңдуіш не өңдеу процедурасы - оқиғаға байланысты құрылатын процедура.

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

Uses - арнайы сөз; «модульдер тізімі» - бағдарлама мен модульдерді бір-бірімен байланыстыруға қажетті модульдердің тізімі. Бұл сөйлемді қолданатын модульдер спецификациясы деп атайды және ол негізгі бағдарламаның тақырыбынан соң орналау қажет.

Модульдің интерфейстік бөлігінде негізгі бағдарламада және басқа модульдерге қолданылатын аталмыш модульдің барлық сыртқы объектілері анықталады. Паскаль бағдарламасы сияқты бұл анықтамадағы объектілердің реті кез келегн түрде бола алады. Интерфейстік бөлікте ішкі бағдарламалардың тек қана тақырыптары келтіріледі, ал олардың толық анықтамасы модульдің орындалатын бөлігінде көрсетіледі.

Implementation - модульдің орындалатын бөлігінде интерфейсте көрсетілген ішкі бағдарламалардың орындайтын жұмысы анықталады. Ішкі бағдарламалардың орналасу реті интерфейстік бөлігінде көрсетілген ретімен бірдей болуы шарт емес. Бұл бөлімде ішкі бағдaрламлардың тақырыбын ғана көрсетсе жеткілікті, себебі параметрлер тізімі мен функция нәтижесінің типі интерфейсте анықталғаг. Сондай-ақ мұнда аталмыш модульге ғана тән және бұл модульден тыс белісіз тұрақтыларды, типтерді, айнымалыларды және ішкі бағдарламаларды жариялауға болады.

Инициялизациялау бөлігінде осы модульдерді іске асыратын бағдарлама жұмысының басталғандығы туралы операторлар орналасады. Модульдердің іске асырылуы бағдарламаның Uses бөлігінде көрсетілген ретімен орындалады. Бұл бөлік Initalisation сөзімен басталады. Бірақ ол бөліктің болмауы да ықтимал.

Класс деп объектілерді құрудағы қолданылатын үлгілерді айтады, ал объект сол үлгінің туындысы болып табылады.

Әдістер - инкапсуляцияланған класстар процедура және функцияларды.

ДӘРІСТЕРДІҢ ҚЫСҚАША КОНСПЕКТІСІ
1-ДӘРІС. Нысанды-бағдарланған программалаудың негізгі принциптері.

Қарастырылатын сұрақтар:

  • Нысанды-бағдарланған программалау ұғымы;

  • Инкапсуляция;

  • Мұрагерлеу;

  • Полиморфизм;

  • Конструкторлар, динамикалық обьектілер және деструкторлар.

Нысанды бағдарланған программалау – программалаудың құрылымдық программалаумен салыстырғанда, әлдеқайда жетілдірілген түрі. Программалау ғылымының дамуының белгілі кезеңінде күрделі есептің шешімін жеңілдету үшін оны қарапайым ішкі есептерге бөлу туралы ұғым қалыптасты. Мәселе программаның көп операторлардан емес, салыстырмалы түрде алғанда өз бетінше бөліктер жиынтығынан тұруында болды. Ішкі программалар программисттерді қарапайым есептердің мазмұнына терең үңілуден құтқарды, яғни ішкі программа жасалынғаннан кейін оның қалай құрылғанын білмей–ақ, оны қолдана беруге болады. Белгілі бір процедураның, функцияның қандай қызмет атқаратынын білу жеткілікті. Соңынан құрылымдық программалау одан әрі дамыды, яғни модульдер концепциясы дүниеге келді. Модуль – Turbo Pascal-дің тұрақтылар, мәліметтер типі, айнымалылар, сол сияқты процедуралар мен функциялар сипатталатын компиляцияланатын файлдары.

НБП – бұл программалаудың ескі әдстемесінің табиғи эволюциясының нәтижесі болып табылады. Ішкі программалар программистке қарапайым есептердің мазмұнына енбей-ақ қолдануға болатыны сияқты объектілер мен де, олардың қалай ұйымдастырылғанын білмей-ақ жұмыс істеуге мүмкіндік берді.

Ескерту! НБП қарапайым есептеулерді орындайтын программалар үшін арналмаған. Мұндай жағдайда НБП тәсілдерін қолдансақ, программа тілдік конструкциялармен артық жүктеледі.

НБП негізінде 3 негізгі принцип жатыр. Олар: инкапсуляция, мұрагерлеу(наследование) және полиморфизм.


ИНКАПСУЛЯЦИЯ

Нысанды сипаттау барлық басқа типтер сияқты сипаттау бөлімінде болу қажет. Нысан қамтитын мәліметтер нысан өрістері деп аталады. Қарапайым нысандық типтің сипаттамасы жазбалар сипаттамасына өте ұқсас, тек record резервтелген сөзінің орнына object сөзі қолданылады.

Type

Dot = object



a, b:integer;

end;


Бұл 2 өрістен тұратын нысандық тип, ол экранда a,b кординаталары бар нүкте болып табылады. Өріс түрінде берілген мәліметтерден басқа нысан осы өрістерге мүмкін әрекеттерді сипаттайтын ішкі программмалардан тұруы мүмкін. Мұндай ішкі программалар әдістер деп аталады. Әдіс нысан өрістеріне қатынас жасай отырып, оған параметр ретінде берілуді қажет етпейді. Өзінде тек қана өрістерді ғана емес, сонымен қатар осы өрістерге мүмкін әрекеттердің сипаттамасын қамтитын нысанның қасиетін инкапсуляция деп атайды. Мұнда нысанның сипатталуында тек ішкі программаның тақырыптары болады, ал әрбір ішкі программаның денесі жеке көрсетіледі. Алдыңғы мысалдағы Dot типін қажетті әдістермен толықтырайық.

Type


Dot = object

a, b:integer;

procedure Init(x,y:integer);

procedure Show;

procedure Hide;

procedure Move(Da, Db:integer);

end;

{- - - - - - - - - - - - -}



Procedure Dot.Init;

Begin


a:=x; b:=y;

end;


{- - - - - - - - - - - - -}

Procedure Dot.Show;

Begin

PutPixel (a,b,white);



end;

{- - - - - - - - - - - - -}

Procedure Dot.Hide;

Begin


PutPixel (a,b,black);

end;


{- - - - - - - - - - - - -}

Procedure Dot.Move;

Begin

Hide;


a:=a+Da; b:=b+Db;

Show;


End.
Бұл мысалда нысан 4 әдістен тұрады. Init әдісі объектіні инициализациялайды, яғни нүктеге бастапқы мән береді. Show және Hide әдістері экрандағы нүктені «жандырады» және «сөндіреді». Move әдісі экрандағы нүктенің орнын ауыстырады. Нысандық тип жарияланғаннан кейін осы типтік айнымалыларды жасауға болады немесе НБП терминологиясы бойынша нысан экземплярын жасаймыз. Олар айнымалыларды сипаттау бөлімінде жарияланатын статикалық айнымалылар, New стандартты процедура арқылы жасалған динамикалық айнымалылар болуы мүмкін.

Var


Dot1: Dot;

Мұнда Dot типіне жататын Dot1 айнымалысы жарияланған. Нысан экземпляры жасалынғаннан кейін оның өрістерінен әдістерге қатынас жасай аламыз. Нысан өрісіне қандай-да бір стандартты ішкі программаны қолдану үшін оның құрылымдық атауын қолдану жеткілікті – нысан идентификаторы мен нүкте арқылы ажыратылған өріс идентификаторын көрсету.

НБП-да нысан өрістерімен жұмыс істеу кезінде тек оның әдістері қолданылады.

Dot1.Init(100,100);

Dot1.Show;

Dot1.Move(50,50);

Жазбаларға қолданылатын сияқты, объектілерге де with операторын қолдануға болады.

With Dot1 do begin

Init (100,100);

Show;


Move (50,50);

End.


Жоғарыда көрсетілген операторлар тізбегі бірдей. Төменде жоғарыда қарастырылған мысалдардың толық программасы көрсетілген. Бұл программа экранда нүктені бейнелейді және де бейнеленген нүктені бағдарша-пернелердің көмегімен 4 бағытта жылжытуға болады.

Program ObjDot;

Uses crt, graph;

Type


Dot=object

a,b:integer;

procedure Init(x,y:integer);

procedure Show;

procedure Hide;

procedure Move(Da, Db:integer);

end;

{-------------------------------------}



Procedure Dot.Init;

Begin


a:=x; b:=y;

end;


{-------------------------------------}

Procedure Dot.Show;

Begin

PutPixel (a,b,white);



End;

{--------------------------------------}

Procedure Dot.Hide;

Begin


PutPixel(a,b,0);

End;


{--------------------------------------}

Procedure Dot.Move;

Begin

Hide;


a:=a+Da; b:=b+Db;

Show;


End;

{--------------------------------------}

Var

i,j,k,Err:integer;



a:char;

Dot1:Dot;

{-------------------------------------}

Begin


i:=detect;

InitGraph(i,j,’ ‘);

Err:=GraphResult;

If Err<>grOK then

Writeln(GraphErrorMsg(Err))

Else


begin

Dot1.Init(GetMaxX div 2, GetMaxY div 2);

Dot1.Show;

While KeyPressed do a:=ReadKey;

Repeat

Begin


a:=ReadKey;

case ord(a) of

72:Dot1.Move(0,-5);

80:Dot1.Move(0,5);

77:Dot1.Move(5,0);

75:Dot1.Move(-5,0)

End

End;


Until a=chr(27)

End


End.
Программада Dot нысаны жарияланды. Оның 2 өрісі, 4 әдісі бар. Ары қарай Dot1 нысан экземпляры басқа айнымалылар сияқты жарияланды. Программа денесі графикалық режимге өтуді жүзеге асыратын оператордан басталады. Содан кейін Repeat операторы белгілі пернені басуды анықтайды.Case операторы 4 нұсқаудан тұрады, олар 4 бағдарша пернелеріне сәйкес келеді. Нұсқалардың әрбіреуі нақты параметрлері бар Move әдісін шақырады, бұл әдіс нүктені қажетті бағытта 5 пиксельге жылжытады. Repeat операторы арқылы ұйымдастырылған циклдың тоқтау шарты 27 Scan кодын беретін пернесінің басылуы болып табылады.
МҰРАГЕРЛЕУ

Айталық, нүкте объектісінен басқа шеңбер объектісі қатысатын программа құрайық. Әрине бұл жаңа типтің сипатталуын Dot типі сияқты басынан бастауға болады. Дегенмен, бұл жаңа шеңбер – типтің Dot типімен ортақ өрістері және әдістері бар. Яғни, шеңбер де нүкте сияқты оның центрін анықтайтын a,b координатасымен сипатталады. Дегенмен, құрылатын нысанға шеңбердің радиусын беретін өріс қосу керек. Ал әдістерге келетін болсақ, жаңа Ring типіне Move әдісі қолданылады, нүктенің орнын ауыстыруы мен экранда шеңбердің ауысуы бірдей жүзеге асады. Ал Init, Show және Hide әдістерін жаңадан жасауға тура келеді. Сонымен, жаңа Ring типі Dot типінің кейбір әдістерін қайталайды. Ендеше бар типтің негізінде оған жаңа өрістер мен әдістерді қоса отырып, жаңа тип жасауға бола ма? Бұл мұрагерлеу деп аталатын объектілік типтердің қасиеттерінің арқасында жүзеге асады. Мәселе мұрагерлеу туралы болғандықтан генеологиялық терминологияға сәйкес жаңа нысанды жасауға негіз болатын бар типті ата-бабасы немесе ата-аналық тип деп атайды. Ал құрылатын объектіні ұрпағы деп атайды. Ұрпақ автоматты түрде өзінің ата-бабасының барлық өрістері мен әдістерін мұраға алады. Мұрагерлеу қасиеті НБП-да қолданылады. Оның арқасында бар нысанның негізінде көптеген жаңа нысандар құруға болады. Осы нысандарға негіздей отырып, нысандарды көптеп кұра беруге болады және де әрбір нысанның көп ұрпағы болуы мүмкін, бірақ оның ата-бабасы біреу ғана болады. Ал енді Dot және Ring типтеріне оралайық. Ұрпақ типінің сипаттауында ата-аналық типтің атауы көрсетілуі керек.

Type

Ring=object(Dot);



Rad=integer;

End;


Ring типінің сипатталуында шеңбердің радиусын анықтайтын Rad өрісі бар. Бұл өріс dot типінде болмаған және де Ring типі өзінің ата-бабасының өрістерін мұраға алады (нүкте координаталары a,b). Егер Ring типінің сипаттамасын сәйкес әдістермен толықтырсақ, төмендегідей болады:

Ring=object(Dot);

Rad:integer;

Procedure Init(x,y,r:integer );

Procedure Show;

Procedure Hide;

End;

{------------------------}



Procedure Ring.Init;

Begin


a:=x; b:=y; Rad:=r;

end;


{------------------------}

Procedure Ring.Show;

Begin

SetColor (white);



Circle (a,b,Rad);

End;


{------------------------}

Procedure Ring.Hide;

Begin

SetColor (black);



Circle(a,b,Rad);

End;


Осы жерден ұрпақ-нысанның әдістері ата-ана объектісінің бірдей атаулы әдістермен алмастырылатынын көруге болады. Басқа сөзбен айтқанда, егер Ring.Move әдісіне қатынас жасалса, жүйе алдымен Ring объектісінің сипаттамасында осындай атаудың бар-жоқтығын анықтайды. Егер бар болса, осы жаңа әдіс қолданылады. Егер жоқ болса, ата-бабасынан мұраға алған әдісті қолданылады.

Ескерту! Тек әдістерді ғана қайта анықтауға болады. Ал ұрпақ-нысанындағы өріс атаулары ата-анасының нысанындағы өріс атауларымен сәйкес келмеуі тиіс.

Ұрпақ объектісі жарияланғаннан кейін оның өрістерімен жұмыс істеу үшін оның экземплярын жасауға болады.

Var Ring1: Ring.
ВИРТУАЛДЫ ӘДІСТЕР МЕН ПОЛИМОРФИЗМ

Алдыңғы программадағы Move әдісіне оралайық. Оның сипаттамасы төмендегідей.

Procedure Dot.Move;

Begin


Hide;

a:=a+Da; b:=b+Db;

Show

End;


Осы жерден Move әдісінің Hide және Show әдістеріне қатынас жасайтынын көреміз. Егер Move әдісін осы түрде dot және ring2 объектісі бар программада қолдансақ не болады?

Бұл жағдайда нүкте үшін ешқандай қиындық туындамайды. Себебі, нүкте dot объектісінің «туған» объектісі болғандықтан, нүкте еш қиындықсыз өшіп, координатасын ауыстырып, қайта жаңарады. Ал шеңберге келетін болсақ, Ring.Move объектілік жүйе, алдымен Ring объектілік типінің сипаттамасынан осындай әдісті іздейді, таба алмағаннан кейін іздеуді ата-баба объектісінде жалғастырады. Нәтижесінде Dot.Move әдісіне қатынас жасалады. Осыдан кейін Move әдісінен Ring.Hide және Ring.Show әдістері шақырылу керек, бірақ бұл орындалмайды: Ring1 нысан экземпляры мұраға алынған Dot.Move әдісіне Ring.Hide және Ring.Show әдістерінің орнына Dot нысанының әдістерін шақырады. Мұның себебі Dot.Hide, Dot.Show қатаң байланысқан, себебі олар Dot объектілік типінің бірдей контексінде компиляцияланған. Басқа сөзбен айтқанда, бұл әдістер арасындағы байланыс статикалық сипатқа ие. Бұл жағдайда щеңбер емес, нүкте орын ауыстырады. Hide және Show әдістері қай объект экземплярының Move әдісіне қатынас жасауына байланысты шақырылу үшін не істеу керек? Бұл жерде статикалық байланысудан ерекшеленетін динамикалық байланысу деп аталатын механизм көмеккке келеді. Бұл механизм виртуалды әдістердің көмегімен жүзеге асады. Нысандық типтердің сипаттамасында виртуалды әдістердің тақырыбы VIRTUAL резервтелген сөзімен толықтырылады. Егер нысандық типтің ұрпақтарында қайта анықталған әдістер бар болса, олар да виртуалды ретінде жариялануы қажет және де ата-баба объектісінің әдістері сияқты формальді параметр жиынтығына ие болуы қажет.

Виртуалды әдістері бар Dot және Ring нысандық типтердің сипаттамасы төмендегідей:

Dot = object

a, b:integer;

Constructor Init(x,y:integer);

procedure Show; virtual;

procedure Hide; virtual;

procedure Move(Da,Db:integer);

end;


{------------------------------------}

Ring=object(Dot);

Rad:integer;

Constructor Init(x,y,r:integer );

Procedure Show; virtual;

Procedure Hide; virtual;

End;
Мұндағы Constructor - процедурасының ерекше түрін бейнелейтін резервтелген сөз. Енді Move әдісіндегі Ring1 нысан экземплярын шақыруға, ал одан Hide және Show әдістерін шақыруға оралайық. Мұнда жүйе алдымен Dot.Move әдісіне қатынас жасайды, мұндай атаулы әдіс алдымен Ring нысанынан ізделінеді де, таба алмағаннан кейін сәйкес ата-баба нысанының әдісіне қатынас жасайды. Осыдан кейін шеңбердің орнын ауыстыру үшін алдымен оны көрінбейтіндей ету қажет (Ring.Hide әдісін шақыру).Содан кейін оның центрінің координатасын өзгертіп, шеңберді экрандағы жаңа орында бейнелеу қажет (Ring.Show әдісін шақыру). ТР программасын орындау кезінде Dot.Move әдісіне шақырылатын объект үшін анықталған әдіске қатынас жасау қамтамасыз етіледі. Бұл жерде Ring.Show және Ring.Hide әдістеріне қатынас жасалады. Қорытындысында сәйкес пернелердің көмегімен жылжытуға болатын экрандағы нүкте мен шеңберді бейнелейтін программаның толық мәтінін көрсетейік:

Program ObjDotСirc;

Uses crt, graph;

Type


Dot=Object;

a,b:integer;

constructor Init(x,y:integer);

procedure Show; virtual;

procedure Hide; virtual;

procedure Move(Da,Db:integer);

end;

{----------------------------------}



Ring=object (Dot);

Rad:integer;

constructor Init(x,y=integer);

procedure Show; virtual;

procedure Hide; virtual;

end;


{----------------------------------}

Constructor Dot.Init;

Begin

a:=x; b:=y;



end;

{----------------------------------}

Procedure Dot.Show;

Begin


PutPixel(a,b:White);

End;


{---------------------------------}

Procedure Dot.Hide;

Begin

PutPixel(a,b:Black);



End;

{---------------------------------}

Procedure Dot.Move;

Begin


Hide;

a:=a+Da; b:=b+Db;

Show;

End;


{----------------------------------}

Constructor Ring.Init;

Begin

a:=x; b:=y;



Rad:=r;

End;


{----------------------------------}

Procedure Ring.Show;

Begin

SetColor(white);



Circle(a,b,Rad);

End;


{----------------------------------}

Procedure Ring.Hide;

Begin

SetColor(black);



Circle(a,b,Rad);

End;


{----------------------------------}

Var i,j,k,Err:integer;

a:char; Dot1:Dot; Ring1:Ring;

begin


i:=detect;

InitGraph(i,j,’ ‘);

Err:=GraphResult;

If <>grok then

Writeln(GraphErreor Msg (Err))

Else


Begin

Dot1.Init (GetMaxX div 2, GetMaxY div 2);

Dot.Show;

Ring1.Init (GetMaxX div 2, GetMaxY div 2, GetMaxY div 6);

Ring.Show;

While KeyPressed do a:=ReadKey ;

Repeat

begin


a:=ReadKey;

case ord(a) of

72: Dot1.Move(0,-5);

80: Dot1.Move(0,5);

77: Dot1.Move(5,0);

75: Dot1.Move(-5,0);

73: Ring1.Move(0,-5);

81: Ring1.Move(0,5);

79: Ring1.Move(5,0);

71: Ring1.Move(-5,0);

End

End;


Until a=chr(27)

End;


End.
Бұл программаның алдыңғы мысалдардан айырмашылығы – мұнда қосымша ұрпақ-тип Ring жарияланған және Show және Hide әдістері 2 нысан да виртуалды жарияланған. Ал Init әдісі конструкторға түрлендірілген. Сол сияқты Case операторы жаңа варианттармен толықтырылды. Көрсетілген варианттар шеңбердің экранда 4 бағытта жылжуын қамтамасыз етеді:
(жоғары), PgDown>(төмен), (оңға), (солға) пернелерін басу кезінде генереацияланатын 73,81,79,71 ScanCod-тары жылжуды жүзеге асырады. Бұл программада Case операторының денесіндегі Move әдісін шақыруға ерекше көңіл бөлу қажет. Бірнші төрт жағдайда (72,80,77,75) Dot1.Move әдісіне қатынас жасауға арналған, ал қалғанында Ring1.Move әдісіне қатынас жасалған. Дегенмен Move әдісінің жалғыз екенін білеміз, ол Dot объектісінде жарияланып, Ring нысанына мұраға қалған. Басқа сөзбен айтқанда, 1 ғана Move әдісі әртүрлі жұмыс істейді (нүктені немесе шеңберді жылжытады). Бұл оны қандай нысанның шақырғанына байланысты. нысандардың мұндай қасиеті полиморфизм деп аталады.
КОНСТРУКТОРЛАР, ДИНАМИКАЛЫҚ НЫСАНДАР ЖӘНЕ ДЕСТРУКТОРЛАР

Егер нысандық типте тым болмаса бір виртуалды әдіс болса, онда виртуалды әдіске бірінші қатынас жасағанға дейін объект экземплярына қолданылатын конструктор деп аталатын арнайы әдіс болуы керек. Осыған байланысты әдетте конструктор нысанға қандай-да бір бастапқы мәндерді беретін әдіс ретінде көрсетіледі. Конструктор немесе ата-баба нысанынан мұраға қалады және де конструктордың өзі виртуалды әдіс бола алмайды. Нысандық типтің сипатталуында конструктордың тақырыбы кәдімгі әдіс тақырыбынан мынадай айырмашылықта болады. Ондағы procedure резервтелген сөздің орнына constructor сөзі қолданылады. Кәдімгі әдістен конструктордың қандай айырмашылығы бар? Конструктор онда сипатталған әрекеттерден басқа нысан мен виртуалды әдістерді жүзеге асыратын код адрестері бар арнайы виртуалды әдістер кестесінің арасында байланыс орнатады. Алдыңғы тақырыпта айтып өткендей, объектілік типтің экземплярлары статикалық және динамикалық түрде анықтала алады. Dot1 және Ring1 объект экземплярларының динамикалқ түрде құрылуы төмендегідей болады.

Var Dot1: ^Dot;

Ring1: ^Ring;

Begin

New (Dot1, Init);



New (Ring1, Init);
Жоғарыда айтылғандай, егер объектіде виртуалды әдістер бар болса, оларға қатынас жасамас бұрын осы объектінің экземпляры конструкторды шақыруы керек. Осындай конструктор ретінде мұнда Init әдісі тұр. Ол New процедурасының екінші параметрі ретінде шақырылып тұр. New рпоцедурасы объектінің динамикалық экземплярын құрады. Тақырыбы:

Procеdure New (var P:pointer [ , Init:Constructor]);

Мұндағы, P – типтендірілген нұсқауыш; Init – объект конструкторы. Динамикалық объектімен жұмысты аяқтағаннан кейін, оған бөлінген жадыны босату керек. Бұл Dispose стандартты процедура арқылы жүзеге асады.

Dispose (Dot1, Done);

Dispose (Ring1, Done);

Мұнда Dispose процедурасы Done деструкторына қатынас жасайды. Dispose процедурасы объект орналасқан жадыны босатады. Тақырыбы:

Procedure Dispose (var P:Pointer [, Done]);

Мұндағы, P – типтендірілген нұсқауыш; Done – объект деструкторы.

Объектілік типтің сипатталуында деструктор тақырыбының кәдімгі әдіс тақырыбынан айырмашылығы – ондағы Procedure резервтелген сөзі Destructor сөзімен алмастырылады. Дегенмен конструкторға қарағанда деструктор резервтелген сөзі процедура сөзінің синонимі болып табылады. Басқа сөзбен айтқанда, объектімен жұмысты аяқтайтын әдіс арнайы резервтелген сөзбен безендіріледі. Және де конструктордан айырмашылығы – деструкторлар виртуалды әдіс ретінде көрсетіле алады. Мұнда Done деструкторын шақыру өздігінен динамикалық жадыны босата алмайтынын түсіну керек. Dot1 және Ring1 объектілерінің динамикалық түрде жарияланатынын көрсететін мысал:

Porgram ObjectDotCirc1;

Uses crt,graph;

Type

Dot=object;



a,b:integer;

Constructor Init(x,y:integer);

Procedure Show:virtual;

Procedure Hide:virtual;

Procedure Move (Da,Db:integer);

Destructor Done

End;

{-------------------------------------}



Ring=object(Dot);

Rad:integer;

Constructor Init(x,y,z:integer);

Procedure Show; virtual;

Procedure Hide; virtual;

Destructor Done

End;

{-------------------------------------}



Constructor Dot.Init;

Begin


a:=x; b:=y;

end;


{-------------------------------------}

Procedure Dot.Show;

Begin

PutPixel(a,b,white);



End;

{-------------------------------------}

Procedure Dot.Hide;

Begin


PutPixel(a,b,0)

End;


{-------------------------------------}

Procedure Dot.Move;

Begin

Hide;


a:=a+Da; b:=b+Db;

Show;


End;

{-------------------------------------}

Constructor Ring.Init;

Begin


a:=x; b:=y; Rad:=z;

end;


{------------------------------------}

Procedure Ring.Show;

Begin

SetColor(black);



Circle(a,b,Rad);

End;


{------------------------------------}

Procedure Ring.Hide;

Begin

SetColor(0);



Circle(a,b,Rad);

End;


{------------------------------------}

Destructor Dot.Done;

Begin

Hide;


End;

{------------------------------------}

Destructor Ring.Done;

Begin


Hide

End;


{------------------------------------}

Var i,j,k,Err:integer; a:char;

Dot1:Dot; Ring1:Ring;

Begin


i:=detect;

InitGraph (i,j,’ ‘);

Err:=GraphResult;

if Err <>grok then

writeln(Graph Error Msg(Err))

else


begin

New (Dot1, Init(GetMaxX div 2, GetMaxY div 2));

Dot1^.Show;

New(Ring1, Init(GetMaxX div 2, GetMaxY div 2, GetMaxY div 6));

Ring1^.Show;

While KeyPressed do a:=ReadKey;

Repeat

Begin


a:=ReadKey;

Case ord(a) of

72:Dot1^.Move(0,-5);

80: Dot1^.Move(0,5);

77: Dot1^.Move(5,0);

75: Dot1^.Move(-5,0);

73: Ring1^.Move(0,-5);

81: Ring1^.Move(0,5);

79: Ring1^.Move(5,0);

71: Ring1^.Move(-5,0);

End

End;


Until a=chr(27);

Dispose (Dot1, Done);

Dispose(Ring1, Done);

End


End.
ӨРІСТЕР МЕН ӘДІСТЕР: ЖАСЫРЫН ЖӘНЕ ЖАЛПЫҚАТЫНАСТЫ ӨРІСТЕР МЕН ӘДІСТЕР

Объектілік типтің сипатталуындағы өрістер мен әдістер жасырын және жалпықатынасты болып жарияланады. Объект сипатталуындағы сәйкес бөлімдер Private немесе Public директиваларымен ашылады. Алдыңғы мысалдағы Dot типінің сипатталуында осы директивалар төмендегідей қолданылады:

Dot=object;

Private


a,b:integer;

Public


Constructor Init(x,y:intrger);

Procedure Show; virtual;

Private

Procedure Hide; virtual;



Procedure Move (Da,Db:integer);

Public


Destructor Done

End;
Бұл мысалда жасырын өріс ретінде а және b өрістері, және Hide және Move әдістері жарияланған. Ал Init, Show, Done әдістері жалпықатынасты болып тұр. Әрбір кезекті Private немесе Public директивалары алдыңғысының әреккетін қайтарады. Егер типтің сипатталуында бұл директивалар болмаса, онда үнсіз келісім бойынша барлық өрістер мен әдістер жалпықатынасты болып табылады. Private директивасынан кейін жарияланған объект өрістері мен әдістері осы программаның немесе модульдің алдында ғана қатынас жасалады. Дегенмен, егер бұл объект программаға қосылған модульде болса, жасырын өрістер мен әдістер идентификаторы программистке көрінбейді. Және де мұнда объектінің өзі қолдануға толық ашық болады. Мысалы, бұл егер коммерциялық қолданба болса, онда оны құрастырушылар бұл қолданбаны жүзеге асыру туралы мәліметтерді жасырады. Сол сияқты программист байқаусызда өзгеріс енгізбес үшін объектінің өрістері мен әдістеріне қатынасты шектеу дұрыс болады.


2-ДӘРІС. Delphi ортасы

Delphi ортасы.

  1. Басты терезе (Delphi 7 – Project1);

  2. Нысандар ағашын шолушы терезесі (Object Tree View);

  3. Нысандар инспекторы терезесі (Object Inspector);

  4. Форма конструкторы терезесі (Form1);

  5. Код редакторы терезесі (Unit1.pas);

  6. Код сілтеушісі терезесі (Exploring Unit1.pas).

1991 жылы, яғни Windows 3.2 операциялық жүйесі пайда болғаннан кейін Borland корпорациясы Turbo Pascal for Windows программалау жүйесін жарыққа шығарды. Ал, 1992 жылы осы программалау жүйесінің жетілдірілген Borland Pascal with Object 7.0 версиясын шығарды. Бұл бірінші мамандандырылған құралдар Windows-ты негізгі түрде білуді талап етті және оқып – білуде күрделі болды.

Бірақ 1993 жылы Microsoft корпорациясы бірінші Visual Basic көрнекі программалау ортасын дүниеге әкелді. Бұдан кейін, тіпті, Windows үшін программалау MS-DOS үшін программалаудан жеңіл болып қалды.

Бұған жауап ретінде Borland корпорациясы 1995 жылы Delphi-дің бірінші версиясын шығарды. Одан кейін бір жыл интервалмен тағы да 4 версиясын: 2, 3, 4, 5 және 6 шығарды.

Программалауды оқып – білуде және тез қабылдауда ең жақсы тіл – Паскаль, ал, MS – DOS үшін әлемдегі ең жақсы программалау жүйесі - Turbo Pascal екені даусыз. Delphi Паскаль – бағдарланған программалау құралдарының сериясын жалғастыра түсті және осы Delphi Windows – прграммалау үшін барынша қолайлы құрал болып табылады.

Жалпы, Delphi ортасының құрылуының негізі – Object Pascal программалау тілі. Жаңа Object Pascal программалау тілін білмей, меңгермей жатып Delphi-де жақсы әрі эффектілі жұмыс істеу мүмкін емес. Object Pascal-дыңнегізін салатын инструмент – кластар мен объектілердің маңызы зор. Барлық қазіргі кездегі жаңа программалау тілдері (оның ішінде С++ және Visual Basic – тер де бар) практикалық түрде, аз уақытта программа құруға және оның сапасын жоғарлатуға мүмкіндік беретін объектілі – бағдарланған программалау методикасын қолданады.

Delphi- дің мәліметтер қорымен жұмыс басқа программалау тілдерімен салыстырғанда өте жоғары сатыда тұр. Delphi-де мектептер үшін, жоғары оқу орындары үшін, банктар үшін, үлкен корпарациялар үшін мәліметтер қорымен байланыстырып программа құруға болады және ол басқа программалар тіліне қарағанда тиімді және объектілі – бағдарланған программа болғандықтан қолданылуда өте жеңіл. Сондықтан да Delphi-ге көп көңіл бөлінетіні де осы да.

Информатика пәнінен оқу үрдісін ұйымдастыру нысанды – бағытталған программалауға үлкен көңіл бөледі. Нысанға бағытталған программалау (НБП) қоршаған ортаны модельдеуде сапалы мүмкіндіктерге ие, сезімдік тұрғыдан түсініктіұғымдар жиынтығы негізінде құрылады, алдын – ала жазылып қойған программа кодын көп рет қолдануға мүкіндік береді. Delphi және Visual Basic НБП іске асырудың танымал құралдары болып табылады. Бұл орталар сонымен бірге визуалды программалау құралдар ретінде ұсынылады, яғни объектілерді монитор экранында көру және оларды программаны орындалуына дейін қандай да бір түрде бейнелеу мүмкіндігін береді.

Іс - әрекеттің кез-келген басқа түрі сияқты программалау да – технология, ол бағдарлама құру процесін межелі өңдірістік іс-әрекетке айналдыру арқылы жинақталған тәжірибе мен білімді жетілдіреді.

Программалау технологиясы көлемді, ауқымды программалық жүйелерді ұжыммен жасауға және шағын программаларды дербес құруда қолданылады. Үлкен программалық жобаларды мына әрекеттерге сүйену қажеттігі туындайды:


  1. Әрбір кезең үшін мақсат, міндет және нәтижелерді анықтау арқылы жалпы жұмысты кезеңдерге бөлу;

  2. Әрбір кезеңдегі міндетті есептеулерді орындаудың баламалы әдістері мен құралдарын пайдалану;

  3. Қорларды жоспарлау, жұмысты атқарушыға бөліп беру, жұмыстың барысын басқару;

  4. Кезеңдер бойынша нәтижелерді және құрылған программалық жүйенің сапасын бағалау.

Осыған байланысты шағын программа құру да программа құрушыдан өз еңбегін, яғни міндет қоюдан құрылған программаның дұрыстығын тексеруге дейінгі кезеңдерге бөлуді талап етеді.

Программалық жобаларды үзінділерге бөлуде нысанға – бағытталған тілдер ерекше сипатқа ие болып келеді. Бұл тілдердің орталық ұғымы объект болып табылады. «Өз мағынасы бойынша объект, компьютерге өңдеуге және сақтауға болатын, сонымен бірге басқа объектілерге және есептеу орталарына хабарлар жіберу және оған келіп түскен хабарларға назар аудару арқылы әсерлесуге икемді қандай да бір нақты объектінің, процестің, жағдайдың баламасы болып табылады...» Егер объектілер айқын өмірдегі заттың, құбылыстың мағынасына сай келсе, онда ұғым орнына жүретін кластар абстракция болып табылады. Мұрагерлік бірнеше маңызды қызмет атқарады: пән аймағының тұжырымдық құрылымын модельдейді; әртүрлі кластарды тапсыру үшін оларды көп рет пайдалану мүмкіндігін беру арқылы сипаттауды үнемдейді; кластарды көп ретті нақтылау жолымен ауқымды жүйелерді қадам бойынша программалауды қамтамасыз етеді. Объектінің аты, оқиғасы және мүмкін тәсілдер жиынтығы болады. Оқиғалар айнымалы жиыны мен олардың белсенді мәндерімен анықталады. Тәсіл – бұл объектінің басұа объектілермен байлансыты жолға қоятын жаңа оқиғаны (жағдайды) алу амалдары. Объеімен байланысқа түскенде оның аты, қолданылатын тәсілі жәні оның ұсынылған тәсіл үшін қажетті мәндердің кейбір жиынтығы көрсетіледі. Объектінің жағдайына ену хабарлар жіберу жолы тәсілімен іске асырылады.

Егер объетілер айнымалылар жиыны, әдістер жиынтығы бойынша бірдей қасиеттерге ие болса, онда олар бір класс құрайды. Кластар расында мұрагерлік қатынасы болуы мүкін, яғни қандай д бір Б класы осы класс үшін апталық болып табылатын суперкластың қасиеттерін мұрагерлікке алады. Программалау практикумы Delphi ортасында жұмыс істеуге арналған.

Delphi - программалау жоғарғы деңгейдегі тілдерді оқып – үйренудің логикалық жалғасы. Негізгі алгоритмдерді білуді бекітуге ықпал етеді және дамудың сапалы шыңдарына көтерілуне мүмкіндік береді. Бұл кезде білімгерлердің алғашқы кезеңдерінде НБП оқып – үйренуде программалаудың жаңа тұжырымдамасына өтудегі қиындықтарға кездесетіндігін атап көрсетуге ьолады. Алғашқыда оларға программалау туралы түсініктерін қалыптастыруға тура келеді.

Лабораториялық жұмыстарды орындау Delphi ортасын және оның құралдарын оқып үйренуден бастады. Әрбір жұмыс сайын белгілер компоненттермен танысып отырады. Ал кіріспе бөлімінде НБП негіздерін құрайтын ұғымдар мен Delphi-дің визуалды программалау құралдарыменжұмыс істеуге дайын жоба программалау құралдарымен жұмыс істеуге, дайын жоба программалар мен жеке орындау үшін ұсынылған есептер жүйесінен тұрады.

Лабораториялық жұмыс жеке жоба-жұмыстарды құру және оны мұғалімге тапсырып-өткізу іскерліктермен аяқталады. Жоба программамен жұмыс істеу деп – білімгерлердің алған білімдерін меңгеру және оны демонстрациялауды, яғни өздерінің шығармашылық іс-әрекетін толығымен жүзеге асыру деп түсінеміз.

Толыққанды жоба жасау үшін білімгерлер өзіндік жұмысқа бөлінген уақытты пайдаланады. Delphi-дің одан әрі қарай оқып-үйрену және НБП қуатты идеологиясын қолдану педагогикалық- программалық құралдарды (электронды оқулықтар, логикалық ойындарды және т.б.) құру технологиялары курсында курс жұмыстарын орындауында жалғасын табуда.

Қазіргі кезде программалық жабдықтарды жасау былай сипатталды, яғни ауқымды тұйықталған программалар емес, программалық жүйелердің компоненттері құрылады.

Мұнын себебін былай түсіндіруге болады:


  • Құрылған компоненттерді сақтауға және алгоритмнің сипаты және ақпаратты өңдеу тәсілдері жағын жақын болатын басқа программалық жүйелерде қайта қолдануға ұмтылу;

  • Үлкен ұжыммен жасалынатын және оны жасау, өңдеу және икемдеу ұзақ мерзімді қажет ететін ауқымды көлемдегі программалық жабдықты жасау қжеттілігі;

  • Бір есепті емес, өзекті саланың толық бір есебін шешуге арналған қолданбалы программалық жабдықтардың пайда боуы, мынаған алып келеді, яғни саланың нақты бір есебін есебін шешу үшін программа алдын-ала бар компоненттерден жиналады және оның орындалу реті осы берілген есептен тәуелді болады;

  • Программалауға дейінгі ақпараттық моделді жеткілікті деңгейде ерекшелеудің мүмкін еместігі, нәтижеде ақпараттық моделді нақтылау және қадамдарға бөлу есептеу тәжірибесімен бір мезгілде жүргізіледі.

Сонымен программалауға оқытуда мұғалім әрбір нақты оқушымен ұтымды қарым-қатынас жасау мүкіндігіне ие болады. Оқу үрдісінде компьютердің ықпалының белсенділігі, яңни оқушымен де, мұғаліммен де, өзара әрекетте болғандықтан жоғары екендігі белгілі. Бұл жағдайда оқушының танымдық іс-әрекетінің белсенділігі артады. Информатика пәнінің НБП бөлімін оқып-үйренуде, НБП әдістемесән меңгеру, белгілі программалау тілдері арқылы НБП техникалық икемділігін игеру және оқушылардың жалпы білімдік деңгейі іске асырылады.



Delphi ортасы. Delphi жүйесінің негізгі ұғымдары

Соңғы кездерде Windows ортасында жарыққа шыққан және обьектілі бағдарлы программалау (ОБП) негізінде құрылған программалау тәсілдері



Object Pascal, Microsoft Visual Basic, Borland Delphi, Borlan C++ for Windows.

ОБП тілінде прграммалалардың жұмысы оқиғалар тізбегінен және түрлі обьектілердің осы оқиғаларға жауабынан тұрады. Олар, әсіресе Delphi программалау тілі кез-келген қосымшаны дайындауға болатын жылдамдығы тез, қуатты тіл.

Delphi -дің бірінші нұсқасы 1995 жылы жарыққа шығып, кейінгі жылдары оның бірте-бірте кеңейтілген 2,3,4,5,6-нұсқалары жарық көрді. 5, 6-нұсқалардың бір-бірінен айырмашылығы жоқ деуге болады, екеуіде Windows 32 жүйесінің негізінде дайындалған. Delphi 6-да интернет үшін қысымшаларды дайындау мүмкіндігі кенейтілеген және берілгендер қорымен жұмыс істеуді өзгешіліктер еңгізілген.

Экранда Delphi ортасының 3 терезесі көрінеді.

а) Delphi 7 - нің негізгі терезесі

б) Форма (Form)

в) Обьект инспекторы терезесі (Object Inspecttr)

г) Модуль терезесі (программалық код терезесі)

Негізгі мәзір пунктеріне Delphi -де жұмыс істеу командалары, аспаптар тақтасына мәзір пунктеріне еңгізілген негізгі командаларды орындайтын түймелер орналасқан.

Delphi -де дайындалатын программа жоба деп атайды. Форма-программаны дайындау алдында ашылатын, программалық сұқбаттық терезесі. Delphi алғашқы рет іске қосылған кезде форма Form1 атауымен тақырыбымен көрінеді.

Delphi жүйесінің негізгі ұғымдары
DELPHI ортасы - ол күрделі механизм, программисті жоғарғы коэфецентпен қамтамассыз етеді. Бірнеше визуалды реализацияда экранда терезелер ашылады. Экранға бірнеше терезелер жалғыздан немесе толық және ол бір-бірімен сығыстырылып орналасады.

Бос Delpihi терезесін- жібереміз, бұнда кіретін 4- негізгі терезе ол: негізгі терезе (онда Delphi 7- Project тақырып бар), форма терезе (тақырып Form1),



Инспектор обьектісінің терезесі(Object Inspector) және программа кодының терезесі ол (Unit1. pas).

Сол жақ терезеге көмекші терезе браузер, осыны пайдаланып біз структураларының кодын аламыз.

1 сурет

Функцияналды негізгі тереземен байланысты-біржағынан, оның 3 элементі бар жәнеде ол өнемі программистің қол астында болуы керек, екінші жағынан қарасақ Delphi-дің басқа беттерін экранның бөгемеуі керек. Негізгі терезенің минимизациясы кейбір Delphi- мәлеметтері экранда жойылып кетуі мүмкін, программистің жұмысы желілік программамен аяқтауымен бітеді. Негізгі терезеде Delphi меню орналасқан, пиктографикалық командасынның нүктесі және политралық компонентер. Негізгі менюда проектіні басқару үшін бірнеше қолдану құралдары сақталынады. Элементер арнайы мәтіндік терезесінде және сол жағында басқару нүктелері орналасқан, тышқанның көмегімен панельдегі элементерді ыңғайлы орнына қою үшін.



Customize (Настройка) таңдауынан кейін (2.3 сурет) настройка терезесі пайда болады. Онда біз панельден өзімізге қажетті батырманы алуымызға болады.

2 - сурет



Пиктографикалық батырмалар.
Пиктографикалық батырмалар ең маңызды менюдің опциларына кіруге мүмкіндік береді. Функцияналды бөлінуіне байланысты 6 топқа бөлінеді. Әр бір топ жеке тақташада орналасқан.
Келесі кестеде командалар жазылған.


Батырма

Батырмалардың іс- әрекеті.

Standard группасы



Репозиторлы обьектке кіруге мүмкіндік береді. Эквиваленті опций File/New



Файлды ашады. Эквиваленті опций File/Open File.



Файлды диске сақтайды. Эквиваленті опций File/ Save File.



Бүкіл проектідегі файлды сақтайды. Эквиваленті опций File/ All



Ерте құрылған проектіні ашады. Эквиваленті опций File/ Open Project.



Проектіге жаңа файл қосады. Эквиваленті опций Project/ Add to Project.



Проектідегі файлды жояды. Эквиваленті опций Project/ Remove from Project.

View группасы



Модульдер тізімінен модуль таңдаймыз, проектімен байланысты. Эквиваленті опций View/Units



Форм тізімінен форманы таңдаймыз. Эквиваленті опций View/Forms



Терезе формасы мен терезе код арасында байланыс орнатады. Эквиваленті опций View/Toggle Form/Unit.



Жаңа форма құра және проектіге қосады. Эквиваленті опций File/New Form

Debug группасы



Программаны орындайды. Эквиваленті опций Run/ Run



Жұмыс ісиеп отырған программаны үзіп жібереді. Эквиваленті опций Run/ Program Pause

Custome группасы.



Іздеу кітапшасы. Эквиваленті опций Help/Contents.

Desktops группасы.



Delphi терезесінде бірнеше варианттар таңдау тізімі.



Delphi –дегі ағымды терезені сақтайды.

Форманың және формаға еңгізілетін компонентердің түрлі қасиеттері бар.



Қасиет – (сипаттама, параметр) –айнымалалардың ерекше түрі. Олар обьектінің түрлі мүмкіндіктерін сипаттап ағымдық күйін анықтайды. Программа құру форманы не онда орнатылған компонентің кейбір қасиеттерінің мәндерін өзгертуден басталады. Обьект инспекторы (Object Inspectоr) терезесіне еңгізілген қасиеттер тізімін шығару үшін нысанды таңдап алу керек. Инспектор терезесінің жоғары қатарына таңдалған нысан атауы да жазылып қойылады.
Форманың кейбір қасиеттері:

Name (атау) –формаға атау Delphi -дің формаға автоматты түрде алғашқы рет меншіктеген атауын (Form1) өзгертіп, басқа атау беруге болады.

Font (шрифт)-формаға шығаратын мәтін шрифтің қасиеті, Мысалы: (Times Kaz 10) Caption (тақырып)-форма терезесінің тақырыбына еңгізіп мәтінді. Алғашқы кезде өлшемін таңдап ОК батырмасын басамыз.

қасиеттер терезесі Caption қасиетіне Form1 сөзі еңгізіліп қойылады.



Color (түс)-форманың түсін орнату қасиеті.

Widht (ені), Height ( биіктігі) пиксель өлшем бірлігімен берілген форманың ені мен биіктігін орнату қасиеттері.

Экранда қасиеттер терезесі көрінбесе: оны шығару үшін View Object Inspectоr командасын беружеткілікті.



Оқиғалар. Программалық код терезесі.
Delphi -де программа түрлі оқиғалар арқылы басқарылады.

Оқиға- программамен жұмыс істеу барысында обьект жағдайының белгілі бір әрекетке жауап ретінде өзгеруі. Мысалы: пайдаланушы программа құру үшін алдымен формаға компонент орнатуы, форманы не формада орналастырылған компонентті тышқан арқылы шерту мүмкін. Оның әр іс-әрекеті оқиға шығарады. Delphi -де әр оқиға атау беріліп қойылған. Әр обьектіге байланысты оқиғалар көп . Мысалы: формаға байланысты өқиғалар саны 35. Олар қасиеттер терезесінің Events қосымша бетіне еңгізілген. Терезеде оқиға атауларының алдына On прифексі (қосымшасы) тіркестіріліп жазылған. Ол-атаудың оқиға екендігін білдіретін белгі:

Delphi ортасында жиі кездесетін оқиғалар

OnClick-тышқан түймесін бір рет басу.

OnDblClick-тышқан түймесін екі рет басу.

OnKeyDown-клавишті басу.

OnGreatе-форманы екі рет шерту басу т.б.

Проект екі бөлімнен тұрады: автоматты түрде project1 атауы берілген проекті файлы

(негізгі модуль) және Unit1.pas атауы берілген модуль. Олар жеке терезелерде орналасқан. Модульге оқиғаларға сәйкес іс-әрекеттерді орындайтын программа мәтіні (процедуралар) еңгізіледі. Программа мәтінің программалық код деп , ол еңгізілетін процессі деп атайды. Формада код терезесіне өту және код терезесінен формаға өту үшін F12 клавишін басу жеткілікті.

Формасы екі рет шерткен кезде ол терезесіне еңгізілген процедура дайындамасы көрсетілген. Оқиғаға байланысты құрылатын процедура Оқиғаны өңдуіш не өңдеу процедурасы делінеді. Процедура дайындамасының жазылу түрі:



Procedure <атау> (Sender:TObject);

<сипаттау бөлімі>

begin

<процедура денесі>

еnd;

Мұндағы: Sender- құрылатын процедураның қай класқа тиістілігін анықтайтын параметр.

Терезенің сол бөлігінде –браузер терезесі.

Онда код терезесінде барлық жариялаулардың құрылым көріп шығуға болады.



- Берілгендерді еңгізу және шығару. InputBox функциясы ShowMessage процедурасы. Типті түрлендіру функциялары.

Delphi -де айнымалы мәнің еңгізу үшін меншіктеу командасын, еңгізу терезесін не форманың Edit компонентің өрісін пайдалану мүмкін.

Delphi -де нәтижені ShowMessage процедураның терезесіне шығаруға болады. Процедураның жазылу түрі:

ShowMessage(FloatStr(S));

ShowMessage(FloatTostrF(S,ffgeneral,7,3));

Жүйе соңғы операторды оқып шығып, 7 цифрдан тұратын нақты санды символдық типте



ShowMessage терезесінде көрсетеді.

1.Мысалы: х=4,8 үшін у=3х+5/3 функциясының мәнің есептеу керек. Х мәні InputBox терезесі арқылы еңгізілсін, у мәні ShowMessage терезесінде көрсетіледі.

1. File-New Application командасын беріп, жаңа жоба ашу Form1 терезесі көрінеді.

2. Форма екі рет шерту Unit1.pas атаулы модель құрылады да, On Greate оқиғасын өндеуіне процедурасының дайындамасы көрінеді.



Form1 Form Greate форманы екі рет шерту оқиғасынан жауап ретінде құрылатын процедураның құрама атауы.

( Delphi -де әр қайсысы ұқсас толық бір іс-әрекетті орындайтын программалар тобы не, басқаша айтқанда, әдістер немесе қасиеттер орталығымен сипатталатын обьектілер жиынтығы класс деп, олардың біреуі класс данасы делінеді. Обьект орындай алатын әрекет әдіс деп аталады)

Екіншісі процедураның аты. Ол обьект және оқиға атауларының қосындысынан тұрады (оқиға атауының алдында On қосымшасы жазылмайды)

Көбінесе программа әр қайсысы нақты оқиғаны өндеуге арналған процедуралар жиынтығынан тұрады. Жиынтыққа қосалқы программа-процедура, функциялардың еңгізілуі де мүмкін.


Политра компонентері

Түстер политрасының компонентері- Delphi де ең маңызды роль атқарады. Ол терезенің оң жағында орналасқан қажетті компоненті тез іздеуге қамтаммасыз етеді . Компонентің астында функцияналды элемент бар, ішінде қажетті ақпаратты сақтайды және программистің жұмыс істеу терезесінде форма терезесі орналасқан. Компонентің көмегімен каркас программасы жаратылады, қай жағдайда болса да оның экранға шығуы, сыртқы көрінісі: терезе, батырма, таңдау тізімі және т.б.



Біз осы үшін арнайы редакторды пайдаланамыз, оң жақ тышқанды басқананң кейін, экранда шыққан терезе кез-келген пиктограмманы компонент политрасының және таңдау опций Properties (қасиеті)



3 - сурет
Мұнда кейбір компонентерді жою мүмкін емес, сол себептен политра редакторымен тәжірибеден өткізбеуге де болады. Стандартты жиында политра компонентерінде Simples беті бар, жиі қолданатын компонентер сақталынады. Біз «перетащить» бағанын Simples терезесі Pages редактор политрасы жоғары және “положить” ADO бағанына. Бұл істеген жұмыстан кейін тақырып Simples кез-келген моменттте кіре алады.
Инспектор обьект терезесі.

Кез-келген сығыстырылған форма компонентері бірнеше мінездеме жиыны компонентері: жағдайы, өлшемі, түсі, және т.б. Осы параметрдің жарты бөлімі, мысалы: жағдайы және өлшемі компонентің , программист өзгерте алады, манипулируя етіп терезе форма компонентерінде.



Кейбір параметрларды өзгерту үшін Инспектор Обьект терезесінде орналасқан. Ол терезе екі беттен тұрады: Properties (Қасиеті ) және Events (Оқиға). Әр бір бетте Инспектор Обьект терезесінде екі бөлімді кестеден тұрады: сол жақ бөлімде қасиеті және оқиға орналасқан, ал оң жағында-қасиеттің нақты мәні немесе программаның ішкі аты.

а) б)


4 - сурет

Қарапайым қасиетке жататындар- анықталған бір ғана мағынасынан, жолдар символы, True (айқын) немесе False (жалған) және т.б.

Мысалы: Caption қасиеті (тақырып) жолдар символында жатады, Height қасиеті (биіктігі) және Width (ені) сандармен, Enabled қасиеті (енуге жолы бар) мағынасы True немесе False.

Локальді меню терезесінде, оң жағында опций қатары бар.

Осыдан шығатын Stay on Top терезесінде Инспектор Обьект болатын “ағымды ” басқа терезелерге қарағанда тездету жылдамдығы тәуелсіз.

Егерде локальді менюдан таңдасақ опций Arange және одан кейін By Gategory, барлық жолдар Инспектор Обьект терезесінде тізімдегі қасиеті анықталған Реттелген категория бойынша.

Ол үшін локальді менюден View таңдап және толық көмекші менюден сол жақтағы категориядан алып тасталуы керек. Егерде біз байқаусыздан немесе әдейлеп істелінген терезенің көрінбеу қалуын F11 немесем опцийдан View/ Object Inspectоr таңдап қайтадан экранға қайтарып шығаруға болады.


Программа терезе коды

Терезе коды командалық тексті редакциялауға арналған. Бұл текст белгілі бір тәртіппен алгаритм программасын құруға арналған. Белгілі тәртіппен біріктіру тексті программалау тілі деп атайды. Delphi жүйесін программалау тілінде пайдалынады, Object Pascal, кең таралған кеңістікте және болжам Паскаль тілінде кең таралып жетілдірілген, алғаш рет Швейцариядағы ғалымға ұсынған Н. Вирт. 1970 жылдар кезінде жетілдірілген коорпорация ұжымдары Borland (құрылған тілдер Turbo Pascal, Borland Pascal және Object Pascal деп атайды). Бастапқы терезе кодында текстік минималды нәтиже мазмұндайды, функцияналды қарапайым форманы қамтамассыз етеді, толықтырылған Windows-терезесі. Жоба мен жұмыс істеу алдында программист өзіне қажетті ақпаратпен толықтырылады.

Ең алғаш жаңадан жобамен жұмыс істер алдында мынадай жолдар шығады:

Unit.Unit1;

iInterface

uses


Windows, Messages, Syslltils6 Cleasses, Grahics, Control, Forms, Dialogs;

Form 1=class(TForm);

private

{Private declarations}



public

{Public declarations}

end;

var


Form1: TForm1;

implementation

{SR*.DEM}

end.


Мына жолдар Delphi- да автоматтандырылған түрде, жаңа форма терезе кодында құрылады.

Терезе кодымен бірге іскерлігі және браузер терезесі Code Explorer, қажетті жағдайдағы элементті тездетіп жеңілдету үшін мүмкіндік береді.

Тышқанды екі рет шерткенде элементте браузер терезесі айқын текстік көрсеткішке әкеледі, терезе кодында сәйкесінше обьектіні жазу үшін немесе оның бірінші ескерілуі

Object Pascal –ға кіріспе
Панельде (TPanel) екі батырма орналасқан (TBitBtn) шығару жолы (TEdit), белгі (TLabel) және көп жолды редактор (TMemo). ОК- батырмасы программа туралы хабарлайды. Closе-жұмыстың аяқталуына көмектеседі.

Форма өлшемі Height қасиеті (биіктігі) және Width(ені) азайғышқа сәйкес. Олар арнайы таңдалған, өткені форма кіші немесе өлкен болкетпеуін экранда әр түрлі размерлі оптимальді 800х600 жалпылама алғанда. Pasition қасиеті формамен сығыстырылып басқарады экранның шекарасына байланысты. Жалпы мағынасы PoDisigned форманы тұтынады. Конструкторда этапта сығыстырылуы бойынша, мағыналы кеңеске көңіл аударайық- PosgreenCenter- экранның центіріне симетриялы.



Align қасиеті сығыстырылған компонент әдісін көрсетеді.

Caption (Тақырып)- қаситі панельдегі текстің центірде орналасуын анықтайды.

Left (сол жақ) қасиеті. Top ( жоғары) және Width(ені) сол жақтағы үстінгі бұрышта орналасқанды анықтайды, сол бұрыштардың компонентеріне байланысты контейнеріна және (компоненті) ені Left жолды шығару үшін.

Name (аты) –программада шығатын компонентің атын анықтау.

Text (текст)- Edit компоенетінде тексті анықтайды.

ScrollBars қсиеті MMOutput компонентінде SSBoth (Оба) мағынасы болады. Ондай мағына Delphi- ді айналмалы екі сызықты редактордың сығысуы-вертикалбді және горизонтальді TBitBtn компоненті үшін Kind (сұрыптау) функцияның қасиеті- типін анықтайды, диалог терезесігндегі көмекші іске асыру батырмасы.
Архивқа форманы апару
Мына католог Objerepos аты болады және Delphі католыгында орналастыру (үнсіз-(C:\Program Files\Bor\And\Delphi 5)

Архив (рипозиторында) Delphі –форманың түрі және проектінің жиналуына қызмет етеді.



Objerepos католыгнда форманы апару, архивтағы форманы ол әлі қамтамассыздандырылмайды. Диалог терезесін шақыру үшін алдымен архивтағы форманы тіркеу, форманың үстінен тышқанның оң жақ батырмасын шертіп көмекші менюден Add To Repository таңдаймыз.



5 - сурет

Title жолында FmExample форма атын жазып, Description жолында анықталады, Page ашық тұрған тізімде Forms –дегенді таңдаймыз. Егер қажет болса, Author жолында өзінің фамилиянды жазып және терезенді жабып ОК батырмасын басамыз.

Енді формада тіркелген кез-келген моментте біз опцийда File/New көмегімен басты менюдан Delphі-ді таңдай аламыз.

Delphі-дан таңдау кезінде File/New Application опцийін бос түрдегі формамен бірге шығады. Ол үшін Tools Repository опций көмегімен басты менюден диалог терезесін шақырамыз.

Delphi-да модульдер типы


Бірнеше таратылған модульдер түрі Delphi-да форма болады-модуль терезесімен байланысты. Интерфейстік бөлім осындай модульдің көбінесе жаңа класстарды сақтайды және автоматты түрде жаңарады Delphi-да терезеден шығу кезінде конструировать етіледі.

Интерфейстік бөлімде модульдер-формалар терезелер класына сәйкес келетін сондай-ақ обьектілерді сақтайтын хабарландыру береді. Мысалы: біздің қазіргі оқу программамызға сәйкес модульдер класын сақтауын хабарлайды, TfmExample және обьект fmExample. Көбінесе модульдер түрі репозотты құру, диаогты терезені сақтайды.



Модульдік мәлеметтер олар тереземен байланысты болады, жәнеде бұл терезелер экранда шықпайды.

Модульдар динамикалық библиотекасы құруға арналған кең көлемде Windows-таDLL Dinamic –Link Libraries).

DLL универсалды құралдармен қызмет етеді, программалаудың әр түрлі тілде жазылғаның.

Жоба-ол ерекше бейнемен DLL компилировать етілген немесе орташа Delphi мен немесе программамен.
3-ДӘРІС. Жоба сипаттамасы

Қарастырылатын сұрақтар:


  1. жоба құрамы;

  2. жоба файлы;

  3. форма файлы;

  4. модульдер файлдары;

  5. ресурстар файлы;

  6. жоба параметрлері.


Delphi тіліндегі бағдарламаның құрылымы

Delphi тіліндегі бағдарламаның құрамына .dpr кеңейтілуі бар жобаның файлы және .pas кеңейтілуі бар бір немесе бірнеше модульдер файлдары кіреді.



Жобаның құрылымы

Жобаның файлы Object Pascal тілінде жазылған және компилятормен өңделетін бағдарлама. Бұл бағдарламаны Delphi автоматты түрде құрастырады (1-сурет) және ол біреше жолдардан тұрады.

Delphi oртасын іске қосыңыз, Project – View Source опцияларын орындау арқылы келесі терезені шығарыңыз:

Бағдарлама Program сөзімен басталып, End сөзінен кейін қойылған нүктемен аяқталады. Object Pascal тілінде көптеген арнайы сөздер әртүрлі нұсқау ретінде қолдаылады, компилятор оларды солдан оңға жән ежоғары төмен қарай оқиды. Жүйелі жақшаға алынған таңбалар түсініктеме ретінде қолданылады. Сонымен қатар, түсініктемені көрсету үшін “(* * )” немесе “//” белгілерін қолдануға болады.

Бірақ {$R*.RES} жолы (жақшадан кейін бірден $ белгісі тұрған) түсініктеме емес, ол компиляторға берілген нұсқау болып табылады. Мысалы, жоғарыда келтірілген {$R*.RES} жолы бағдарламаны ресурстар файлын қоса есептегенде компиляциялау керек екендігі туралы баяндайды.

Program cөзі және кейін анықталған бағдарламаның атауы – бағдарламаның тақырыбы деп саналады.



USES (пайдалану) сөзімен басталған сөйлем бағдарламаны осы сөзбен анықталған басқа файлдарда орналасқан модульдерді қоса есептегенде компиляциялау керек екендігін хабарлайды. Жоғарыдағы мысалда жобаның файлымен бірге стандартты Forms және бағдарламаушы өзі құрастырған ‘Unit1.pas’

файлындағы Unit1 модульдерін бірітіре отырып, компиляциялау керектігі туралы берілген нұсқау.

Осындай нұсқаудан соң бағдарламаның денесі орналасады, ол Begin сөзімен басталып, End және одан кейін қойылған нүктемен (терминатормен( аяқталады. Қарастырылып отырған бағдарламаның денесі үш орындалатын операторлардан құралған:

Begin


Application.CreateForm(TfmExample, fmExample);

Application.Run;

End.

Әр оператор Application (қосымша) объектінің белгілі ір әдісін шақыру жұмысын атқарады.



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

Объектілік типтердің негізгі ерекшелігі болып, ол объектінің өрістерен бірге қолданылатын әртүрлі іс-әрекеттердің жиынын ішкі бағдарламалар (процедура және функциялар) арқылы анықтауға болады. Берілгендердің осындай қасиетін инкапсуляция деп атайды. Инкапсуляция – берілгендерді өңдеудің алгоритмдерін бір бүтін құрылымға біріктіру деген тұжырым.

Объекттілік типтердің негізгі қасиеттері – функционалды толықтығ және өрістер мен дәстердің бір-бірінен ажыратылмауы оларды бағдарламанң блек бір тәуелсіз бөлігі ретінде қолдануға мүмкіндік береді. Мұндай объектілерді бір бағдарламадан екіншіге оңай алмастыруға болады. Бұл принципті объектіге бағытталған бағдарламалау тәсілдері деп атайды.

Қарастырылған мысалдағы Application объектінің құрамына Windows бағдарламасының жұмысын ұйымдастыратын көптеген берілгендер мен ішкі бағдарламалар кіреді. Жалпы Delphi ортасы кез келген жаңа жобаның Application – объектілік бағдарламасын автоматты түрде құрастырады.

Initialize әдісі арқылы бағдарлама Windows–тің басқаруымен әртүрлі көмекші жұмыстарды орындайды. Application.Initialize әдісі шақырылғанда компилятордың құрастырған коды процессорды Delphi ортасының даяр тұрған бір үзіндісін орындатуға мұқтаж етеді. Осы үзінді орындалғаннан кейін (немесе бағдарламадан шыққаннан ейін) келесі жолдғы CreatForm әдісі орындалады және т.с.с.

CreatForm әдісі негізгі терезені құрастырып, оны экранда көрсетеді. Ал Run әдісі берілгендер мен оларды өңдеу туралы Windows–тан келген хабарларды қабылдайды. Батырмасы басылғанда, бағдарламаға Windows–тан жұмысты тоқтату және жүйелі ресурстарды (жадыны және процессорды) босату туралы нұсқау беріледі.

Жобаның коды, жоғарыда айтылғандай, Delphi ортасымен құрастырылады және көптеген жағдайларда бұл кодқа килігуге тыйы салынған. Егер бағдарламаушы осы кодқа әртүрлі өзгерістер енгізіп киліксе, онда Delphi ортасы осы өзгерістерді алып тастауға тырысады. Сондықтан жобаның файлында ерекше кеңейтілу қолданылады және әдетте бұл код көрінбей тұрады.



Достарыңызбен бөлісу:
  1   2   3   4   5   6   7   8   9   ...   35




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет