Projeto Detalhado - LPI-AgendaContatos/Progressive GitHub Wiki

Aqui será explicado a construção do projeto passo a passo, além de considerações, problemas e demais.

Passo 001

Classes, métodos, atributos e relações

  1. Inicialmente iniciamos listando os requisitos funcionais do sistema, que brevemente se tornarão métodos. (TESTE\Main);

  2. Depois identificamos quais serão os objetos\classes e seus respectivos atributos.

A mais importante entre as classes é o 'Contato' (e é o mais complexo também). Além dos atributos básicos como nome, e-mail e etc. A classe é composta por vários 'Telefones', então é criado uma classe para representá-los e os mesmos são acrescentados ao 'Contato" por meio de uma lista {O uso da lista foi escolhido, mesmo que complexamente, pois não precisa de um tamanho pré-definido, como o vetor. Mas poderia ser substituída por uma fila ou pilha}. Cada classe 'Telefone' por sua vez, é composto por um 'Tipo'. Mesmo que seja único, decidi representá-lo através de uma classe, já que tardiamente deveremos listá-las. E por último, haverá uma classe 'Agenda' onde será agrupado, os contatos, tipos e grupos, por meio de listas. Tais listas serão usadas para a exibição dos "CRUDS".

3 Após a listagem dos atributos, iniciamos a construção dos métodos.

{Uma boa prática de programação é delegar diferentes objetivos para as classes. Sendo assim, as classes citadas acima serão usadas somente para modelar os objetos, e as ações terão suas próprias classes. Tudo isso será melhor organizado, ou "empacotado", ao adotar o modelo MVC. Então, por enquanto, as ações dividirão espaço com a entrada e saída de dados, já que a interface ainda não foi incrementada}. O primeiro método é a criação de um 'Contato'. Lemos os atributos, passamos como parâmetro e inicializamos a classe e já adicionamos objeto á lista. Ainda não é possível adicionar mais de um telefone por contato. Mas as listas de exibições já estão prontas.

ERROS, OBSERVAÇÕES E PRÓXIMOS PASSOS:

  • A interação feita por Interactive Console

  • É de vital importância a criação do digrama de classes para o acompanhamento do desenvolvimento do programa.

  • Estudar sobre interfaces é crucial.

  • Ter, ao menos, conhecimentos básicos sobre o modelo organizacional MVC.

  • Incrementar o método de pesquisa.

  • Adicionar mais de um telefone por contato.

  • Preparar a interação por grupos

  • Tratamento de exceções.

  • Iniciar as interfaces e fazer as devidas alterações necessárias.

Passo 002

** Editar e excluir, grupos e tratamento de exceções**

  1. Implementar os métodos de editar e excluir contatos

Descrição

  1. Promover interação dos contatos por grupos.

Como ainda não foram implementadas a interfaces, deve-se interrogar o usuário a respeito se o contato a ser salvo pertence ou não a um grupo. Logo devemos ler o nome do grupo a qual se faz parte. E da mesma forma em que se fez com 'Contato', 'Telefone' e 'Tipo', iniciaremos a classe 'Grupo' com a variável lida e adicionaremos a lista de grupos na agenda e em contatos. {Mais tardiamente, se faz necessário listar os contatos que fazem parte dos respectivos grupos e não somente os grupos a qual o usuário faz parte, como está até agora. Deve se dar uma atenção especial a esta área quando implementar a interface.}

  1. Implementar tratamento de exceções.

O tratamento de exceções, como o próprio nome diz, tem como função identificar e cuidar de possíveis erros ou resultados não esperados. Então, é bom listarmos tais critérios que devem receber o tratamento. Um exemplo clássico de exceção que observamos no sistema de agenda é, ao listar os contatos, tipo e grupos (CRUD), verificar se a lista está vazia, e caso esteja, enviar uma mensagem ao usuário. Pode haver também, outros casos que precisarão ser tratados, cabe a cada programador identifica-los.

ERROS, OBSERVAÇÕES E PRÓXIMOS PASSOS:

  • A interação feita por Interactive Console.
  • Incrementar o método de pesquisa.
  • Verificar se grupo ou tipo já existe.
  • Listar os contatos que fazem parte de cada grupo.
  • Iniciar as interfaces e fazer as devidas alterações necessárias.

Passo 03

** Modelo MVC, verificar existência e Interfaces **