«Օբյեկտ կողմնորոշված ծրագրավորում»–ի խմբագրումների տարբերություն

Content deleted Content added
չ clean up, փոխարինվեց: չեր → չէր, — → - oգտվելով ԱՎԲ
Տող 2.
 
== Պատմություն ==
ՕԿԾ-ն առաջացել է [[պրոցեդուրային ծրագրավորում|պրոցեդուրային ծրագրավորման]] գաղափարախոսության զարգացման արդյունքում, որտեղ տվյալները, և դրանք մշակող ֆունկցիաները ձևականորեն կապված չեն:
 
Առաջին ծրագրավորման լեզուն, որտեղ ներկայացված են եղել օբյեկտ կողմնորոշված ծրագրավորման սկզբունքները՝ [[Սիմուլա(ծրագրավորում)|Սիմուլան]](simula) էր: Իր հայտնվելու պահին (1967թ.) այն առաջարկում էր հեղափոխական գաղափարներ՝ օբյեկտ, դաս, վիրտուալ մեթոդ և այլն: Սակայն այս ամենը այնքան էլ մեծ իրարանցմամբ չընդուվեց ժամանակին: Ամեն դեպքում Սիմուլայի գաղափարների մեծ մասը զարգացվեցին Ալան Քեյի և Դեն Ինգալսի կողմից՝ Սմոլթոկ(Smalltalk) լեզվի մեջ: Վերջինս էլ դարձավ առաջին լայն տարածում գտած օբյեկտ-կողմնորոշված ծրագրավորման լեզուն:
 
Ներկայումս օբյեկտ-կողմնորոշված ծրագրավորման լեզուները ամենատարածվածն են աշխարհում, սակայն, օրինակ՝ օպերացիոն համակարգերի ծրագրավորման ոլորտում մինչև հիմա օգտագործվում են պրցեդուրային մոտեցման սկզբունքները, որոնց կրիչն է լայն տարածում գտած [[C (ծրագրավորման լեզու)|Սի(C)]] լեզուն:
 
== Հիմնական սկզբունքներ ==
 
; [[Տվյալների աբստրակցիա|Աբստրակցիա]] (Վերացարկում) : Աբստրակցիա - Սա օբյեկտի կարևոր հատկությունների առանձնացումն է, հաշվի չառնելով երկրորդականները:<ref name="payson-OOP">[http://habrahabr.ru/post/87205/ Михаил Пайсон, «ООП с примерами, Часть 2».]</ref>
; [[Ինկապսուլյացիա (ծրագրավորում)|Ինկապսուլյացիա ]]: Սա համակարգի հատկություն է, որը թույլ է տալիս միավորել դասի տվյալները և դրանց հետ աշխատող մեթոդները՝ միաժամանակ անտեսանելի պահելով իրականացման առանձնահատկությունները:<ref name="payson-OOP" />
; [[Ժառանգում (ծրագրավորում)|Ժառանգում]] : Սա համակարգի հատկություն է, որը թույլ է տալիս նկարագրել նոր դաս՝ մեկ այլ դասի հիմքի վրա, ֆունկցիոնալության մասնակի կամ լրիվ փոխառնմամբ: Այն դասը, որից կատարվում է ժառանգում կոչվում է բազային կամ ծնող դաս: Իսկ նոր դասը կոչվում է ածանցյալ կամ ժառանգ դաս:<ref name="payson-OOP" />
; [[Պոլիմորֆիզմ (ծրագրավորում)|Պոլիմորֆիզմ]] (Բազմաձևություն): Սա համակարգի հատկություն է, որը թույլ է տալիս միանման [[ինտերֆեյս|ինտերֆեյսով]]ով օբյեկտներ ` առանց ներքին կառուցվացքի ու տիպի մասին պատկերացում ունենալու:<ref name="payson-OOP" />
 
; [[Դաս (ծրագրավորում)|Դաս]] : Դասը հանդիսանում է ելակետային կոդի տերմինալոգիայով նկարագրված, դեռ գոյություն չունեցող օբյեկտի մոդել: Փաստացի այն նկարագրում է օբյեկտի կառուցվածքը, հանդիսանալով օբյեկտի ՛՛գծագիր՛՛:
Տող 29.
ՕԿԾ-ում [[Դաս (ծրագրավորում)|դաս]] հասկացության առաջացումը պայմանավորված է նման վարքագծով բազմաթիվ օբյեկտներ ունենալու ցանկությամբ: Այստեղ դասը տվյալների աբստրակտ տիպ է, որը ստեղծվում է ծրագրավորողի կողմից: Այս տեսանկյունից դիտելիս՝ օբյեկտները այդ աբստրակտ տիպի արժեքներ են, իսկ դասի սահմանումը տալիս է դրանց տվյալների ներքին կառուցվածքը և այդ տվյալների հետ կատարվելիք գործողությունները: Եթե մի քանի դաս ունեն համանման վարքագիծ, ապա տրամաբանական է կոդ չկրկնելու ցանկությունը՝ ինչը իրականցվում է [[Ժառանգում (ծրագրավորում)|ժառանգման]] միջոցով: Ժառանգման սկզբունքը կայանում է նրանում, որ կարիք չկա սահմանել մի քանի միանման դաս, երբ ուղղակի կարելի է խմբավորել այդ դասերի ընդհանուր մասերը մի ծնող դասի մեջ և այնուհետև ժառանգել մնացածը այդ դասից՝ դրանց սահմանման մեջ նշելով միայն ծնողի նկատմամբ տարբերությունները:
 
Տարբեր դասերի օյեկտների համատեղ օգտագործման անհրաժեշտությունը բերում է [[Պոլիմորֆիզմ (ծրագրավորում)| պոլիմորֆիզմ]] գաղափարի ներդրմանը: Սա հնարավորություն է տալիս տարբեր դասերի օբյեկտները գրանցել նույն տիպի փոփոխականների մեջ: Այս պայմաններում, հաղորդագրություն ուղարկող օբյեկտը իրականում կարող է ինֆորմացիա չունենալ ընդունողի դասի մասին, այսինքն նույն տիպի փոփոխականներին (որոնք պարունակում են տարբեր դասերի օբյեկտներ) ուղարկված հաղորդագրությունը կառաջացնի տարբեր ռեակցիաներ:
 
Շատ ժամանակակից լեզուներում հաղորդագություն ուղակելու տակ նկատի ունենք մեթոդի կանչը՝ օբյեկտները ունեն դրսից հասանելի մեթոդներ և դրանց կանչերով ապահովվում են օբյեկտների փոխազդեցությունները: Այս լեզուներից են [[C++]], [[Java]], [[Oberon-2]]...