fork download
using static System.Console;
using System.Collections.Generic;

public class Program {
	public static void Main(string[] args) {
        var vizu = new Aluno() {
            Nome = "Joao Vizu",
            Ra = "N300361",
            NotaB1 = 7.5M,
            NotaB2 = 10M
        };
        var lais = new AlunoTecnologo() {
            Nome = "Lais Silva",
            Ra = "545454",
            NotaB1 = 7.5M,
            NotaB2 = 10M,
            NotaPim = 9M
        };
        var dao = new AlunoDao();
        dao.Adicionar(vizu);
        dao.Adicionar(lais);
        foreach (Aluno aluno in dao.Listar()) WriteLine($"Nome: {aluno.Nome}\tNotaB1: {aluno.NotaB1}\tNotaB2: {aluno.NotaB2}\tMedia: {aluno.Media}");
    }
}

public class Aluno {
    public string Nome { get; set; }
    public string Ra { get; set; }
    public decimal NotaB1 { get; set; }
    public decimal NotaB2 { get; set; }
    public virtual decimal Media => (NotaB1 + NotaB2) / 2;
}

 public class AlunoTecnologo : Aluno {
    public decimal NotaPim { get; set; }
    public override decimal Media => NotaPim * 0.2m + base.Media;
}

public class AlunoDao {
    private List<Aluno> alunos;
    public AlunoDao() => alunos = new List<Aluno>();
    public void Adicionar(Aluno aluno) => alunos.Add(aluno);
    public List<Aluno> Listar() => new List<Aluno>(alunos);
}

//https://pt.stackoverflow.com/q/404829/101
Success #stdin #stdout 0.02s 16644KB
stdin
Standard input is empty
stdout
Nome: Joao Vizu	NotaB1: 7.5	NotaB2: 10	Media: 8.75
Nome: Lais Silva	NotaB1: 7.5	NotaB2: 10	Media: 10.55