Explicação detalhada das classes e processos:¶
-
Usuário (abstract)
-
Classe base para todos os usuários (Aluno, Monitor, Professor).
-
Atributos comuns: id, nome, email, senhaHash.
-
Métodos básicos: autenticar (login), editarPerfil.
2 Alunos¶
-
Herda de Usuario.
-
Pode solicitar agendamento com monitores.
-
Visualiza monitorias disponíveis.
-
Envia mensagens para monitores.
3. Monitor¶
-
Herda de Usuario.
-
Pode aceitar agendamentos solicitados pelos alunos.
-
Registra presença do aluno na monitoria.
-
Responde mensagens recebidas.
4. Professor¶
-
Herda de Usuario.
-
Cadastra disciplinas no sistema.
-
Atribui monitores às disciplinas.
-
Gera relatórios com dados das monitorias.
5. Disciplina¶
-
Representa uma matéria ou curso com monitoria.
-
Possui nome, código, descrição.
-
Relaciona-se com vários monitores.
-
Permite obter agendamentos para acompanhamento.
6. Agendamento¶
-
Marca um encontro entre aluno e monitor.
-
Atributos: dataHora do atendimento, status (Pendente, Confirmado, Cancelado).
-
Pode ser confirmado ou cancelado.
7. Presença¶
-
Registra se o aluno compareceu ao atendimento.
-
Atributo “presente” (sim/não).
-
Associada a um agendamento.
8. Mensagem¶
-
Comunicação entre usuários (aluno, monitor, professor).
-
Guarda conteúdo e data/hora.
-
Tem remetente e destinatário (do tipo Usuario).
-
Pode ser enviada e respondida.
9. Relatório¶
-
Criado pelo professor para avaliar o desempenho das monitorias.
-
Contém dados resumidos de agendamentos e presenças.
-
Ajuda na gestão e tomada de decisão.
-
Relacionamentos principais:
-
Herança: Aluno, Monitor e Professor são tipos de Usuario.
Associações:¶
-
Aluno faz vários Agendamentos com Monitores.
-
Monitor gerencia os Agendamentos.
-
Presença é ligada a um Agendamento.
-
Professor cadastra várias Disciplinas.
-
Disciplina tem vários Monitores.
-
Mensagem conecta dois Usuarios.
-
Relatório pertence a um Professor.
Mapa mental Monitoria¶
@startuml
skinparam monochrome true
skinparam ArrowColor #000000
skinparam NodeFontSize 14
' Classe abstrata base para os usuários do sistema
abstract class Usuario {
- id:
- nome:
- email:
- senhaHash:
+ autenticar(email, senha):
+ editarPerfil()
}
' Subclasses específicas de usuários
class Aluno {
+ solicitarAgendamento(dataHora, monitor): Agendamento
+ visualizarMonitorias(filtros): List<Disciplina>
+ enviarMensagem(destinatario, conteudo): Mensagem
}
class Monitor {
+ aceitarAgendamento(agendamento: Agendamento)
+ registrarPresenca(aluno: Aluno, agendamento: Agendamento)
+ responderMensagem(mensagem: Mensagem)
}
class Professor {
+ cadastrarDisciplina(nome, codigo, descricao): Disciplina
+ atribuirMonitor(disciplina: Disciplina, monitor: Monitor)
+ gerarRelatorio(disciplina: Disciplina): Relatorio
}
' Classes principais do domínio
class Disciplina {
- id:
- nome:
- codigo:
- descricao:
+ listarMonitores(): List<Monitor>
+ obterAgendamentos(): List<Agendamento>
}
class Agendamento {
- id:
- dataHora: DateTime
- status:
+ confirmar()
+ cancelar()
}
class Presenca {
- id:
- presente:
+ registrar(presente: Boolean)
}
class Mensagem {
- id:
- conteudo:
- dataHora: DateTime
+ enviar()
+ responder(conteudo: String)
}
class Relatorio {
- id:
- conteudo: String
+ gerarResumo()
}
' Herança
Usuario <|-- Aluno
Usuario <|-- Monitor
Usuario <|-- Professor
' Relacionamentos
Aluno "1" -- "0..*" Agendamento : solicita >
Monitor "1" -- "0..*" Agendamento : gerencia >
Agendamento "1" -- "0..1" Presenca : registra >
Professor "1" -- "0..*" Disciplina : cadastra >
Disciplina "1" -- "0..*" Monitor : possui >
Mensagem "1" -- "1" Usuario : remetente >
Mensagem "1" -- "1" Usuario : destinatario >
Relatorio "1" -- "1" Professor : pertence >
@enduml