Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAlana Lince Alterado mais de 10 anos atrás
1
Persistência de objetos em arquivo texto usando Java
Alcides Calsavara
2
Objeto em arquivo Um arquivo para cada objeto e um objeto para cada arquivo O arquivo contém o estado do objeto Cada arquivo deve ter um nome único O estado de um objeto é composto de todos os seus atributos e ligações com outros objetos
3
Interface do cliente O cliente que "cria" um objeto primeiramente cria-o em memória, define seu estado e em seguida torna-o persistente, invocando um método para esse fim (por exemplo, save) O cliente que "reinstancia" o objeto primeiramente cria-o em memória com estado indefinido e em seguida restaura seu estado persistente, invocando um método para esse fim (por exemplo, restore)
4
Encapsulamento Cada atributo e ligação de um objeto somente deve ser escrito e lido do arquivo pela correspondente classe Cada classe deve implementar um método para ler (por exemplo, restore_state) e outro para escrever (por exemplo, save_state) todos os atributos e associações que define
5
Mecanismo baseado em herança
Toda classe de objetos persistentes deve ser derivada de uma classe que implementa a interface do cliente (por exemplo, PO, com os métodos save e restore) O método save da classe PO invoca o método save_state (definido em PO e sobrecarregado em cada classe da hierarquia) O método restore da classe PO invoca o método restore_state (definido em PO e sobrecarregado em cada classe da hierarquia)
6
Mecanismo baseado em herança (continuação)
O método save_state de uma classe persistente invoca o método save_state de sua superclasse e escreve o seu estado no arquivo O método restore_state de uma classe persistente invoca o método restore_state de sua superclasse e lê o seu estado do arquivo
7
Persistência de atributos em arquivo texto
Cada atributo do objeto é representado como uma substring no arquivo Se o atributo não for do tipo String, uma conversão de tipos é necessária (tanto na escrita como na leitura) Cada substring correspondente a um atributo é finalizada com um marcador (por exemplo, "**")
8
Bibliotecas de Java java.lang.* java.io.*
9
Exemplo de escrita try {
FileOutputStream fos = new FileOutputStream("Joao.os"); FileDescriptor fd = fos.getFD(); FileWriter fw = new FileWriter (fd); fw.write("Joao da Silva"); fw.flush(); fw.close(); } catch (IOException e) { System.out.println(e); }
10
Exemplo de leitura try {
FileInputStream fis = new FileInputStream("Joao.os"); FileDescriptor fd = fis.getFD( ); FileReader fr = new FileReader (fd); char[ ] buffer = new char[1024]; fr.read(buffer); String os = new String(buffer); System.out.println(os); fr.close( ); } catch (IOException e) { System.out.println(e); }
11
Identificação Única de Objetos
Alcides Calsavara
12
Propriedades OID : Object Identity
Designa um objeto de maneira única (não ambígua) no sistema Constante durante toda a vida do objeto Permite integridade de referência entre objetos Independe dos atributos do objeto (não é chave-primária)
13
Propriedades Gerada automaticamente pelo sistema quando um objeto é criado O instante de criação do objeto é o próprio instante de criação da OID Não é reutilizável Não contém informação sobre a localização corrente do objeto Pode indicar local e instante de criação
14
Propriedades É um nome que deve ser resolvido (por um servidor de nomes) para descobrir a localização do objeto (o serviço de persistência que armazena o objeto)
15
Implementação Numeração seqüencial class OID {
private static long contador; private long id; OID( ) { contador ++; id = contador; } ... }
16
Implementação (cont.) Local e instante de criação class OID {
private int hora; private int minuto; private int segundo; private int dia; private int mes; private int ano; String IP; public: OID( ) { ... } }
17
Classe ObjectState contém todo o estado de um objeto
oferece operações básicas para empacotar/desempacotar atributos de tipos básicos (int, long, char, float, ...) objeto de outra classe deve oferecer operações para se empacotar/desempacotar em uma instância de ObjectState. Exemplo: classe Cor
18
Exemplo classe Veiculo: classe Carro: classe Caminhao: marca : String
ano : int cor : { azul, amarelo, verde} classe Carro: numero de passageiros : int classe Caminhao: capacidade de carga : float
19
Exemplo (cont.) classe Pessoa: associações: nome : String
sexo: boolean associações: classe Pessoa e classe Veiculo: uma pessoa é proprietária de n veículos classe Pessoa e classe Carro: um carro transporta n pessoas Devem haver operações para ligar/desligar dois objetos
20
Exemplo (cont.) classes Veiculo e Pessoa são subclasses de PO
cada classe define as operações save_state e restore_state cada classe possui dois construtores: criação: gera OID e chama save_state reencarnação: usa OID fornecida como parâmetro para chamar restore_state o destrutor da classe deve chamar save_state
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.