Projeto da disciplina
Disciplina: Programação Orientada a Objetos Período: 2024.2
Resumo
Todos os projetos devem ser desenvolvidos em Java utilizando o paradigma de Programação Orientada a Objetos. Os alunos devem implementar uma aplicação completa que aborde todos os conceitos e técnicas ensinadas ao longo da disciplina, incluindo exceções, interface gráfica em Java Swing, persistência de dados em arquivos e padrões de projeto.
O projeto poderá ser feito individualmente ou em equipes de até 3 pessoas.
Requisitos funcionais
Orientação a objetos
O projeto deve utilizar adequadamente os conceitos de orientação a objetos, como:
- Classes e Objetos
- Composição
- Herança
- Polimorfismo
- Encapsulamento
- Interfaces e Classes Abstratas
Não utilize conceitos que você julgue não serem necessários no seu código. Entretanto, você deverá justificar quando um conceito for utilizado sem necessidade ou não for utilizado quando houver necessidade.
Exceções
O projeto deve incluir tratamento de exceções para gerenciar erros e situações imprevistas de forma robusta.
Exceções customizadas devem ser implementadas quando necessário.
Interface gráfica
A aplicação deve possuir uma interface gráfica desenvolvida em Java Swing que permita a interação do usuário com o sistema.
- A interface deve incluir, no mínimo, 3 telas diferentes (ex.: tela de login, tela principal, tela de detalhes).
- Devem ser utilizados componentes gráficos como botões, menus, caixas de texto, tabelas, etc.
Persistência de dados
O projeto deve implementar persistência de dados utilizando arquivos.
- Dados devem ser salvos e carregados a partir de arquivos (texto ou binários).
- O sistema deve ser capaz de operar com dados persistidos entre execuções.
Requisitos não-funcionais
Qualidade do Código
O código deve ser bem estruturado e seguir boas práticas de programação.
- Nomes de variáveis, métodos e classes devem ser significativos e seguir convenções de nomenclatura.
Documentação
O projeto deve incluir documentação que descreva:
- A estrutura do sistema (pode usar diagrama de classes para auxilar, mas não é obrigatório).
- Como configurar e executar o projeto.
- Descrição das funcionalidades principais.
Entregáveis
Os itens a seguir devem ser mantidos em um repositório do GitHub.
- Código-fonte do projeto.
- Arquivos de dados utilizados para persistência.
- Envie toda a estrutura de diretórios para o seu jar encontrar os arquivos persistidos
- Popule previamente os arquivos com dados para demonstração
- Documentação completa (README, diagramas, etc.).
- Capturas de tela da interface gráfica em funcionamento.
- Arquivo JAR do projeto - a aplicação deverá estar contida em um arquivo JAR, que deverá executar, abrindo a classe principal.
Prazos
- Data de entrega: 10/09/2024
- Apresentação do projeto: 16 e 17/09/2024
Apresentação
Na apresentação, você deverá demonstrar a aplicação em funcionamento e estar preparado para explicar sobre o funcionamento de qualquer parte de sua aplicação.
As apresentações acontecerão no horário da aula: 13:30 às 17:00 dos dias 16 e 17/09/2024.
As apresentações terão a duração máxima de 20 minutos.
Para poderem ser apresentados, os projetos deverão ser enviados previamente, no dia 10/09/2024. Não cumprir essa etapa acarretará uma penalidade de -20 pontos na nota da apresentação.
Critérios de Avaliação
- Funcionalidade: (35 pontos) O projeto atende a todos os requisitos funcionais especificados.
- Qualidade do Código: (15 pontos) O código está bem organizado, é legível e segue boas práticas.
- Documentação: (10 pontos) A documentação está completa e ajuda a entender o projeto e seu funcionamento.
- Usabilidade: (5 pontos) A interface gráfica é intuitiva e facilita a interação do usuário com o sistema.
- Tratamento de Exceções: (5 pontos) O sistema trata adequadamente as exceções e erros.
- Apresentaçao: (30 pontos) As funcionalidades do sistema foram bem demonstradas e as dúvidas sobre a implementação foram respondidas. Não enviar o projeto antes da apresentação acarretará uma penalidade de -20 pontos na nota da apresentação.
Uso de Threads: O projeto utiliza threads de maneira apropriada e eficaz.