Տարբերությունը ժառանգության և կազմի միջև

Տարբերությունը ժառանգության և կազմի միջև
Տարբերությունը ժառանգության և կազմի միջև

Video: Տարբերությունը ժառանգության և կազմի միջև

Video: Տարբերությունը ժառանգության և կազմի միջև
Video: «Մոսկվայում ինձ նախնական ախտորոշում արեցին, այնուհետև հերքեցին» Ժիրայր Ոսկանյան 2024, Նոյեմբեր
Anonim

Ժառանգություն ընդդեմ կազմի

Ժառանգությունը և կազմը երկու կարևոր հասկացություններ են, որոնք հայտնաբերվել են OOP-ում (Օբյեկտ ուղղված ծրագրավորում): Պարզ ասած, և՛ Կազմը, և՛ Ժառանգությունը վերաբերում են դասին լրացուցիչ հատկությունների կամ վարքագծի տրամադրմանը: Ժառանգությունը դասի կարողությունն է՝ ժառանգելու հատկություններ և վարքագիծ մայր դասից՝ ընդլայնելով այն: Մյուս կողմից, Composition-ը դասի կարողությունն է՝ որպես անդամի տվյալներ պարունակելու տարբեր դասերի օբյեկտներ։

Ի՞նչ է ժառանգությունը:

Ինչպես նշվեց վերևում, ժառանգությունը դասի կարողությունն է ժառանգելու հատկություններ և վարքագիծ մայր դասից՝ ընդլայնելով այն:Ժառանգությունը, ըստ էության, ապահովում է կոդի վերօգտագործում՝ թույլ տալով ընդլայնել գոյություն ունեցող դասի հատկությունները և վարքագիծը նոր սահմանված դասի կողմից: Եթե A դասը ընդարձակում է B, ապա B դասը կոչվում է ծնող դաս (կամ գերդաս), իսկ A դասը կոչվում է երեխա դաս (կամ ստացված դաս/ենթադաս): Այս օրինակի սցենարում A դասը կժառանգի սուպեր դասի (B) բոլոր հանրային և պաշտպանված ատրիբուտներն ու մեթոդները: Ենթադասը կարող է կամայականորեն փոխարինել (մեթոդներին տրամադրել նոր կամ ընդլայնված գործառույթներ) ծնող դասից ժառանգված վարքագիծը։

Ժառանգությունը ներկայացնում է «is-a» հարաբերությունը OOP-ում: Սա ըստ էության նշանակում է, որ A-ն նաև B է: Այլ կերպ ասած, B-ն կարող է լինել որոշակի իրական աշխարհի էության ընդհանուր նկարագրությամբ դաս, բայց A-ն սահմանում է որոշակի մասնագիտացում: Իրական աշխարհի ծրագրավորման խնդրի դեպքում Անձի դասը կարող է ընդլայնվել՝ ստեղծելու Employee դասը: Սա կոչվում է մասնագիտացում: Բայց դուք կարող եք նաև նախ ստեղծել Employee դասը, այնուհետև այն ընդհանրացնել նաև Անձի դասին (i.ե. ընդհանրացում): Այս օրինակում Աշխատակիցը կունենա Անձի բոլոր հատկություններն ու վարքագիծը (այսինքն՝ Աշխատակիցը նույնպես Անձ է) և կարող է պարունակել նաև որոշ լրացուցիչ գործառույթներ (այսպես՝ անձը աշխատող չէ):

Ի՞նչ է կոմպոզիցիան?

Composition-ը դասի կարողությունն է՝ որպես անդամի տվյալներ պարունակելու տարբեր դասերի օբյեկտներ։ Օրինակ՝ A դասը կարող է որպես անդամ պարունակել B դասի օբյեկտ: Այստեղ B-ում սահմանված բոլոր հանրային մեթոդները (կամ գործառույթները) կարող են իրականացվել A դասի ներսում: A դասը դառնում է կոնտեյներ, իսկ B դասը՝ պարունակվող դաս: Կազմը կոչվում է նաև կոնտեյներ: Այս օրինակում կարելի է ասել, որ A դասը կազմված է B դասից: OOP-ում Composition-ը ներկայացնում է «has-a» հարաբերություն: Կարևոր է նշել, որ, թեև կոնտեյները մուտք ունի պարունակվող դասի բոլոր հանրային մեթոդները գործարկելու համար, այն ի վիճակի չէ փոփոխել կամ տրամադրել լրացուցիչ գործառույթ: Երբ խոսքը վերաբերում է իրական աշխարհի ծրագրավորման խնդրին, TextBox դասի օբյեկտը կարող է պարունակվել դասի Form-ում, և այդպիսով կարելի է ասել, որ Form-ը պարունակում է TextBox (կամ այլապես, Form-ը կազմված է TextBox-ից):

Ո՞րն է տարբերությունը ժառանգության և կազմի միջև:

Չնայած ժառանգությունը և կոմպոզիցիան երկու OOP հասկացություններ են, դրանք միանգամայն տարբեր են նրանով, թե ինչն է թույլ տալիս ծրագրավորողին հասնել: Ժառանգությունը դասի կարողությունն է ժառանգելու հատկություններ և վարքագիծ մայր դասից՝ ընդլայնելով այն, մինչդեռ Composition-ը դասի կարողությունն է՝ որպես անդամի տվյալներ պարունակելու տարբեր դասերի օբյեկտներ։ Եթե դասը ընդլայնվում է, այն ժառանգում է բոլոր հանրային և պաշտպանված հատկությունները/վարքագիծը, և այդ վարքագծերը կարող են անտեսվել ենթադասի կողմից: Բայց եթե դասը պարունակվում է մեկ այլ դասում, ապա կոնտեյները չի ստանում պարունակվողին վարքագիծ փոխելու կամ ավելացնելու հնարավորություն: Ժառանգությունը ներկայացնում է «is-a» հարաբերությունը OOP-ում, մինչդեռ կոմպոզիցիան ներկայացնում է «has-a» հարաբերությունը:

Խորհուրդ ենք տալիս: