tutorial adaptado para usar clases e interfaces