Sobes.tech
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) հարաբերությունները:
  • Ավելացվողություն: Նոր ֆունկցիոնալություն հեշտ է ավելացնել՝ ստեղծելով նոր ենթակլասներ՝ առանց առկա կոդը փոխելու:
  • Պոլիմորֆիզմ: Հնարավորություն է տարբեր դասերի օբյեկտները նույն կերպ մշակել՝ հղում կատարելով հիմնական դասին:

Անբարենպաստություններ՝

  • Կոշտ կապ: Փոփոխությունները հիմնական դասում կարող են ազդել բոլոր ենթակլասների վրա:
  • "Դիամանտ" խնդիր (բազմաթիվ ժառանգության դեպքում): Անորոշություն՝ երբ երկու դասեր ժառանգում են ընդհանուր նախնին:
  • Ավելորդ օգտագործում: Կարող է հանգեցնել բարդ և դժվարին հասկանալուն և պահպանելուն կառուցվածքների։