Srs,
Ao realizar esse curso me deparei com uma dúvida. Quando usar classe abstrata e quando usar a herança ?
Então criei um exemplo do meu dia a dia e tentei aplicar com o conhecimento do curso, mas estou com dúvida se apliquei corretamente o conceito de herança e de classe abstrata.
Class Pessoa
Class Aluno extends Pessoa
Class abstract Status // Define se o aluno está matriculado, trancado,desistente, etc..
Class AlunoTurma extends Aluno implements status
Poderiam me ajudar ?
Segue meu código:
void main() { AlunoTurma pessoa1 = AlunoTurma( nome: "Virginio", sexo: "M", idade: 47, ra: "016001", codturma: "10º-DIREITO-2023/2"); pessoa1.isMaioridade(); pessoa1.imprimeDados(); pessoa1.imprimeTurmaAluno(); pessoa1.alterarStatus(2); }
class Pessoa { int idade; String nome; String sexo; bool? maiorIdade;
//Construtor Pessoa( {required String this.nome, required String this.sexo, required int this.idade, bool? maiorIdade});
void isMaioridade() { print("$nome-$sexo-$idade"); maiorIdade = 18 >= idade; print(maiorIdade); }
void imprimeDados() { print("Meu nome é $nome com sexo $sexo, idade $idade "); } }
bool isOld(int idade) { if (idade > 60) { return true; } else if (idade < 60) { return false; } else { return false; } }
class Aluno extends Pessoa { String ra;
Aluno({required nome, required sexo, required idade, required this.ra}) : super(idade: idade, nome: nome, sexo: sexo);
void imprimeDadosAluno() { print("Meu nome é $nome com sexo $sexo, idade $idade e matricula $ra"); } }
class AlunoTurma extends Aluno implements Status { String codturma; AlunoTurma( {required nome, required sexo, required idade, required ra, required this.codturma}) : super(idade: idade, nome: nome, sexo: sexo, ra: ra);
void imprimeTurmaAluno() { print("O aluno $nome - $ra esta na turma $codturma"); }
@override alterarStatus(int codStatus) { if (codStatus == 1) { print("Pre-matriculado"); } else if (codStatus == 2) { print("Matriculado"); } else if (codStatus == 4) { print("Trancado"); } } }
abstract class Status {
void alterarStatus(int codStatus);
}