Desenvolvimento

Serialização em Linguagem Orientada à Objetos

É usado quando não se precisa usar um banco de dados, as vezes um banco de dados é caro (no sentido de processamento) para um aplicação então usamos serialização. Você fala que uma classe é serializável e usando algum classe da linguagem exporta ela para o disco, seja em XML ou binário, este arquivo gravado no disco será toda a alocação da memória usada pela classe, assim os valores dos atributos são gravados também, o que permite futuramente restaurar a classe na memória do jeito que ela era quando instanciada e populada.

O processo de serialização é bem complicado, pois numa classe usa-se muitos ponteiros e os valores tem que ser buscados e armazenados de uma forma bem organizada, podendo usar até tabelas hash, com chaves e tudo. Além disso a ordem com que os objetos foram instanciados quando a classe foi instanciada também importa.

Geralmente para restaurar os dados você usa a mesma classe que usou para serializar, só que outro método, ela lê o arquivo binário ou texto (XML) e instancia pra você um objeto com os dados igual ao que você tinha antes de serializar.

O nome das classes e modo de fazer serialização depende da linguagem que você está usando.

Eu não sei como funciona a busca, eu acho que não tem, mas já vi que é uma desvantagem porque nunca vi alguma aplicação com serialização com busca de dados: Vamos dizer que você queira buscar por um dado no seu banco de dados de arquivos serializados, vai ter que abrir um a um, instanciar a classe completa, para daí ver se o dado está dentro dela!

Resumindo serialização é como uma foto da classe salva no disco, a vantagem é que se fosse carregar a foto de volta na memória você edita ela e pode tirar outra foto. Para alguma coisa nas fotos terá que pegar todas para ver uma a uma até encontrar!

Algumas observações:
– Se já tiver usando banco de dados em sua aplicação para outras funções é altamente aconselhável que só use ele.
– Se for um arquivo só de configurações da aplicação você pode pensar em usar uma classe que grave e leia arquivos XML, sem necessidade de usar serialização. Normalmente estas classes são bem fáceis de trabalhar.
– Se for algo um pouquinho mais complicado pode usar o SQLite, um SQL que grava em formato texto e é muito leve e única dependencia dele é uma DLL, não precisa nem instalar para que ele rode.
– Em Java existe um recurso chamado ResourceBundle, no qual ele busca textos em arquivos de texto simples, e é ótimo para usar como arquivo de configurações, pois ainda, mesmo com a aplicação compilada, você pode mudá-lo como se ele fosse um arquivo .INI. E ainda o  Resource Bundle é nativo da JRE/JDK Java.  Com ele você dispensa o XML e a serialização.

Estou certo? Dúvidas? Comente utilizando o formulário abaixo.

Até mais…

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s