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

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

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

Video: Տարբերությունը ժառանգության և բեռնարկղերի միջև
Video: "Բնապահպանություն" Սոց․ Հոլովակ | "Ecology" PSA 2024, Նոյեմբեր
Anonim

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

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

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

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

Ի՞նչ է կոնտեյներությունը:

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

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

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

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