pets/README.md

5.5 KiB

Programação Modular

Trabalho Prático 1

Todo o código do programa deve estar organizado em um pacote cujo nome fica a escolha do grupo. Dentro desse pacote deve ficar uma classe chamada Programa, que possui o método main e inicializa o programa. Dentro do pacote também deve haver mais 3 pacotes: modelo, persistencia e visao. O código pode ser implementado em qualquer linguagem orientada a objetos.

OBS.: neste documento é descrito como exemplo um programa de venda de produtos. Vocês não podem implementar esse programa. Pensem em outra aplicação.


Pacote modelo

Deve ser criada uma classe abstrata chamada Entidade, que possui um atributo chamado id (inteiro). Esse atributo serve como identificador. Devem ser implementados os métodos construtores, getters e setters e o método toString (ou equivalente na linguagem escolhida).

Neste pacote devem ser criadas, no mínimo, 3 subclasses de Entidade (por exemplo: Cliente, Produto, etc.). Uma delas deve ser uma transação (por exemplo: Venda, Locação, Manutenção, Consulta, etc.). Cada subclasse de Entidade deve possuir um relacionamento de associação com, pelo menos, uma outra (por exemplo, venda possui um atributo do tipo cliente).

Na classe da entidade de transação, deve haver uma composição 1 para muitos (1..*) com outra entidade, gerando uma outra classe intermediária (uma quarta classe) que pode possuir atributos próprios. Por exemplo, uma venda pode ter um ou mais itens, portanto, uma classe ItemVenda, que possui como atributos o Produto e a quantidade que foi vendida deste. A classe da transação deve possuir métodos para adicionar e remover objetos dessa classe intermediária.

Pacote persistencia

Neste pacote, deve haver uma classe chamada Persistente, que possui uma atributos que é uma lista de Entidades. Esta classe deve possuir um construtor que inicializa a lista e os métodos para a inserção, alteração, exclusão de objetos das subclasses de Entidade. Também deve haver um método que recebe um id e retorna o objeto na lista que possui este id. Por fim, também deve existir o método toString (ou equivalente) que retorna a String resultante dos métodos toString dos objetos armazenados na lista.

Também deve ser criada uma classe que possui um atributo do tipo Persistente para cada entidade do programa (a classe intermediária da composição não conta aqui). Essa classe representa o banco de dados do programa e nela devem ser implementados um método construtor sem entradas e os métodos getters e setters dos atributos.

Por fim, deve ser criada uma classe de Exceção própria que é lançada quando houver buscas por entidades no banco de dados com id inexistente.

Pacote visao

O programa deve apresentar uma interface em linha de comando. Ao executar o programa a interface deve apresentar um menu com uma opção para sair do programa e uma opção para cada entidade (a classe intermediária da composição não conta aqui).

Ao selecionar uma das opções que representa uma entidade, deve aparecer um outro menu com uma opção para voltar ao menu inicial e opções para inserir, alterar, apagar, visualizar a partir do id e visualizar todos. Os objetivos devem ser armazenados na classe que representa o banco de dados.

No caso da entidade que é a transação, as opções de inserir e alterar devem permitir adicionar ou remover objetos da classe intermediária. Por exemplo, em uma venda, deve ser possível adicionar e remover produtos, solicitando do usuário o id do produto e a quantidade comprada. Isso deve gerar objetos ItemVenda, que são adicionados/removidos da Venda em questão.

O programa deve realizar tratamentos de exceção para dados digitados incorretamente (por exemplo, letras onde devem haver apenas números) e buscas por id inexistentes.


Trabalho Prático 2

Todo o código do programa deve estar organizado em um pacote cujo nome fica à escolha do grupo.
Dentro desse pacote deve ficar uma classe chamada Programa, que possui o método main e inicializa o programa.

Dentro do pacote também deve haver mais 3 pacotes: modelo, persistencia e visao.
O código pode ser implementado em qualquer linguagem orientada a objetos.
Todos os problemas do TP1 devem ser corrigidos para o TP2, exceto na camada de visão, que será substituída por completo.


Pacote modelo

  • Não há alterações em relação ao TP1.

Pacote persistencia

  • A classe Persistente deve ser alterada para virar uma classe genérica, que trabalha com o tipo T, que deve ser uma filha de Entidade.
  • Todos os atributos e métodos da classe Persistente devem se ajustar para trabalhar com o tipo T.
  • Deve ser criada uma classe de Exceção própria que é lançada quando houver buscas por entidades no banco de dados com ID inexistente.

Pacote visao

  • A interface com o usuário por meio de linha de comando do sistema deve ser substituída por uma interface gráfica.
  • Deve haver uma janela principal e uma ou mais janelas/painéis para cada entidade.
    • A partir da janela principal deve ser possível navegar até as demais janelas/painéis.
  • O painel/janela de cada entidade deve possuir:
    • Uma tabela que permite visualizar todos os dados existentes da entidade.
    • Um painel ou janela para cadastrar, apagar, editar e buscar registros.
  • O programa deve realizar tratamentos de exceção para:
    • Dados digitados incorretamente (por exemplo, letras onde devem haver apenas números).
    • Buscas por ID inexistentes.