Oi pessoal, tudo bem?
Estou evoluindo com as aulas sobre classes e heranças e gostaria de entender uma situação aqui que está diferente dos exemplos de aula.
Repliquei os modelos das classes vistos em aula com os mesmos contrutores e métodos. No entanto, quando eu chamo as classes "Admin" e "Docente" no teriminal, tendo como saída os métodos de aprovarEstudante na classe Docente:
class Docente extends User{
constructor(nome, email, dtnascimento, role = 'Docente', ativo){
super(nome, email, dtnascimento, role, ativo)
}
aprovarEstudante(nomeEstudante, statusAPRP){
console.log(
'Olá, ' +this.nome +"\n"
+'Estudante: ' +nomeEstudante +"\n"
+'Status: ' +statusAPRP
)
}
}
const docenteSukys = new Docente('F. Sukys', 'sukys@sukys', '04/02/1649');
console.log(docenteSukys);
//console.log(docenteSukys.exibinfos());
console.log(docenteSukys.aprovarEstudante("Eleutério", 'Reprovado'))
E criarCurso na classe **Admin: **
import User from "./User.js";
class Admin extends User{
constructor(nome, email, dtnascimento, role = 'Admin', ativo){
super(nome, email, dtnascimento, role, ativo)
}
criarCurso(novoCurso, qtdVagas){
console.log('Olá, ' +this.nome +'\n' +'Curso Criado com Sucesso' +'\n'
+'Nome do Curso: ' +novoCurso +'\n'
+'Quantidade de Vagas Completadas: ' +qtdVagas
)
}
}
const adminZeca = new Admin('Zeca', 'zeca@zeca', '20/09/1988')
console.log(adminZeca.criarCurso('Controle no domínio do espaço relativista', '15'))
console.log(adminZeca.exibirInfos())
Em ambos os casos o terminal exibe o conteúdo de exibirInfos que está na classe **User: **
`export default class User {
constructor(nome, email, dtnascimento, role = 'User', ativo = true) {
this.nome = nome;
this.email = email;
this.dtnascimento = dtnascimento;
this.role = role || 'estudante';
this.ativo = ativo || 'false';
}
exibirInfos(){
let mensagemAtivo = 'Não'
let saudacaoMsg = '*** Atenção! Erro ao criar usuário, por favor, procure a Administração do seu curso ***'
if(this.ativo === true){
mensagemAtivo = 'Sim';
saudacaoMsg = '*** Usuário Criado com Sucesso! ***'
}
console.log('Olá, ' +this.nome +'\n' +"email: " +this.email +'\n' +'Data de Nascimento: ' +this.dtnascimento + '\n' +'Usuário está ativo: ' +mensagemAtivo +'\n' +'Permissão de usuário: ' +this.role +'\n' +saudacaoMsg)
}
}
const userRafa = new User('Rafael', 'rafael@rafael.com', '19/07/1984');
//console.log(userRafa);
console.log(userRafa.exibirInfos())
//console.log(User.prototype.isPrototypeOf(userRafa))`
Abaixo o resultado do terminal quando eu invoco a classe Admin, veja que é apresentado o resultado completo do exibirInfos() da classe User que não foi instanciada.
Olá, Rafael
email: rafael@rafael.com
Data de Nascimento: 19/07/1984
Usuário está ativo: Sim
Permissão de usuário: User
*** Usuário Criado com Sucesso! ***
undefined
Docente {
nome: 'F. Sukys',
email: 'sukys@sukys',
dtnascimento: '04/02/1649',
role: 'Docente',
ativo: true
}
Olá, F. Sukys
Estudante: Eleutério
Status: Reprovado
undefined
Nos métodos apliquei algumas lógicas para poder treinar um pouco, mas nada que impactasse a estrutura das classes que foram propostas na aula. De qualquer forma fiquei intrigado e gostaria de saber como faço para ter os resultados somente das classes que foram instanciadas no noterminal.
Obrigado desde já! Abraço!