Actividade

  1. Resolução do enunciado da aula.

Enunciado da Aula

Descrição das funcionalidades das classes  MenuCommandForm  e  Display


A aplicação bancária tem uma entidade que não foi descrita no enunciado da aula prática 4: Bank.

Um banco tem zero ou mais contas e zero ou mais titulares e é identificado univocamente pelo seu nome. A classe Bank deve disponibilizar métodos que permitam guardar/remover contas e titulares. Do ponto de vista de um banco, tanto as contas como os titulares são identificados por um número. Quando é iniciada a aplicação bancária e se pretende criar um banco novo, é necessário indicar o nome do banco que se pretende criar. Adicionalmente, as funcionalidades que um banco deve disponibilizar são as seguintes:

  • Criação de contas: recebe o valor do saldo inicial e devolve o número da nova conta.
  • Remoção de contas: recebe o número da conta a apagar. A conta só é apagada se o seu saldo total for igual a zero. Caso não seja possível apagar a conta, é apresentada uma mensagem justificativa.
  • Criação de titulares: recebe o nome do titular e número de identificação.
  • Remoção de titulares: recebe o número de identificação do titular.

As classes Bank, SavingsAccount, BankAccount e Holder devem disponibilizar um menu com as operações disponíveis para cada caso. Esta funcionalidade deve ser concretizada pelo método menu definido em cada classe. Por exemplo, as operações disponíveis no menu de um banco são:

  • Criar um titular;
  • Criar uma conta;
  • Listar todos os titulares ordenados por ordem crescente de nome ou de número;
  • Listar todas as contas;
  • Aceder às operações de um determinado titular;
  • Aceder às operações de uma determinada conta;
  • Alterar a data actual.

Esta funcionalidade (de mostrar as operações disponíveis para uma dada entidade e executar a opção escolhida pelo utilizador) deve ser concretizada pelas classes Menu e Command. A classe Command representa uma operação genérica que pode ser executada sobre uma dada entidade. Cada comando sabe o título da operação que representa (é utilizado no menu para indicar os títulos das operações disponíveis). Esta classe abstracta define o método abstracto execute que executa a operação. Cada operação a disponibilizar num menu terá que ser concretizada numa sua subclasse. A classe Menu recebe um vector de comandos e mostra os títulos destes comandos por forma a que os utilizadores saibam as operações disponíveis. Cabe ainda ao menu executar o comando correspondente à opção escolhida pelo utilizador.

Por forma a centralizar (e assim permitir a reutilização de código) a interface com o utilizador, existe uma classe, chamada Form , que é responsável pela interacção com o utilizador. Esta classe fornece métodos que permitem escrever uma cadeia de caracteres (prompt) e ler um determinado tipo de dados inserido pelo utilizador consoante a instância de  Input escolhida. Esta classe concentra todas as operações de leitura de dados (fornecidos pelo utilizador). Os dados lidos são validados, i.e., apenas são aceites dados correctos. No caso do utilizador inserir dados inválidos, é pedida a respectiva reintrodução. Estas classes permitem ainda ler os dados a introduzir pelo utilizador via ficheiro e escrever o resultado da execução da aplicação num ficheiro em vez de escrever no standard output. O nome destes ficheiros são indicados através das propriedades in e out . Caso não sejam indicadas, são utilizados os valores por omissão (standard input e standard output).

Ver com atenção o código da aplicacão bancária ( ap7.jar ) já com a introdução da interacção com o utilizador.

Trabalho Proposto

Trabalho proposto:

  • Terminar o comando ChangeName.
  • Alterar o comando ShowAccounts, por forma a escrever uma conta por linha, em que os dois primeiros caracteres da linha são dois caracteres '\t' e os restantes são os retornados pelo método toString da classe BankAccount.
  • Finalmente, acrescentar duas novas funcionalidades à aplicação bancária:
    • A primeira permite adicionar um titular a uma conta;
    • A segunda permite a remoção de um titular, com a ressalva de que se uma conta só tiver um titular então esse titular não poderá ser removido.

No caso de conseguir fazer o trabalho proposto durante a aula, pode começar a realizar o exercício de programação 4  que é para entregar até ao início da próxima aula de laboratório e qe está relacionado com o trabalho feito nesta aula.