Oi, Eduardo! Como vai?
Sua implementação ficou bem organizada ao separar Conta, ContaCorrente, ContaPoupanca e Transacao, usando herança e método abstrato com CalcularSaldo().
Um ponto de atenção é que, na ContaPoupanca, o cálculo atual retorna apenas 10% do valor das transações; se a ideia for aplicar um rendimento de 10% sobre o saldo, o cálculo poderia somar o saldo com esse rendimento. Uma dica interessante para o futuro é criar um construtor em Transacao para preencher Valor e Tipo ao criar o objeto:
internal class Transacao
{
public double Valor { get; }
public string Tipo { get; }
public Transacao(double valor, string tipo)
{
Valor = valor;
Tipo = tipo;
}
}
Esse código permite criar uma transação já com valor e tipo definidos, evitando objetos incompletos.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!