Sobes.tech
Junior — Middle

É permitido criar uma classe portadora de outra classe na programação orientada a objetos?

sobes.tech IA

Resposta da IA

Criar uma classe envolvente (wrapper) para outra classe na programação orientada a objetos é permitido e frequentemente utilizado. Essa classe serve para encapsular, ampliar ou modificar o comportamento da classe original sem alterar seu código.

Por exemplo, uma classe envolvente pode adicionar logging, caching ou controle de acesso aos métodos da classe interna. Isso corresponde ao princípio de composição e ao padrão "Decorador".

Exemplo em Swift (iOS):

class Service {
    func fetchData() -> String {
        return "Dados"
    }
}

class ServiceWrapper {
    private let service: Service

    init(service: Service) {
        self.service = service
    }

    func fetchData() -> String {
        print("Log de chamada ao fetchData")
        return service.fetchData()
    }
}

let service = Service()
let wrappedService = ServiceWrapper(service: service)
print(wrappedService.fetchData())

Assim, a classe envolvente ajuda a ampliar a funcionalidade sem herança nem alteração da classe original.