A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Persistência de objetos em arquivo texto usando Java

Apresentações semelhantes


Apresentação em tema: "Persistência de objetos em arquivo texto usando Java"— Transcrição da apresentação:

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


Carregar ppt "Persistência de objetos em arquivo texto usando Java"

Apresentações semelhantes


Anúncios Google