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

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