1. Vamos usar as classes ObjectOutputStream e ObjectInputStream junto com classes genéricas
para criar um banco de objetos que vai poder ser usado com diferentes tipos de objeto. O único
requisito para um objeto poder ser salvo em um banco vai ser implementar a interface Elemento:
public interface Elemento extends java.io.Serializable {
String chave();
}Construa uma classe genérica BancoObjetos<TELEM extends Elemento> para armazenar objetos.
O construtor de BancoObjetos deve receber uma string dando o diretório onde os objetos serão
gravados e lidos. Caso o diretório não exista ele deve ser criado. Use a classe File para isso,
em particular os métodos exists e mkdirs.
Cada elemento do banco deve ficar armazenado em um arquivo separado nesse diretório, com o nome do arquivo é
formado pela chave mais a extensão “.objeto”. BancoObjetos precisa de dois métodos, ler e gravar.
O método ler recebe uma chave e retorna o objeto correspondente àquela chave (ou null se ele não existir).
O método gravar recebe um objeto e o grava no banco, e retorna true se a gravação foi bem sucedida ou
false se ocorreu algum problema na gravação.
Para instanciar as classes ObjectOutputStream e ObjectInputStream você também vai precisar instanciar
FileOutputStream e FileInputStream.
A classe ContaCorrente abaixo exercita o banco de objetos:
class ContaCorrente implements Elemento {
private int numero;
private String correntista;
private double saldo;
public ContaCorrente(int numero, String correntista, double saldo) {
this.numero = numero;
this.correntista = correntista;
this.saldo = saldo;
}
public void deposita(double valor) {
this.saldo += valor;
}
public void retira(double valor) {
this.saldo -= valor;
}
public void transfere(ContaCorrente destino, double valor) {
this.retira(valor);
destino.deposita(valor);
}
public String chave() {
return "" + numero;
}
public String toString() {
return numero + ", " + correntista + ", " + saldo;
}
public static void main(String[] args) throws java.io.IOException {
BancoObjetos<ContaCorrente> bd = new BancoObjetos<ContaCorrente>("banco");
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
while(true) {
System.out.print("Entre um número de conta: ");
int numero = Integer.parseInt(in.readLine());
if(numero == 0) break;
ContaCorrente cc = bd.ler("" + numero);
if(cc == null) {
System.out.print("Entre um correntista: ");
String correntista = in.readLine();
System.out.print("Entre um saldo: ");
double saldo = Double.parseDouble(in.readLine());
bd.gravar(new ContaCorrente(numero, correntista, saldo));
} else {
System.out.println(cc.toString());
}
}
}
}2. Adicione memória ao modelo da calculadora. A calculadora tem quatro operações
envolvendo a memória: limpa, que zera a memória, msoma, que adiciona o valor do display à memória,
msub, que subtrai o valor do display da memória, e recupera, que substitui o que está no display
pelo valor da memória. O funcionamento da memória é o mesmo não importa qual o estado da calculadora.
3. Adicione uma operação trocaSinal ao modelo da calculadora do exercício anterior, que inverte o sinal
do que está no display (negativo para positivo, positivo para negativo).
Última Atualização: 2016-05-18 10:58