Sobes.tech
Junior — Middle

Կարող եք բացատրել միավորային (օձի) տիպավորման սկզբունքը և ինչպես է այն կիրառվում ծրագրավորման մեջ։

sobes.tech AI

Պատասխան AI-ից

Դաք տիպավորում (duck typing) ծրագրավորման մեջ մի կոնցեպտ է, որտեղ օբյեկտի տիպը որոշվում է ոչ նրա դասով կամ ժառանգությամբ, այլ որոշակի մեթոդների և հատկությունների առկայությամբ:

Բառը "Եթե ինչ-որ բան տեսք ունի որպես տաք, ինչպես տաք է նավարկում և ինչպես տաք է գոռում, ապա դա տաք է" արտահայտությունը արտացոլում է էությունը՝ կարևոր չէ օբյեկտի տիպը, այլ նրա վարքը:

C#-ում դա չի հանդիսանում ներքին մեխանիզմ, ինչպես դինամիկ լեզուներում, բայց կարող է իմիտացիա լինել ինտերֆեյսների կամ դինամիկ տիպի (dynamic) միջոցով: Օրինակ, եթե օբյեկտը իրականացնում է անհրաժեշտ մեթոդները, այն կարող է օգտագործվել առանց խիստ տիպային ստուգման:

Դինամիկ օրինակով:

void MakeItQuack(dynamic duck) {
    duck.Quack();
}

class Duck {
    public void Quack() {
        Console.WriteLine("Կվակ!");
    }
}

MakeItQuack(new Duck());

Այստեղ կարևոր է, որ փոխանցվող օբյեկտը ունենա Quack մեթոդը, հակառակ դեպքում ժամանակի ընթացքում սխալ կլինի։