Назорат саволлари
Модулли программалашнинг афзаллик томонлари нимада?
Турли модулларда бир хил ном билан аниқланган объектларни ишлатиш мумкинми?
Фақат Implementation бўлимида аниқланган объектни ишлатиш доираси қандай?
Турбо Паскал стандарт модуллари фойдаланувчи аниқлаган модулларга нисбатан имтиёзга эгами?
Модулни компилиясида Make ва Build режимлар фарқи нимада?
§ 3.21. Объектга йўналтирилган программалаш (ОЙП). Объектларни аниқлаш.
ОЙП асосида битта структура (тузилишда) да берилганларни ва улар устида бажариладиган амалларни бирлаштириш ғояси ётади.
ОЙП учта асосий тушунчага таянади: инкапсуляция, ворислик ва полиморфизм.
Инкапсуляция – берилганлар ва шу берилган билан ишлайдиган процедура ва функциялар аралашмасини ҳосил қилишдир. Натижада берилганлар янги тури–объект ҳосил бўлади.
Ворислик–аниқланган объектлардан фойдаланган ҳолда улардан келиб чиқувчи объектлар иерархиясини ҳосил қилиш. Ҳар бир «ворис» ўз «аждоди» даги берилганлар тавсифи ва улрни қайта ишловчи усуллар (методлар) ни ўзлаштиради.
Полиморфизм–ворислик иерархиясидаги барча объектларга бир вақтда қўлланадиган, бир хил номдаги амалларни (процедура ва функциялар) аниқлаш имкониятидир. Бунда ҳар бир объект бу амални ўз устида бажарилишида ўзига хосликларини буюртма бериши мумкин.
ОЙП мураккаб программаларни ёзишни соддалаштиради ва бу жараёнга ихчамлик хусусиятини беради. ОЙП нинг асосий афзаллиги шундаки программа қўллаш соҳасини ўзгартиришга даструни ўзгартирмасдан, фақат объектлар иерархиясига янги ўзгартиришлар (сатхлар қўшиш) орқали эришиш мумкин.
Объектларни аниқлаш. Объект-таркибида ўзаро боғланган ҳар хил турдаги ўзгарувчилар (берилганлар майдони) ва уларни қайта ишлайдиган процедура ва функциялардан (методлар) ташкил топган тузилмадир. Объект турини аниқлаш учун “Object” махсус сўз аниқланган ва у қуйидагича эълон қилинади.
Type
<объект номи> Object
<Берилганлар майдони>;
<Методлар сарлавҳалари> ;
End;
<Объект номи > билан аниқланган ҳар бир ўзгарувчи шу тур нусхаси (намунаси) дейилади.
Мисол. Белги ва матн маълумотлар билан ишлайдиган объект.
Type
ObjPos Object
Line, Col : Word;
Procedure Init (Init_Line,Init_Col : Word);
Function GetLine: Word; {Line қийматини қабул қилиш}
Function GetCol: Word; {Col қийматини қабул қилиш}
Procedure Print;
End;
Procedure ObjPos.Init(Init_Line, Init_Col : Word);
Begin
Line : Init_Line;
Col : Init_Col;
End;
Function ObjPos.Get_Line : Word;
Begin
Get_Line : Line
End;
Function ObjPos.Get_Col : Word;
Begin
Get_Col : Col
End;
Procedure ObjPos.Print;
Begin
Write(#7);
End;
...
Var
ObjPos_Var : ObjPos; {объект нусхасини эълон қилиш}
...
Begin
...
ObjPos_Var.Init(5,15); {объект учун бошланғич қийматлар бериш}
...
End;
Объектни эълон қилишда методларнинг сарлавхаларигина ёзилади. Процедура ва функциялар эълони программа эълон қисмининг бошқа бўлагида бўлиши мумкин. Объект майдонларига мурожаат ёзув (Record) майдонларига мурожаат билан бир хил («.» –нуқта ва With оператори орқали). Лекин объект берилганларига қуйидагича мурожаат ижобий баҳоланмайди.
ObjPos_Var.Line :5;
ObjPos_Var.Col :15;
Умуман, ОЙПда объект берилганларига мурожаат фақат методлар орқали амалга оширилади.
Объектларни эълон қилишда маълум бир талаблар бажарилиши керак:
объект тури асосий датурнинг (модулларининг) Type бўлимида эълон қилиниши мумкин. Қисм-программаларда локал объектларни эълон қилиш мумкин эмас;
объект турини аниқлашда берилганлар майдони методлар майдонидан олдин келиши керак;
объект компонентаси сифатида файл келиши мумкин эмас, ва аксинча файл “объект” туридаги компонентага эга бўлиши мумкин эмас.
ObjPos объекти орқали матн экранидаги бирорта белги ҳолати аниқланади. Энди белгини ўзини аниқловчи ва унинг устида маълум бир иш бажарувчи ObjSym объектини аниқлайлик.
Uses Crt;
Type
ObjSym Object
Line, Col : Word;
Sym : Char;
Procedure Init (Init_Line,Init_Col: Word; Init_Sym : Char);
Function GetLine: Word;
Function GetCol: Word;
Procedure Print;
End;
Procedure ObjSym.Init(Init_Line, Init_Col : Word);
Begin
Line : Init_Line;
Col :Init_Col;
Sym :Init_Sym;
End;
Function ObjSym.Get_Line : Word;
Begin
Get_Line :Line
End;
Function ObjSym.Get_Col : Word;
Begin
Get_Col :Col
End;
Procedure ObjSym.Print;
Begin
Crt.GotoXY(Col,Line);
Write(Sym);
End;
Агар бу объектнинг аниқланишига эътибор берадиган бўлсак, унда ObjPos объектидаги берилганлар ва Get_line, Get_Col функцияларидан фойдаланилган. Sym ва Print компоненталари янгидан қўшилган ва Init процедураси қайтадан ёзилган. Кўриниб турибдики, ObjSym объекти ObjPos объекти хусусиятларини ворислик қилиб олган. Умуман айтганда, ОЙПда ворислик–бу объектларнинг оддий тузилишдан мураккаб тузилишга томон объект хусусиятларини олиб ўтиши ва ривожланишидир.
Do'stlaringiz bilan baham: |