Մասնակից:MVardan/Ավազարկղ
![]() |
Սա MVardan մասնակցի սևագրության էջն է՝ «ավազարկղը», և մասնակցի էջի ենթաէջերից մեկն է։ Այն ծառայում է որպես սևագիր և փորձարկումների վայր։ Սա հանրագիտարանային հոդված չէ։ Ձեր անձնական ավազարկղը ստեղծելու համար սեղմեք այստեղ։ Այլ ավազարկղեր՝ Ընդհանուր ավազարկղ |
Օբյեկտ-կողմնորոշված ծրագրավորում (ՕԿԾ) — ծրագրավորման մոտեցում, որի գաղափարական հիմք են հանդիսանում Օբյեկտ և Դաս(class) հասկացությունները.
Պատմություն
խմբագրելՕԿԾ-ն առաջացել է պրոցեդուրային ծրագրավորման գաղափարախոսության զարգացման արդյունքում, որտեղ տվյալները, և դրանք մշակող ֆունկցիաները ձևականորեն կապված չեն:
Առաջին ծրագրավորման լեզուն, որտեղ ներկայացված են եղել օբյեկտ կողմնորոշված ծրագրավորման սկզբունքները՝ Սիմուլան(simula) էր: Իր հայտնվելու պահին (1967թ.) այն առաջարկում էր հեղափոխական գաղափարներ՝ օբյեկտ, դաս, վիրտուալ մեթոդ և այլն: Սակայն այս ամենը ժամանակին այնքան էլ մեծ իրարանցմամբ չընդուվեց: Ամեն դեպքում Սիմուլայի գաղափարների մեծ մասը զարգացվեցին Ալան Քեյի և Դեն Ինգալսի կողմից՝ Սմոլթոկ(Smalltalk) լեզվի մեջ: Վերջինս էլ դարձավ առաջին լայն տարածում գտած օբյեկտ-կողմնորոշված ծրագրավորման լեզուն:
Ներկայումս օբյեկտ-կողմնորոշված ծրագրավորման լեզուները ամենատարածվածն են աշխարհում, սակայն, օրնակ՝ օպերացիոն համակարգերի ծրագրավորման ոլորտում մինչև հիմա օգտագործվում են պրցեդուրային մոտեցման սկզբունքները, որոնց կրիչն է լայն տարածում գտած Սի(C) լեզուն:
Հիմնական սկզբունքներ
խմբագրել- Աբստրակցիա (Վերացարկում)
- Սա օբյեկտի կարևոր հատկությունների առանձնացումն է, հաշվի չառնելով երկրորդականները:[1]
- Ինկապսուլյացիա (Տարրաձևություն)
- Սա համակարգի հատկություն է, որը թույլ է տալիս միավորել դասի տվյալները և դրանց հետ աշխատող մեթոդները՝ միաժամանակ անտեսանելի պահելով իրականացման առանձնահատկությունները: [1]
- Ժառանգում
- Սա համակարգի հատկություն է, որը թույլ է տալիս նկարագրել նոր դաս՝ մեկ այլ դասի հիմքի վրա, ֆունկցիոնալության մասնակի կամ լրիվ փոխառնմամբ: Այն դասը, որից կատարվում է ժառանգում կոչվում է բազային կամ ծնող դաս: Իսկ նոր դասը կոչվում է ածանցյալ կամ ժառանգ դաս: [1]
- Պոլիմորֆիզմ
- Սա համակարգի հատկություն է, որը թույլ է տալիս միանման ինտերֆեյսով օբյեկտներ ` առանց ներքին կառուցվացքի ու տիպի մասին պատկերացում ունենալու: [1]
- Դաս
- Դասը հանդիսանում է ելակետային կոդի տերմինալոգիայով նկարագրված, դեռ գոյություն չունեցող օբյեկտի մոդել: Փաստացի այն նկարագրում է օբյեկտի կառուցվածքը, հանդիսանալով օբյեկտի ՛՛գծագիր՛՛:
- Օբյեկտ
- Հաշվողական համակարգի հասցեային տիրույթի իմաստային հատված է, որը առաջանում է դասի օրինակ(օբյեկտ) ստեղծելիս:
- Նախատիպ
- Նախատիպ — Սա օբյեկտ-օրինակ է, որի օրինակով ու նմանությամբ ստեղծվում են ուրիշ օբյեկտներ:
ՕԿԾ սահմանումը և հիմնական հայեցակարգերը
խմբագրելՕԿԾ սահմանումը
խմբագրելՕԿԾ-ի հիմքում ընկած է օբյեկտ հասկացությունը: Օբյեկտը դա մի ՛՛սև արկղ՛՛ է, որին կարելի է ուղարկել հաղորդագրություններ և որը կարղ է այդ հաղորդագրություններն արձագանքել՝ օգտագործելով իր տվյալները: Օբյեկտի տվյալները ծածկված(փակված) են մնացած ծրագրի համար, սա կոչվում է Ինկապսուլյացիա : Ինկապսուլյացիայի առկայությունը բավարար է լեզուն օբյեկտային անվանելու համար, բայց օբյեկտ-կողմնորոշված ծրագրավորման առավելությունները զգալու համար անհրաժեշտ է, որ լեզուն ապահովի նաև ժառանգում և պոլիմորֆիզմ: Չնայած ՕԿԾ-ի ավելի քան քառասունամյա պատմությանը, մինչ այսօր չկա ՕԿԾ-ի կոնկրետ սահմանում, և տարբեր գրքերում կարելի է հանդիպել տարբեր սահմանումների:
Հիմնական հայեցակարգերը
խմբագրելՕԿԾ-ում դաս հասկացության առաջացումը պայմանավորված է նման վարքագծով բազմաթիվ օբյեկտներ ունենալու ցանկությամբ: Այստեղ դասը տվյալների աբստրակտ տիպ է, որը ստեղծվում է ծրագրավորողի կողմից: Այս տեսանկյունից դիտելիս՝ օբյեկտները այդ աբստրակտ տիպի արժեքներ են, իսկ դասի սահմանումը տալիս է դրանց տվյալների ներքին կառուցվածքը և այդ տվյալների հետ կատարվելիք գործողությունները: Եթե մի քանի դաս ունեն համանման վարքագիծ, ապա տրամաբանական է կոդ չկրկնելու ցանկությունը՝ ինչը իրականցվում է ժառանգման միջոցով: Ժառանգման սկզբունքը կայանում է նրանում, որ կարիք չկա սահմանել մի քանի միանման դաս, երբ ուղղակի կարելի է խմբավորել այդ դասերի ընդհանուր մասերը մի ծնող դասի մեջ և այնուհետև ժառանգել մնացածը այդ դասից՝ դրանց սահմանման մեջ նշելով միայն ծնողի նկատմամբ տարբերությունները:
Տարբեր դասերի օյեկտների համատեղ օգտագործման անհրաժեշտությունը բերում է պոլիմորֆիզմ գաղափարի ներդրմանը: Սա հնարավորություն է տալիս տարբեր դասերի օբյեկտները գրանցել նույն տիպի փոփոխականների մեջ: Այս պայմաններում, հաղորդագրություն ուղարկող օբյեկտը իրականում կարող է ինֆորմացիա չունենալ ընդունողի դասի մասին, այսինքն նույն տիպի փոփոխականներին (որոնք պարունակում են տարբեր դասերի օբյեկտներ) ուղարկված հաղորդագրությունը կառաջացնի տարբեր ռեակցիաներ: Շատ ժամանակակից լեզուներում հաղորդագություն ուղակելու տակ նկատի ունենք մեթոդի կանչը՝ օբյեկտները ունեն դրսից հասանելի մեթոդներ և դրանց կանչերով ապահովվում են օբյեկտների փոխազդեցությունները: Այս լեզուներից են C++, Java, Oberon-2...
Ծրագրերի նաղագծման օբյեկտ-կողմնորոշված մոտեցում
խմբագրելՕԿԾ-ն կողմնորոշված է՝ ծրագրավորողների թիմերի կողմից, խոշոր ծրագրային համակարգեր նախագծելու վրա: Այս դեպքում ընդհանուր համակարգի և առանձին կոմպոնենտների ստեղծումը, այնուհետև դրանց միավորումը կարող է կատարվել տարբեր մարդկանց կողմից: Շատ հաճախ պրոեկտի մասին ամեն ինչ ոչ-ոք չի իմանում :
Օբյեկտ-կողմնորոշված նաղագծման էությունը կայանում է երկու հիմնական հարցի պատասխանելու մեջ՝
- Ի՞նչ մասերից է բաղկացած համակարգը:
- Ինչի՞ համար է պատասխանատու այդ մասերից յուրաքանչյուրը:
Մասերի բաժանումը կատարվում է այնպես, որ այդ մասերից յուրաքանչյուրը ունենա մինիմալ չափ, ճժգրիտ սահմանված պարտականություններ և հանարավորինս քիչ փոխազդի մնացած ծրագրի հետ: Կոմպոնենտների առանձնացումից և դրանց միջև փոխահարաբերությունների (ինտերֆեյս) սահմանումից հետո, դրանցից յուրաքանչյուրը կարելի է ծրագրավորել մնացածից գրեթե անկախ (պահպանելով որոշակի տեխնոլոգիական կարգապահություն): Մեծ կարևորություն ունի դասերի հիերարխիայի ճիշտ կառուցումը:ՕԿԾ-մոտեցումներով ստեղծված մեծ համակարգերի հայտնի խնդիրներից մեկը՝ դա այսպես կոչված բազային դասի փխրունության խնդիրն է: Խնդիրը կայանում է նրանում, որ նախագծման հետագա փուլերում՝ երբ դասերի հիերարխիան արդեն կառուցված է և դրա հիմքի վրա արդեն գրվել է բավականին մեծ քանակությամբ կոդ, բազային դասի մեջ փոփոխություն մտցնելը դառնում է գրեթե անհնար: Քանի որ բազային դասը նախագծողին հայտնի չէ, թէ իր նախագծած դասի ժառանգներում այդ դասի պահվածքի փոփոխությունը ինչի է կարող հանգեցնել: