Não entendi o por que usar ela e como usar kkk
Não entendi o por que usar ela e como usar kkk
Oi, Victor, tudo bem?
A delegation é um padrão de design que permite reutilizar código ao invés de escrevê-lo novamente. No exemplo que você mencionou, a classe Conta está implementando a interface Autenticavel e precisa delegar a responsabilidade de autenticação para o titular da conta, que é uma instância da classe Cliente.
No exemplo dado, a implementação da autenticação na classe Conta é feita através do método autentica(senha: Int). Esse método simplesmente chama o método autentica(senha: Int) do titular da conta. Ou seja, a classe Conta não precisa se preocupar em implementar a lógica de autenticação, ela apenas delega essa responsabilidade para o titular.
A delegação de propriedade no Kotlin permite simplificar ainda mais esse código. Em vez de declarar a propriedade titular como uma variável var, podemos declará-la como uma propriedade val e utilizar a sintaxe : Autenticavel by titular. Isso significa que a implementação da interface Autenticavel será delegada para a propriedade titular.
Dessa forma, não precisamos mais escrever o método autentica(senha: Int) na classe Conta, pois a implementação já está sendo delegada para o titular.
abstract class Conta(
val titular: Cliente,
val numero: Int
) : Autenticavel by titular
Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!