Skip to content

Trabalho prático da disciplina Orientação a Objetos do curso de Engenharia de Software da Universidade de Brasília.

Notifications You must be signed in to change notification settings

TiagoBalieiro/TP-Orientacao-a-Objetos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabalho-OO-FGA0158

UnB - Universidade de Brasilia
FGA - Faculdade do Gama
OO - Orientação por Objetos
Prof. André Luiz Peron Martins Lanna

:octocat: Integrantes do Projeto

Euller Vasco da Gama Kaiky Pedro Tiago Antunes
Euller Júlio da Silva Kaiky Dourado Mendes de Sousa Pedro Henrique Martins Silva Tiago Antunes Balieiro
231026714 231035277 231029270 231011838

Resumo do Projeto

Objetivo

Desenvolver um sistema de cadastro e gerenciamento de alunos, professores, disciplinas e turmas para a Universidade de Brasília (UnB). O sistema é desenvolvido em Java e utiliza a interface gráfica Swing para facilitar a interação com o usuário.

Funcionalidades Principais

Cadastro de Alunos

  • Gerenciamento das informações dos alunos, incluindo matrícula, nome e dados pessoais.
  • Funcionalidades para adicionar, buscar, atualizar e remover alunos.

Cadastro de Professores

  • Registro e atualização dos dados dos professores, como matrícula, nome e áreas de atuação.
  • Funcionalidades para adicionar, buscar, atualizar e remover professores.

Cadastro de Disciplinas

  • Adição e manutenção das disciplinas oferecidas pela universidade.
  • Armazena informações como código da disciplina e nome.
  • Funcionalidades para adicionar, buscar, atualizar e remover disciplinas.

Cadastro de Turmas

  • Associação de alunos e professores às turmas.
  • Definição da capacidade da turma e matrícula de alunos em turmas específicas.
  • Funcionalidades para cadastrar, buscar, atualizar, remover turmas e imprimir lista de presença.

Exceções

O sistema implementa várias exceções personalizadas para garantir a integridade dos dados e a consistência das operações:

  • CampoEmBrancoException: Lançada quando um campo obrigatório (nome, código, horário) está vazio durante o cadastro ou atualização.
  • DisciplinaNaoAtribuidaException: Lançada quando uma turma não tem uma disciplina ou professor associado.
  • NumeroIncorretoAlunosException: Lançada quando o número de alunos matriculados não corresponde ao esperado.
  • NumeroMaximoAlunosException: Lançada quando a tentativa de adicionar um aluno excede a capacidade máxima da turma.

Processos e Interação

  • Cadastro de Turmas: Permite associar uma turma a uma disciplina e a um professor, além de definir a quantidade de vagas e matricular alunos.
  • Atualização de Turmas: Permite alterar informações da turma, como nome, código, horário e quantidade de vagas. O sistema verifica se as alterações são válidas, atualiza a lista de alunos se necessário e garante que a capacidade da turma não seja excedida.
  • Remoção de Alunos e Turmas: Permite a remoção de alunos de uma turma e a exclusão de turmas do sistema.
  • Impressão de Lista de Presença: Gera uma lista de presença para uma turma específica, exibindo o código da turma, o nome da disciplina, o nome do professor e os alunos matriculados.

Modelagem e Ferramentas

  • UML (Linguagem de Modelagem Unificada): Utilizada para modelar a estrutura e os processos do sistema, garantindo uma organização clara e a integridade do projeto.
  • Trello: Utilizado para o gerenciamento de tarefas e acompanhamento do progresso do desenvolvimento.
  • Lucidchart: Utilizado para a criação de diagramas e visualização dos processos e fluxos de dados.

Interface Gráfica

Desenvolvida em Swing, a interface gráfica proporciona uma interação intuitiva com o sistema, permitindo realizar operações através de menus e diálogos.

Desafios e Soluções

  • Gerenciamento Dinâmico de Vagas: Aumentar ou diminuir a quantidade de vagas nas turmas exige uma gestão eficiente do array de alunos, garantindo que o sistema não quebre ao adicionar ou remover alunos.
  • Validação de Dados: Implementação de verificações rigorosas para garantir que todos os dados estejam corretos e que as operações sejam realizadas de forma consistente.

