Gerenciando dados em uma aplicação Windows sem usar banco de dados
Quando precisamos armazenar, coletar e retornar informações a primeira coisa que nos vem a mente é a utilização de um banco de dados, e, neste quesito não faltam opções no mercado; isso considerando apenas os banco de dados relacionais.(Existem ainda o modelo hierárquico , em rede, orientado a objetos , etc.) Só a Microsoft possui várias versões para o seu carro chefe o SQL Server , além do Microsoft Access. E o que dizer de FireBird, MySQL, PostGreSQL , Oracle, etc...
Um Bancos
de dados (ou bases de dados), são conjuntos de registros
dispostos em estrutura regular que possibilita a reorganização dos mesmos e
produção de informação. Um banco de dados normalmente agrupa registros
utilizáveis para um mesmo fim. Um banco de dados é usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de dados.(SGBD). (Wikipédia) |
Usar um banco de dados vai acrescentar um nível de complexidade ao seu projeto que pode ditar o sucesso ou fracasso do mesmo pois envolve questões como arquitetura, segurança, acesso, etc.
Mas afinal você é mesmo obrigado a sempre usar um banco de dados quando precisa gerenciar informações ?
A resposta a essa pergunta é : Depende.
Se você pretende gerenciar informações complexas usar um banco de dados pode ser a melhor opção mas, dependendo do seu objetivo, tamanho e complexidade do seu projeto outras soluções podem ser adotadas; estou me referindo a XML , serialização , arquivos textos, arquivos binários, etc.
Se você tem um projeto simples, pretende gerenciar uma quantidade limitada de dados e não precisa compartilhar as informações com outros usuários não precisa necessária usar um banco de dados relacional.
Este artigo procura mostrar como gerenciar informações sem usar um banco de dados e vai usar como exemplo o gerenciamento de uma coleção de figurinhas sobre automóveis (figurinhas de carros.Poderia ser um álbum de fotos, ou qualquer outra coleção de dados) onde iremos usar a serialização de objetos para persistir as informações em um arquivo.
O nosso projeto irá implementar as seguintes funcionalidades para gerenciar a coleção de automóveis:
A abordagem feita para o desenvolvimento da aplicação não é a única forma de se realizar tal tarefa e você pode adaptar ou usar outras alternativas que a plataforma .NET oferece.
O conceito chave envolvido neste exemplo é a serialização de objetos, portanto você deve ter noções sobre os conceitos básicos que envolvem a serialização de objetos na plataforma .NET.
Sugiro que você leia os meus artigos sobre o assunto : Serialização de objetos , Serializando objetos e VB.NET - Serializando um DataSet.
O primeiro passo para fazer com que um objeto seja serializável na plataforma .NET é incluir o atributo [Serializable] na declaração da classe que representa esse objeto. No entanto se algum membro dessa classe não precisar se serializado você deve marcá-lo com o atributo [NonSerializable] isso é feito para membros que não representam o estado do objeto. Abaixo temos um exemplo de código usando a serialização da classe:
VB .NET | C# |
<Serializable()>
_ Public Class Carros Public nomeVeiculo As String Public Modelo As String Private dataCriacao As DateTime <NonSerialized()> _ Public tempoUso As Integer End Class |
[Serializable] public class Carro { public string nomeCarro; public string Modelo; DateTime dataCriacao; [NonSerialized] public int tempoUso ; } |
Os passos básicos usados no processo de serialização são:
Para realizar tal tarefa podemos usar os seguintes formatadores: BinaryFormatter, SoapFormatter e XmlSerializer.
A primeira tarefa que iremos realizar e criar um projeto no Visual Basic 2008 Express Edition com o nome de colecaoCarros;
Abra o Visual Basic 2008 Express Editon e no menu File selecione a opção New Project ; na janela New Project selecione o template Windows Forms Application e informe o nome colecaoCarros;
Clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add -> New Item;
A seguir selecione o template Class e informe o nome Carros.vb;
Será criada a classe Carros.vb que será a classe que representará o nosso objeto carro. A classe Carros.vb será o container de todos os dados relacionados aos carros usados na aplicação.
Vamos então definir as propriedades e métodos da classe Carros.vb.
Abra o arquivo Carros.vb e defina os seguintes namespaces que serão usados na classe:
Imports
SystemImports
System.DrawingImports
System.Collections.GenericImports
System.LinqImports
System.TextPara organizar melhor o código da classe vamos criar 3 Regions na classe. Para isso digite #Region seguido do nome da região entre Aspas: #Region "Membros" e tecle Enter. A final deveremos ter as regiões conforme mostram as figuras abaixo:
Na região Membros vamos definir os membros da classe conforme abaixo:
Private _id As System.GuidPrivate _nome As String
Private _marca As String Private _modelo As String Private _detalhes As String Private _dataFabricacao As DateTimePrivate _imagem As Byte()
Private _nomeImagem As String
Na região Construtor vamos definir dois construtores para a classe:
Public Sub New()_id = Guid.NewGuid()
End
Sub
_id = Guid.NewGuid()
_nome = nomeCarro
End Sub
O primeiro construtor gera um número único e o atribui ao membro _id , e, o segundo além de gerar o número de identificação atribui um nome ao carro.
Se olharmos para classe Carros.vb no Solution Explorer deveremos ter até o momento o seguinte código:
Finalmente na região Propriedades vamos definir as propriedades da classe conforme abaixo:
Public
ReadOnly
Property ID()
As
Guid
Get
Return _id End Get End Property Public Property NomeCarro() As String Get Return _nomeCarro End Get Set(ByVal value As String) _nomeCarro = value End Set End PropertyPublic Property Marca() As String Get Return _marca End Get Set(ByVal value As String)_marca = value End Set End PropertyPublic Property Modelo() As String Get Return _modelo End Get Set(ByVal value As String) _modelo = value End Set End PropertyPublic Property Detalhes() As String Get Return _detalhes End Get Set(ByVal value As String) _detalhes = value End Set End PropertyPublic Property DataFabricacao() As Date Get Return _dataFabricacao End Get Set(ByVal value As Date) _dataFabricacao = value End Set End PropertyPublic Property Imagem() As Byte() Get Return _imagem End Get Set(ByVal value As Byte()) _imagem = value End Set End PropertyPublic Property NomeImagem() As String Get Return _nomeImagem End Get Set(ByVal value As String) _nomeImagem = value End Set End Property
|
Nota:
A nomenclatura usada para dar nome as propriedades ,
métodos e membros em uma linguagem orientada a objetos não tem um padrão
definido Na versão anterior do Visual Studio a Microsoft sugeria a utilização da Notação Húngara. Notação Húngara (Hungarian Notation) é uma das convenções para nomenclatura. Exemplo: String sPrimeiroNome; => s é o prefixo para o tipo String char cLetra; => c é o prefixo para o tipo Char, i para Integer, s para String, etc. Button butOk; => but é o prefixo para o tipo Button Atualmente existem também os seguintes padrões que são usados: PascalCasing CamelCasing Uppercase Atente que a plataforma .NET faz distinção
entre caixa alta e caixa baixa. A sugestão atual da Microsoft é que propriedades e métodos deve começar com uma letra em caixa alta e o restante do nome deve ser pertinente com o propósito da variável:Exemplos:
Você não é obrigado a seguir nenhuma destas orientações apenas seja coerente com os nomes que vai usar de forma que seja o mais claro e inteligível possível. A seguir mais algumas recomendações da Microsoft:
Fica a seu critério... |
O código acima define as seguintes propriedades:
Observe que a propriedade ID é somente leitura não podendo ser alterada.(Só temos o Get na propriedade)
Com isso já temos a classe que irá definir e tratar o nosso objeto carro e através dela iremos gerenciar toda informação relacionada com a nossa coleção de figurinhas de carros.
Veja a continuação do artigo em : Gerenciando dados sem usar banco de dados - II
Eu sei , é apenas VB .NET , mas eu gosto..
Mat 6:9 Portanto, orai vós deste modo: Pai nosso que estás nos céus, santificado seja o teu nome;
Mat 6:10 venha o teu reino, seja feita a tua vontade, assim na terra como no céu;
Mat 6:11 o pão nosso de cada dia nos dá hoje;
Mat 6:12 e perdoa-nos as nossas dívidas, assim como nós também temos perdoado aos nossos devedores;
Mat 6:13 e não nos deixes entrar em tentação; mas livra-nos do mal. Porque teu é o reino e o poder, e a glória, para sempre, Amém.
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
referências:
José Carlos Macoratti