1
resposta

Minha solução para o diagrama do mód.03 do curso 'JavaScript: programação Orientada a Objetos'

class User { constructor(nome, email, nascimento, role, ativo = true) { this.nome = nome this.email = email this.nascimento = nascimento this.role = role || 'estudante' this.ativo = ativo this.cursosMatriculados = []; }

static criarPerfil (nome, email, nascimento, role = 'estudante', ativo = true) {
    console.log(`O(a) estudante ${nome} foi cadastrado com sucesso!`)
    return User.listaUsu.push({nome: nome, email: email, nascimento: nascimento, role: role, ativo: ativo});
}

apagarPerfil() {
    return `O(a) estudante ${this.nome} teve seu perfil deletado pelo e-mail ${this.email}.`;
}

exibirInfos() {
    return `${this.nome}, ${this.email}.`;
}

static exibirListaCursos () {
    console.log(`Cursos disponíveis: ${User.listaCursos.join(', ')}.`);
}

matricularEmCurso(nomeCurso) {
    if(!User.listaCursos.includes(nomeCurso)) {
        console.log(`O curso ${nomeCurso} não existe em nossa plataforma. Temos tais cursos disponíveis: ${User.listaCursos.join(', ')}.`)
    } else {
        console.log(`O(a) estudante ${this.nome} foi matriculado no curso ${nomeCurso} com sucesso!`)
        return this.cursosMatriculados.push(nomeCurso);
    }
}

exibirCursosMatriculados() {
   return this.cursosMatriculados.length === 0 ? `O(a) estudante ${this.nome} não está matriculado(a) em algum curso.` : `O(a) estudante ${this.nome} está matriculado(a) em: ${this.cursosMatriculados.join(', ')}.`;
}

}

User.listaCursos = []; User.listaUsu = [];

class Docente extends User { constructor(nome, email, nascimento, role = 'docente', ativo = true) { super(nome, email, nascimento, role, ativo) }

static criarPerfilDocente(nome, email, nascimento, role, ativo) {
    console.log(`O(a) professor(a) ${nome} foi cadastrado com sucesso!`);
    return Docente.listaProfs.push({nome: nome, email: email, nascimento:nascimento, role:role, ativo:ativo});
}

avaliarEstudante (nomeEstudante, estudanteAprovado) {
    const findEstudante = User.listaUsu.find(estudante => estudante.nome === nomeEstudante);

    if (findEstudante === undefined){
        console.log('O(a) estudante não foi encontrado.')
    } else if(estudanteAprovado === false) {
        console.log(`O estudante ${findEstudante.nome} foi reprovado.`);
    } else if (estudanteAprovado === true){
        console.log(`O(a) estudante ${findEstudante.nome} foi aprovado.`);
    } 
}

}

Docente.listaProfs = [];

class Admin extends User { constructor(nome, email, nascimento, role = 'admin', ativo = true) { super(nome, email, nascimento, role, ativo) }

criarCurso(nomeCurso) {
    User.listaCursos.push(nomeCurso);
    return `O curso ${nomeCurso} foi criado com sucesso!`;
}

excluirCurso(nomeCurso) {
    const index = User.listaCursos.indexOf(nomeCurso);
    if(index !== -1) {
        User.listaCursos.splice(index, 1);
        return `O curso ${nomeCurso} foi removido com sucesso!`;
    } else {
        console.log('Nenhum curso com esse nome foi encontrado.');
    }
}

desativarPerfil(nome) {
    const findDocente = Docente.listaProfs.find(docente => docente.nome === nome);
    const findUser = User.listaUsu.find(user => user.nome === nome);
    if(findUser !== undefined) {
        findUser.ativo = false;
        return `Perfil do usuário ${nome} foi desativado com sucesso.`;
    } else if (findDocente !== undefined){
        findDocente.ativo = false;
        return `Perfil do(a) docente ${nome} foi desativado com sucesso.`;
    } else {
        console.log('Usuário não encontrado.');
    }
}

}

const admin01 = new Admin ('Lúcia', 'l@l.com', '2023-04-05'); console.log(admin01.criarCurso('NodeJS')); console.log(admin01.criarCurso('JavaScript')); console.log(admin01.criarCurso('Bootstrap')); console.log(admin01.excluirCurso('Bootstrap'));

const user01 = new User('Théo', 't@t.com', '2025-03-01'); console.log(user01.apagarPerfil()); console.log(user01.exibirInfos()); console.log(User.exibirListaCursos()); console.log(user01.matricularEmCurso('NodeJS')); console.log(user01.matricularEmCurso('JavaScript')); console.log(user01.exibirCursosMatriculados()); const user02 = new User('Tomas', 't0@t0.com', '2024-03-01'); console.log(User.criarPerfil('Tomas', 't0@t0.com', '2024-03-01'));

const docente01 = new Docente('Rodrigo', 'r@r.com', '2010-03-01'); console.log(Docente.criarPerfilDocente('Rodrigo', 'r@r.com', '2010-03-01')); console.log(docente01.avaliarEstudante('Tomas', false));

console.log(admin01.desativarPerfil('Tomas'));

1 resposta

Olá, João! Tudo bem?

Você fez um ótimo trabalho resolvendo o desafio! Seu código está correto, então te parabenizo pelo seu esforço e dedicação!

A título de informação, quando precisar compartilhar códigos aqui no fórum é interessante dar uma boa visibilidade para ele. Para isso, você pode seguir os passos que compartilho a seguir. Sem a formatação correta, o código acaba ficando escondido e de difícil visualização.

OBS: no seu caso, algumas partes do código ficaram formatadas devido à endentação do código, mas atrapalha um pouco na visualização do código.

  1. Selecione o trecho com o código no seu post;

  2. Aqui no fórum, procure o ícone </>. É a sétima opção na aba superior do nosso editor de texto;

  3. Clique no ícone comentado acima, certificando-se que está com todo o trecho de código selecionado.

Para confirmar se está tudo certo, você pode pré-visualizar seu post clicando no penúltimo ícone da esquerda para a direita, ou também usando o atalho F9.

No mais, se precisar de ajuda ou tiver alguma dúvida relacionada aos seus estudos, o fórum é o melhor lugar para te ajudar.

Bons estudos!