Junior — Middle
Ինչ մեթոդներով կարելի է իրականացնել նման գործառույթ առանց ժառանգության օգտագործման տվյալների կառուցվածքներում?
sobes.tech AI
Պատասխան AI-ից
Տվյալների կառուցվածքներում ժառանգության փոխարեն կարելի է օգտագործել կոմպոզիցիա և պրոտոկոլներ (ինտերֆեյսներ): Օրինակ, Swift-ում հաճախ օգտագործվում են պրոտոկոլներ վարքագիծը նկարագրելու համար, իսկ կոնկրետ կառուցվածքները իրականացնում են այդ պրոտոկոլները, ինչը թույլ է տալիս խուսափել ժառանգության խիստ հիերարխիայից:
Նույնպես կարելի է օգտագործել դելեգացիայի օրինակ, երբ մի կառուցվածք պարունակում է մյուսի հղում, որը իրականացնում է անհրաժեշտ ֆունկցիոնալությունը:
Swift-ում պրոտոկոլ և կոմպոզիցիայի օգտագործմամբ օրինակ՝
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Նկարում ենք շրջան")
}
}
struct Square: Drawable {
func draw() {
print("Նկարում ենք քառակուսի")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Արդյունք՝ Նկարում ենք շրջան
Այս կերպ, ֆունկցիոնալությունը իրականացնում է կոմպոզիցիա և պրոտոկոլներ, ոչ թե ժառանգություն: