Sobes.tech
Junior — Middle

Quais métodos podem ser usados para implementar uma funcionalidade semelhante sem usar herança em estruturas de dados?

sobes.tech IA

Resposta da IA

Em vez de herança em estruturas de dados, pode usar composição e protocolos (interfaces). Por exemplo, em Swift, frequentemente usam-se protocolos para descrever comportamentos, e estruturas concretas implementam esses protocolos, o que evita uma hierarquia rígida de herança.

Também pode usar o padrão de delegação, onde uma estrutura contém uma referência a outra que implementa a funcionalidade necessária.

Exemplo em Swift usando protocolo e composição:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Desenhar um círculo")
    }
}

struct Square: Drawable {
    func draw() {
        print("Desenhar um quadrado")
    }
}

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

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Vai mostrar: Desenhar um círculo

Desta forma, a funcionalidade é implementada através de composição e protocolos, e não através de herança.