Oi Gustavo, tudo bem?
Interfaces em C# são um tipo de contrato que define um conjunto de métodos e propriedades que uma classe deve implementar. No caso da interface "IAvaliavel", ela define que qualquer classe que a implemente deve ter o método "AdicionarNota(Avaliacao nota)" e a propriedade "Media".
Vamos ver como isso funciona na prática:
void AdicionarNota(Avaliacao nota);
: Este é um método que deve ser implementado na classe. Ele não tem corpo na interface, apenas a assinatura. A classe que implementa a interface deve fornecer a implementação desse método. No caso do seu curso, esse método provavelmente adiciona uma nota a um objeto (como um álbum ou uma música).
double Media { get; }
: Esta é uma propriedade que deve ser implementada na classe. Ela só tem um getter, o que significa que você pode obter o valor, mas não pode definir o valor diretamente. A classe que implementa a interface deve fornecer a implementação dessa propriedade. No contexto do seu curso, essa propriedade provavelmente calcula e retorna a média das notas de um objeto.
Por exemplo, se tivermos uma classe "Album" que implementa a interface "IAvaliavel", ela pode parecer algo assim:
public class Album : IAvaliavel
{
private List<Avaliacao> notas = new List<Avaliacao>();
public void AdicionarNota(Avaliacao nota)
{
notas.Add(nota);
}
public double Media
{
get
{
return notas.Average(nota => nota.Valor);
}
}
}
Neste exemplo, a classe "Album" implementa a interface "IAvaliavel" adicionando notas a uma lista interna e calculando a média dessas notas quando a propriedade "Media" é acessada.
Um abraço e bons estudos.