Actividade
- Resolução do enunciado da aula.
Objectivos
Utilização do diagrama de classes da linguagem UML para modelar um problema. Exemplificar a utilização de iteradores e de ordenação de contentores.
Enunciado da Aula
Leia cuidadosamente o seguinte enunciado, correspondente a uma aplicação bancária para gestão de contas.A classe
Holder representa cada um dos titulares de uma conta bancária. Um titular tem um nome é identificado univocamente por um número de cliente. Tem métodos que permitem aceder ao seu estado interno, e.g., obter o nome, assim como para alterar esse estado (apenas o nome). Dois titulares são iguais se os seus números de cliente forem iguais. A classe
Holder deve oferecer a possibilidade de ordenar titulares por ordem crescente do seu número cliente ou por nome. Para tal, é necessário definir dois tipos de comparadores distintos (que em Java são representados por classes que implementam a interface
java.util.Comparator). A relação do cliente com o banco traduz-se na existência de uma conta bancária (a não confundir com as contas que gerem directamente o dinheiro, e.g., conta à ordem).
- Depositar/levantar um determinado valor;
- Visualizar o saldo corrente ou total;
- Listar os seus titulares;
- Listar os seus depósitos a prazo;
- Adicionar um depósito a prazo;
- Verificar se pode ser removida.
- Depósito/levantamento de quantias (são lançadas excepções do tipo
InvalidDeposit ou
InvalidWithdrawal
, caso não seja possível realizar depósitos ou levantamentos, respectivamente);
- Consulta do saldo actual;
- Consulta do número;
- Actualização do saldo, considerando taxas de juros (caso estes já tenham vencido).
As contas à ordem têm taxas de juro de 0% e não permitem, nem levantamentos de valores superiores ao saldo, nem depósitos de quantias negativas (são lançadas excepções em ambos os casos). As contas poupança não permitem nem depósitos nem levantamentos de dinheiro (é lançada uma excepção) e caracterizam-se por uma dada taxa de juro e uma duração em dias (à qual o juro diz respeito) que são indicadas no momento de criação da conta poupança.
Quando os juros de uma conta poupança vencem, o saldo e o valor dos juros são automaticamente depositados na conta bancária associada à conta poupança, que deve ser encerrada e removida. Esta funcionalidade (depositar o saldo e juros na conta e fechar a conta poupança) é da resposabilidade da conta poupança. Não é necessário detectar vencimentos de contas poupança.
Enunciado da Aula
Leia cuidadosamente o seguinte enunciado, correspondente a uma aplicação bancária para gestão de contas.A classe
Holder representa cada um dos titulares de uma conta bancária. Um titular tem um nome é identificado univocamente por um número de cliente. Tem métodos que permitem aceder ao seu estado interno, e.g., obter o nome, assim como para alterar esse estado (apenas o nome). Dois titulares são iguais se os seus números de cliente forem iguais. A classe
Holder deve oferecer a possibilidade de ordenar titulares por ordem crescente do seu número cliente ou por nome. Para tal, é necessário definir dois tipos de comparadores distintos (que em Java são representados por classes que implementam a interface
java.util.Comparator). A relação do cliente com o banco traduz-se na existência de uma conta bancária (a não confundir com as contas que gerem directamente o dinheiro, e.g., conta à ordem).
- Depositar/levantar um determinado valor;
- Visualizar o saldo corrente ou total;
- Listar os seus titulares;
- Listar os seus depósitos a prazo;
- Adicionar um depósito a prazo;
- Verificar se pode ser removida.
- Depósito/levantamento de quantias (são lançadas excepções do tipo
InvalidDeposit ou
InvalidWithdrawal
, caso não seja possível realizar depósitos ou levantamentos, respectivamente);
- Consulta do saldo actual;
- Consulta do número;
- Actualização do saldo, considerando taxas de juros (caso estes já tenham vencido).
As contas à ordem têm taxas de juro de 0% e não permitem, nem levantamentos de valores superiores ao saldo, nem depósitos de quantias negativas (são lançadas excepções em ambos os casos). As contas poupança não permitem nem depósitos nem levantamentos de dinheiro (é lançada uma excepção) e caracterizam-se por uma dada taxa de juro e uma duração em dias (à qual o juro diz respeito) que são indicadas no momento de criação da conta poupança.
Quando os juros de uma conta poupança vencem, o saldo e o valor dos juros são automaticamente depositados na conta bancária associada à conta poupança, que deve ser encerrada e removida. Esta funcionalidade (depositar o saldo e juros na conta e fechar a conta poupança) é da resposabilidade da conta poupança. Não é necessário detectar vencimentos de contas poupança.
Trabalho Proposto
Represente num diagrama de classes UML as relações existentes entre as classes necessárias para realizar as funcionalidades descritas acima, incluindo os métodos e campos das classes. Sugere-se que comece por analisar as dependências entre as entidades
BankAccount e
Holder. Depois, relacione as entidades
DepositAccount,
Demand
Account,
SavingsAccount e
BankAccount.
Após ter realizado o diagrama UML, pode ver o arquivo
bank.jar (contém as classes que realizam a quase totalidade da aplicação bancária). Implemente os métodos incompletos:
- getBalance (da classe BankAccount);
-
withdraw (da classe
Demand
Account);
-
close (da classe
SavingsAccount).
A classe App (disponibilizada com a aplicação bancária) ilustra a utilização de contentores, iteradores e comparadores.