Skip to content

Commit 53d145b

Browse files
committed
feat: create tp03
1 parent 703e7dd commit 53d145b

25 files changed

+5693
-0
lines changed

tp03/README.md

Lines changed: 322 additions & 0 deletions
Large diffs are not rendered by default.

tp03/XP.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Experiência de Desenvolvimento
2+
3+
## Considerações
4+
5+
Ao iniciar o trabalho, Gustavo criou um servidor no Discord com canais organizados para facilitar a comunicação da equipe, incluindo áreas específicas para postagem do enunciado, links do repositório Git e troca de código entre os integrantes.
6+
7+
#### Canal de enunciados
8+
> ![Captura de tela 2025-04-07 194159](https://github.com/user-attachments/assets/b11e5db5-9bb3-44b4-bbdb-c3d38b1f8831)
9+
10+
<br>
11+
12+
#### Divisão das tarefas
13+
> O trabalho foi dividido em 12 tarefas menores, de modo a distribuir de forma justa a carga entre os quatro membros. Cada integrante ficou responsável por concluir, ao menos, três tarefas.
14+
>
15+
> ![Captura de tela 2025-04-07 194215](https://github.com/user-attachments/assets/af1841f4-d5e6-465f-b5f9-7a3e9ccee68f)
16+
> ![Captura de tela 2025-04-07 194231](https://github.com/user-attachments/assets/da631357-8599-4443-9fcf-5778f2a121ae)
17+
> ![image](https://github.com/user-attachments/assets/b0494323-e9c9-46d3-a940-73622f261b53)
18+
19+
<br>
20+
21+
#### Códigos relacionados ao trabalho
22+
> ![Captura de tela 2025-04-07 194249](https://github.com/user-attachments/assets/3fa77278-62af-4038-9ea7-b7899300d484)
23+
24+
<br>
25+
26+
#### Repositório Git
27+
> Mariana criou o repositório do trabalho e, em conjunto com o grupo, estabeleceu um fluxo de trabalho no Git que foi ajustado ao longo do projeto.
28+
>
29+
> - Cada membro trabalhou em uma branch fixa nomeada no padrão `<GitHub-userName>-dev`.
30+
> - Após concluir uma tarefa funcional, os commits eram enviados para a branch `Development`, garantindo a integração contínua entre os desenvolvimentos.
31+
> - Ao término de cada etapa, a branch `Master` recebia apenas versões 100% testadas e funcionais, mantendo-a sempre uma entrega atrás, como uma forma de segurança contra perdas irreversíveis.
32+
>
33+
> ![Captura de tela 2025-04-07 195515](https://github.com/user-attachments/assets/f14d898f-e67d-43a5-8271-a917f45fe40f)
34+
35+
As tarefas também foram organizadas por meio de *issues* no GitHub, onde os membros podiam se designar livremente às atividades, permitindo uma boa visualização do progresso e evitando retrabalho.
36+
37+
Gustavo foi responsável pelo desenvolvimento inicial dos CRUDs e views relacionados às séries, com os arquivos principais criados nos primeiros commits da sua branch. Mais adiante, Felipe e Mariana propuseram melhorias na estrutura de armazenamento e nas buscas de séries, o que levou a uma refatoração de parte do código original. Mariana, além disso, criou a relação 1:N entre séries e episódios utilizando uma Árvore B+, o que possibilitou indexações mais eficientes e maior organização da estrutura interna do sistema.
38+
39+
Já Bruna contribuiu com a visualização dos episódios por temporada, organizando a exibição das informações de maneira mais clara para o usuário. Ela também foi responsável por implementar algumas regras de negócio, como impedir a exclusão de séries que possuíam episódios cadastrados e evitar o cadastro de episódios em séries inexistentes, garantindo maior integridade aos dados do sistema.
40+
41+
Na fase final do desenvolvimento, Gustavo assumiu a implementação da funcionalidade de **listar episódios por série**, onde foi necessário aprimorar o algoritmo de busca. Inicialmente, o sistema retornava apenas o primeiro item encontrado, o que causava confusão em casos de nomes semelhantes como “Friends” e “Friends of Tomorrow”. Mariana solucionou isso criando uma interface de menu para permitir que o usuário selecionasse a série correta:
42+
43+
```java
44+
-------------------------------
45+
Escolha a série:
46+
1. Friends
47+
2. Friends of tomorrow
48+
3. Fri
49+
-------------------------------
50+
1
51+
===============================
52+
Série: Friends
53+
```
54+
55+
Gustavo então aprimorou essa lógica ao adicionar uma verificação: se apenas uma série corresponder à busca, ela é automaticamente selecionada, sem exibir o menu de opções:
56+
57+
```java
58+
===============================
59+
Série: Friends
60+
```
61+
62+
Além dessas melhorias, Mariana também foi responsável por implementar o CRUD completo dos episódios, desenvolvendo todas as funcionalidades de cadastro, leitura, atualização e exclusão. E também colaborou com a escrita do README, juntamente com a Bruna,.
63+
64+
Felipe, por sua vez, teve papel fundamental na fase de testes. Ele foi responsável por testar todas as operações implementadas, garantindo que o sistema estivesse funcionando corretamente em todas as frentes. Além disso, configurou os índices utilizando tanto **Tabela Hash Extensível** quanto **Árvore B+**, um desafio técnico importante que exigiu aprofundamento teórico (📌).
65+
66+
Bruna também introduziu uma pausa interativa (“pressione Enter para voltar”) após a exibição das informações no terminal, evitando que os dados sumissem rapidamente da tela e proporcionando uma experiência de uso mais fluida. Além disso, para melhorar a legibilidade e facilitar a manutenção, ela adicionou JavaDocs em todo o código do projeto, documentando classes, métodos e estruturas com clareza. Ao final do desenvolvimento, Bruna complementou o arquivo README.md, explicando cada classe e seus principais métodos. Por fim, ficou responsável por responder ao checklist do relatório final do trabalho, revisando os critérios exigidos e certificando-se de que todos os pontos haviam sido contemplados.
67+
68+
As maiores dificuldades enfrentadas pela equipe envolveram o uso e entendimento corretos de estruturas como **Hash Extensível** e **Árvore B+**, mas a boa comunicação e o trabalho em grupo permitiram superar esses obstáculos e concluir o projeto com sucesso.
69+
70+
Acreditamos que implementamos com sucesso todas as funcionalidades propostas no trabalho. O maior desafio foi, sem dúvida, entender como trabalhar corretamente com os índices e implementá-los de forma eficaz. No geral, o CRUD em si não apresentou grandes dificuldades, especialmente após estudarmos e seguirmos os exemplos de código fornecidos. Com paciência e colaboração, os resultados esperados foram alcançados.
71+
72+
O trabalho foi uma experiência de grande aprendizado para nós. Aplicar, na prática, os conceitos ensinados teoricamente me permitiu enxergar sua aplicação real. Além disso, integrar esse conhecimento aos meus estudos concomitantes sobre **banco de dados** tornou o processo ainda mais enriquecedor. Apesar dos desafios, especialmente na **abstração de informações sobre árvores** e na **compreensão do impacto dos índices na aplicação**, a experiência foi extremamente valiosa. Saio deste projeto com uma visão mais clara sobre estrutura de dados, organização de sistemas e trabalho em equipe.

tp03/src/Main.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package tp03.src;
2+
3+
import java.util.Scanner;
4+
import tp02.src.controller.*;
5+
6+
/**
7+
* Classe principal do sistema PUCFlix.
8+
*
9+
* Responsável por exibir o menu principal da aplicação e direcionar o usuário
10+
* para os módulos de Séries ou Episódios.
11+
*/
12+
public class Main {
13+
14+
/**
15+
* Método principal da aplicação.
16+
*
17+
* Exibe um menu de opções para o usuário e redireciona para os controladores de
18+
* séries ou episódios
19+
* conforme a escolha do usuário. O programa continua em execução até que a
20+
* opção de saída seja escolhida.
21+
*
22+
* @param args Argumentos passados por linha de comando (não utilizados).
23+
*/
24+
public static void main(String[] args) {
25+
26+
Scanner console;
27+
28+
try {
29+
console = new Scanner(System.in);
30+
int opcao;
31+
do {
32+
33+
System.out.println("\n\n===================================");
34+
System.out.println(" PUCFlix 1.0");
35+
System.out.println("===================================");
36+
System.out.println("Início");
37+
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
38+
System.out.println("1 - Séries");
39+
System.out.println("2 - Episódios");
40+
System.out.println("3 - Ator");
41+
System.out.println("0 - Sair");
42+
System.out.println("===================================");
43+
System.out.print("Opção: ");
44+
try {
45+
opcao = Integer.valueOf(console.nextLine());
46+
} catch (NumberFormatException e) {
47+
opcao = -1;
48+
}
49+
50+
switch (opcao) {
51+
case 1:
52+
(new ControllerSeries()).menu();
53+
break;
54+
case 2:
55+
(new ControllerEpisode()).menu();
56+
break;
57+
case 3:
58+
(new ControllerActor()).menu();
59+
break;
60+
case 0:
61+
break;
62+
default:
63+
System.out.println("\nOpção inválida!");
64+
System.out.println("\n>>> Pressione Enter para voltar <<<");
65+
console.nextLine();
66+
break;
67+
}
68+
69+
} while (opcao != 0);
70+
71+
} catch (Exception e) {
72+
e.printStackTrace();
73+
}
74+
75+
}
76+
77+
}

0 commit comments

Comments
 (0)