Features

  • Cadastro de Alunos

  • Cadastro de Professores

  • Cadastro de Disciplinas

  • Cadastro de Turmas

  • Print da Lista de Presença

  • Implementação de Exceções

  • Uso dos conceitos de OO:

  • Encapsulamento

  • Herança

  • Polimorfismo

☕ Como executar o projeto (WINDOWS)

  1. Certifique-se de ter uma versão do Java atualizada e o OpenJDK. Sugiro que caso tenha instalado a versão Java 1.8, desinstale-a e instale uma nova versão com o JDK para evitar instabilidades. Segue o link para instalar a versão mais recente Java/jdk:

    Baixar JDK

  2. Para executar o projeto é bem simples, basta instalar o arquivo TPOO.jar na sua máquina e executá-lo.

  3. Outra forma é executar o arquivo pelo terminal entrando no diretório em que o arquivo .jar se encontra:

    cd C:\Caminho\Para\O\Diretório
    

    substitua C:\Caminho\Para\O\Diretório pelo caminho real onde o arquivo TPOO.jar está. Agora use o comando java -jar TPOO.jar para executar o arquivo .jar.

    java -jar TPOO.jar
    

☕ Como executar o projeto (LINUX-DEBIAN)

  1. Certifique-se de ter uma versão atualizada do Java. Você pode instalar o OpenJDK, que é uma versão open-source do JDK. Para instalar a versão mais recente do OpenJDK, você pode usar o seguinte comando no terminal:
    sudo apt update
    sudo apt install openjdk-17-jdk
    
    Substitua openjdk-17-jdk pelo número da versão desejada, se necessário. Certifique-se de verificar a versão recomendada para o seu projeto.
  2. Instale e execute o arquivo TPOO.jar.
  3. Outra forma é executar o arquivo pelo terminal entrando no diretório em que o arquivo .jar se encontra:
    cd /caminho/para/o/diretório
    
    Substitua /caminho/para/o/diretório pelo caminho real onde o arquivo TPOO.jar está. Agora use o comando java -jar TPOO.jar para executar o arquivo .jar.
    java -jar TPOO.jar
    
    Certifique-se de que o arquivo TPOO.jar tenha permissões de execução. Se necessário, ajuste as permissões com:
    chmod +x TPOO.jar
    

💻 Exemplos de execução

Imagens de funcionamento do programa:

Tela específica de cada cadastro Tela dos CRUDs Tela de preenchimento de dados Tela de sucesso ao cadastrar
Tela específica de cada cadastro Tela dos CRUDs Tela de preenchimento de dados Tela de sucesso ao pesquisar
Tela específica de cada cadastro Tela dos CRUDs Tela de preenchimento de dados Tela de sucesso ao atualizar
Tela específica de cada cadastro Tela dos CRUDs Tela de preenchimento de dados Tela de sucesso ao remover
Tela específica de cada cadastro Tela dos CRUDs Tela de preenchimento de dados Tela de sucesso ao imprimir lista de presença

🛠 Ferramentas

Trello Gerenciamento de projeto

Foi acordado entre os membros da equipe que a modelagem do projeto seria realizada utilizando o Trello. Esta ferramenta foi escolhida para minimizar eventuais erros estruturais e para orientar nosso desenvolvimento. Além disso, o quadro do Trello foi atualizado conforme as necessidades do projeto ao longo do seu desenvolvimento. Confira o quadro do Trello desenvolvido na imagem 1 a seguir.

Imagem 1: Quadro de Gerenciamento de Projeto no Trello
Ref.: autoria própria. (Desenvolvido em Trello)

Lucidchart Modelagem

Como foi definido no cenário, foi acordado entre os membros a modelagem do projeto utilizando a Linguagem de Modelagem Unificada (UML) para a minimalização de eventuais erros estruturais, além de guiar nosso desenvolvimento. Somado a isso, vale ressaltar que o artefato Diagrama de Classes UML desenvolvido foi atualizado conforme a necessidade durante o desenvolvimento do projeto. Confira o artefato UML desenvolvido na imagem 2 a seguir.

Imagem 2: artefato Diagrama de Classes UML
ABRIR UML
Ref.: autoria própria. (Desenvolvido em Lucidchart)

About

Trabalho prático da disciplina Orientação a Objetos do curso de Engenharia de Software da Universidade de Brasília.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages