Jump to content

Մասնակից:MVardan/Ավազարկղ

Վիքիպեդիայից՝ ազատ հանրագիտարանից

Օբյեկտ-կողմնորոշված ծրագրավորում (ՕԿԾ)ծրագրավորման մոտեցում, որի գաղափարական հիմք են հանդիսանում Օբյեկտ և Դաս(class) հասկացությունները.

ՕԿԾ-ն առաջացել է պրոցեդուրային ծրագրավորման գաղափարախոսության զարգացման արդյունքում, որտեղ տվյալները, և դրանք մշակող ֆունկցիաները ձևականորեն կապված չեն:

Առաջին ծրագրավորման լեզուն, որտեղ ներկայացված են եղել օբյեկտ կողմնորոշված ծրագրավորման սկզբունքները՝ Սիմուլան(simula) էր: Իր հայտնվելու պահին (1967թ.) այն առաջարկում էր հեղափոխական գաղափարներ՝ օբյեկտ, դաս, վիրտուալ մեթոդ և այլն: Սակայն այս ամենը ժամանակին այնքան էլ մեծ իրարանցմամբ չընդուվեց: Ամեն դեպքում Սիմուլայի գաղափարների մեծ մասը զարգացվեցին Ալան Քեյի և Դեն Ինգալսի կողմից՝ Սմոլթոկ(Smalltalk) լեզվի մեջ: Վերջինս էլ դարձավ առաջին լայն տարածում գտած օբյեկտ-կողմնորոշված ծրագրավորման լեզուն:

Ներկայումս օբյեկտ-կողմնորոշված ծրագրավորման լեզուները ամենատարածվածն են աշխարհում, սակայն, օրնակ՝ օպերացիոն համակարգերի ծրագրավորման ոլորտում մինչև հիմա օգտագործվում են պրցեդուրային մոտեցման սկզբունքները, որոնց կրիչն է լայն տարածում գտած Սի(C) լեզուն:

Հիմնական սկզբունքներ

