Bem-vindo(a) ao Desafio Prático de POO! 🚀
Este desafio tem como objetivo avaliar seus conhecimentos práticos em Programação Orientada a Objetos utilizando a linguagem Java. Você deverá modelar e implementar um mini-sistema de Gestão Educacional seguindo rigorosamente o Diagrama de Classes UML fornecido.
- Criar classes e instanciar objetos.
- Utilizar Encapsulamento (modificadores de acesso, getters e setters).
- Aplicar Herança (classes abstratas e concretas).
- Implementar Interfaces (contratos).
- Trabalhar com Enums.
- Estabelecer associações entre objetos (
1:1e1:N).
Você foi encarregado de construir o núcleo de classes de um sistema escolar. Abaixo está o Diagrama de Classes UML que ditará a arquitetura da sua implementação.
Dica: Preste bastante atenção aos multiplicadores de associação, modificadores de acesso ( + public, - private ) e aos tipos das classes.
classDiagram
class Autenticavel {
<<interface>>
+realizarLogin() boolean
}
class Pessoa {
<<abstract>>
-String nome
-String email
-Endereco endereco
+exibirDetalhes()* void
}
class Professor {
-String especialidade
-double salario
+exibirDetalhes() void
}
class Aluno {
-String matricula
+exibirDetalhes() void
}
class Endereco {
-String rua
-String cidade
-String cep
}
class Curso {
-String nome
-Modalidade modalidade
-Professor professorResponsavel
-List~Aluno~ alunos
+adicionarAluno(Aluno aluno) void
+listarAlunos() void
}
class Modalidade {
<<enumeration>>
PRESENCIAL
EAD
HIBRIDO
}
Pessoa <|-- Professor : herda
Pessoa <|-- Aluno : herda
Autenticavel <|.. Professor : implementa
Pessoa "1" *-- "1" Endereco : possui
Curso "1" o-- "1" Professor : coordenado por
Curso "1" o-- "*" Aluno : matriculados
- Enum
Modalidade: Deve conter as constantesPRESENCIAL,EADeHIBRIDO. - Interface
Autenticavel: Deve definir a assinatura do métodorealizarLogin(). - Classe Abstrata
Pessoa:
- Deve conter os atributos encapsulados
nome,emaile um objetoEndereco(Associação 1:1). - Deve possuir um método abstrato
exibirDetalhes().
- Classes
AlunoeProfessor:
- Ambas devem herdar de
Pessoae implementar o métodoexibirDetalhes()com comportamentos específicos. - Apenas o
Professordeve implementar a interfaceAutenticavel(simulando um login com retornotruegenérico).
- Classe
Curso:
- Deve conter uma Associação 1:1 com
Professor(responsável pelo curso). - Deve conter uma Associação 1:N com
Aluno(lista de alunos matriculados). - O método
adicionarAluno()deve inserir o aluno na lista do curso.
Siga os passos abaixo para iniciar e entregar a sua solução:
No canto superior direito desta página, clique no botão Fork. Isso criará uma cópia deste repositório na sua própria conta do GitHub.
Abra o seu terminal (ou Git Bash) e faça o clone do repositório que agora está na sua conta:
git clone https://github.com/SEU_USUARIO/desafio-tecnico-poo.git
Abra o projeto na sua IDE favorita (IntelliJ, Eclipse, VS Code) e crie os pacotes e classes necessários.
- Opcional (Extra): Crie uma classe
App(se já não houver) com o métodomainpara instanciar os objetos e testar se os relacionamentos estão funcionando no console.
Após finalizar e testar seu código, envie as alterações para o seu repositório no GitHub:
git add .
git commit -m "feat: implementa entidades e relacionamentos UML"
git push origin main
- Volte para a página do seu repositório no GitHub.
- Clique na aba Pull Requests e em seguida no botão New pull request.
- Certifique-se de que a
base repositoryé o repositório original (o meu) e ohead repositoryé o seu fork. - Clique em Create pull request.
@alexandresouzajr para que eu seja notificado e possa avaliar o seu código.
Boa sorte! O foco deste desafio não é a lógica complexa, mas sim a correta estruturação e o uso adequado dos pilares da POO. 👨💻👩💻