aprendo a dividir as responsabilidades e um pouco sobre polimorfismo, class e metodos abstratos