Sobes.tech
Junior — Middle

Akými metódami je možné realizovať podobnú funkcionalitu bez použitia dedičnosti v dátových štruktúrach?

sobes.tech AI

Odpoveď od AI

Namiesto dedičnosti v dátových štruktúrach je možné použiť kompozíciu a protokoly (rozhrania). Napríklad v Swift sa často používajú protokoly na opis správania a konkrétne štruktúry tieto protokoly implementujú, čím sa vyhýba pevnej hierarchii dedičnosti.

Tiež je možné použiť vzor delegovania, keď jedna štruktúra obsahuje odkaz na inú, ktorá implementuje potrebnú funkcionalitu.

Príklad v Swift s použitím protokolu a kompozície:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Kreslíme kruh")
    }
}

struct Square: Drawable {
    func draw() {
        print("Kreslíme štvoruholník")
    }
}

struct Canvas {
    var shape: Drawable
    func render() {
        shape.draw()
    }
}

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Vypíše: Kreslíme kruh

Týmto spôsobom je funkcionalita realizovaná prostredníctvom kompozície a protokolov, nie prostredníctvom dedičnosti.