[խմբագրել | խմբագրել կոդը]
Աբստրակցիա (Վերացարկում)
Սա օբյեկտի կարևոր հատկությունների առանձնացումն է, հաշվի չառնելով երկրորդականները:[1]
Ինկապսուլյացիա (Տարրաձևություն)
Սա համակարգի հատկություն է, որը թույլ է տալիս միավորել դասի տվյալները և դրանց հետ աշխատող մեթոդները՝ միաժամանակ անտեսանելի պահելով իրականացման առանձնահատկությունները: [1]
Ժառանգում
Սա համակարգի հատկություն է, որը թույլ է տալիս նկարագրել նոր դաս՝ մեկ այլ դասի հիմքի վրա, ֆունկցիոնալության մասնակի կամ լրիվ փոխառնմամբ: Այն դասը, որից կատարվում է ժառանգում կոչվում է բազային կամ ծնող դաս: Իսկ նոր դասը կոչվում է ածանցյալ կամ ժառանգ դաս: [1]
Պոլիմորֆիզմ
Սա համակարգի հատկություն է, որը թույլ է տալիս միանման ինտերֆեյսով օբյեկտներ ` առանց ներքին կառուցվացքի ու տիպի մասին պատկերացում ունենալու: [1]
Դաս
Դասը հանդիսանում է ելակետային կոդի տերմինալոգիայով նկարագրված, դեռ գոյություն չունեցող օբյեկտի մոդել: Փաստացի այն նկարագրում է օբյեկտի կառուցվածքը, հանդիսանալով օբյեկտի ՛՛գծագիր՛՛:
Օբյեկտ
Հաշվողական համակարգի հասցեային տիրույթի իմաստային հատված է, որը առաջանում է դասի օրինակ(օբյեկտ) ստեղծելիս:
Նախատիպ
Նախատիպ — Սա օբյեկտ-օրինակ է, որի օրինակով ու նմանությամբ ստեղծվում են ուրիշ օբյեկտներ:

ՕԿԾ սահմանումը և հիմնական հայեցակարգերը

[խմբագրել | խմբագրել կոդը]

ՕԿԾ սահմանումը

[խմբագրել | խմբագրել կոդը]

ՕԿԾ-ի հիմքում ընկած է օբյեկտ հասկացությունը: Օբյեկտը դա մի ՛՛սև արկղ՛՛ է, որին կարելի է ուղարկել հաղորդագրություններ և որը կարղ է այդ հաղորդագրություններն արձագանքել՝ օգտագործելով իր տվյալները: Օբյեկտի տվյալները ծածկված(փակված) են մնացած ծրագրի համար, սա կոչվում է Ինկապսուլյացիա : Ինկապսուլյացիայի առկայությունը բավարար է լեզուն օբյեկտային անվանելու համար, բայց օբյեկտ-կողմնորոշված ծրագրավորման առավելությունները զգալու համար անհրաժեշտ է, որ լեզուն ապահովի նաև ժառանգում և պոլիմորֆիզմ: Չնայած ՕԿԾ-ի ավելի քան քառասունամյա պատմությանը, մինչ այսօր չկա ՕԿԾ-ի կոնկրետ սահմանում, և տարբեր գրքերում կարելի է հանդիպել տարբեր սահմանումների:

Հիմնական հայեցակարգերը

[խմբագրել | խմբագրել կոդը]

ՕԿԾ-ում դաս հասկացության առաջացումը պայմանավորված է նման վարքագծով բազմաթիվ օբյեկտներ ունենալու ցանկությամբ: Այստեղ դասը տվյալների աբստրակտ տիպ է, որը ստեղծվում է ծրագրավորողի կողմից: Այս տեսանկյունից դիտելիս՝ օբյեկտները այդ աբստրակտ տիպի արժեքներ են, իսկ դասի սահմանումը տալիս է դրանց տվյալների ներքին կառուցվածքը և այդ տվյալների հետ կատարվելիք գործողությունները: Եթե մի քանի դաս ունեն համանման վարքագիծ, ապա տրամաբանական է կոդ չկրկնելու ցանկությունը՝ ինչը իրականցվում է ժառանգման միջոցով: Ժառանգման սկզբունքը կայանում է նրանում, որ կարիք չկա սահմանել մի քանի միանման դաս, երբ ուղղակի կարելի է խմբավորել այդ դասերի ընդհանուր մասերը մի ծնող դասի մեջ և այնուհետև ժառանգել մնացածը այդ դասից՝ դրանց սահմանման մեջ նշելով միայն ծնողի նկատմամբ տարբերությունները:

Տարբեր դասերի օյեկտների համատեղ օգտագործման անհրաժեշտությունը բերում է պոլիմորֆիզմ գաղափարի ներդրմանը: Սա հնարավորություն է տալիս տարբեր դասերի օբյեկտները գրանցել նույն տիպի փոփոխականների մեջ: Այս պայմաններում, հաղորդագրություն ուղարկող օբյեկտը իրականում կարող է ինֆորմացիա չունենալ ընդունողի դասի մասին, այսինքն նույն տիպի փոփոխականներին (որոնք պարունակում են տարբեր դասերի օբյեկտներ) ուղարկված հաղորդագրությունը կառաջացնի տարբեր ռեակցիաներ: Շատ ժամանակակից լեզուներում հաղորդագություն ուղակելու տակ նկատի ունենք մեթոդի կանչը՝ օբյեկտները ունեն դրսից հասանելի մեթոդներ և դրանց կանչերով ապահովվում են օբյեկտների փոխազդեցությունները: Այս լեզուներից են C++, Java, Oberon-2...

Ծրագրերի նաղագծման օբյեկտ-կողմնորոշված մոտեցում

[խմբագրել | խմբագրել կոդը]

ՕԿԾ-ն կողմնորոշված է՝ ծրագրավորողների թիմերի կողմից, խոշոր ծրագրային համակարգեր նախագծելու վրա: Այս դեպքում ընդհանուր համակարգի և առանձին կոմպոնենտների ստեղծումը, այնուհետև դրանց միավորումը կարող է կատարվել տարբեր մարդկանց կողմից: Շատ հաճախ պրոեկտի մասին ամեն ինչ ոչ-ոք չի իմանում :

Օբյեկտ-կողմնորոշված նաղագծման էությունը կայանում է երկու հիմնական հարցի պատասխանելու մեջ՝

  • Ի՞նչ մասերից է բաղկացած համակարգը:
  • Ինչի՞ համար է պատասխանատու այդ մասերից յուրաքանչյուրը:

Մասերի բաժանումը կատարվում է այնպես, որ այդ մասերից յուրաքանչյուրը ունենա մինիմալ չափ, ճժգրիտ սահմանված պարտականություններ և հանարավորինս քիչ փոխազդի մնացած ծրագրի հետ: Կոմպոնենտների առանձնացումից և դրանց միջև փոխահարաբերությունների (ինտերֆեյս) սահմանումից հետո, դրանցից յուրաքանչյուրը կարելի է ծրագրավորել մնացածից գրեթե անկախ (պահպանելով որոշակի տեխնոլոգիական կարգապահություն): Մեծ կարևորություն ունի դասերի հիերարխիայի ճիշտ կառուցումը:ՕԿԾ-մոտեցումներով ստեղծված մեծ համակարգերի հայտնի խնդիրներից մեկը՝ դա այսպես կոչված բազային դասի փխրունության խնդիրն է: Խնդիրը կայանում է նրանում, որ նախագծման հետագա փուլերում՝ երբ դասերի հիերարխիան արդեն կառուցված է և դրա հիմքի վրա արդեն գրվել է բավականին մեծ քանակությամբ կոդ, բազային դասի մեջ փոփոխություն մտցնելը դառնում է գրեթե անհնար: Քանի որ բազային դասը նախագծողին հայտնի չէ, թէ իր նախագծած դասի ժառանգներում այդ դասի պահվածքի փոփոխությունը ինչի է կարող հանգեցնել:

  1. 1,0 1,1 1,2 1,3 Михаил Пайсон, «ООП с примерами, Часть 2».