Junior
Ի՞նչ է ժառանգությունը օբյեկտային ծրագրավորման (OOP)-ում։
sobes.tech AI
Պատասխան AI-ից
Մեխանիզմ, որը թույլ է տալիս ստեղծել նոր դասեր (նույնականներ) առանձին (հայրերի) հիման վրա, յուրացնելով նրանց հատկությունները և մեթոդները: Սա նպաստում է կոդի կրկնվող օգտագործմանը և դասերի հիերարխիայի կազմակերպմանը:
Հիմնական հասկացությունները՝
- Հայրական դաս (Հիմնական դաս, Սուպերկլասս): Դաս, որը ժառանգում է հատկություններ և մեթոդներ:
- Երեխայի դաս (Ներածական դաս, Պոդկլասս): Դաս, որը ժառանգում է հատկություններ և մեթոդներ հայրական դասից:
- Ելքային տվյալներ:
- Երեխայի դասը ժառանգում է բոլոր հանրային և պաշտպանված դաշտերը և մեթոդները հայրական դասից: Անձնական անդամները անմիջապես հասանելի չեն երեխայի դասում:
- Երեխայի դասը կարող է ավելացնել իր սեփական դաշտերը և մեթոդները:
- Երեխայի դասը կարող է վերագրել (փոխել իրականացմանը) ժառանգած մեթոդները հայրական դասից (պոլիմորֆիզմ):
Python-ում օրինակ՝
class Animal:
# Կենդանիների հիմնական դաս
def __init__(self, name):
self.name = name
def speak(self):
# Ընդհանուր մեթոդ կենդանիների ձայնների համար
pass
class Dog(Animal):
# Շուների ենթակլաս, ժառանգում է Animal-ից
def __init__(self, name, breed):
super().__init__(name) # Հրավիրում է հայրական դասի կոնստրուկտորը
self.breed = breed
def speak(self):
# Վերագրում է speak մեթոդը շների համար
print(f"{self.name} ասում է: Woof!")
class Cat(Animal):
# Մկների ենթակլաս, ժառանգում է Animal-ից
def speak(self):
# Վերագրում է speak մեթոդը մկների համար
print(f"{self.name} ասում է: Meow!")
# Օգտագործում է ժառանգությունը
my_dog = Dog("Buddy", "Labrador")
my_cat = Cat("Whiskers")
my_dog.speak() # Արտածում՝ Buddy ասում է: Woof!
my_cat.speak() # Արտածում՝ Whiskers ասում է: Meow!
print(my_dog.name) # Արտածում՝ Buddy
print(my_dog.breed) # Արտածում՝ Labrador
Տեսակները ժառանգության (կախված ծրագրավորման լեզվից)
- Միայնակ ժառանգություն: Դասը կարող է ժառանգել միայն մեկ հայրական դասից:
- Բազմաթիվ ժառանգություն: Դասը կարող է ժառանգել միաժամանակ մի քանի հայրական դասերից:
Առավելություններ՝
- Կոդի կրկնություն խուսափում: Ընդհանուր հատկությունների և մեթոդների փոխանցում բազային դասին՝ կրկնօրինակում խուսափելու համար:
- Դասերի հիերարխիա: Դասերը կազմակերպված են տրամաբանական կառուցվածքում, որը արտացոլում է "նման է" (is-a) հարաբերությունները:
- Ավելացվողություն: Նոր ֆունկցիոնալություն հեշտ է ավելացնել՝ ստեղծելով նոր ենթակլասներ՝ առանց առկա կոդը փոխելու:
- Պոլիմորֆիզմ: Հնարավորություն է տարբեր դասերի օբյեկտները նույն կերպ մշակել՝ հղում կատարելով հիմնական դասին:
Անբարենպաստություններ՝
- Կոշտ կապ: Փոփոխությունները հիմնական դասում կարող են ազդել բոլոր ենթակլասների վրա:
- "Դիամանտ" խնդիր (բազմաթիվ ժառանգության դեպքում): Անորոշություն՝ երբ երկու դասեր ժառանգում են ընդհանուր նախնին:
- Ավելորդ օգտագործում: Կարող է հանգեցնել բարդ և դժվարին հասկանալուն և պահպանելուն կառուցվածքների։