Edcmiranda
Seminário: Edcmiranda. Pesquise 862.000+ trabalhos acadêmicosPor: edcmiranda • 11/9/2014 • Seminário • 2.174 Palavras (9 Páginas) • 253 Visualizações
Hoje apresento um singelo programa feito na linguagem C# usando o Visual Studio 2012 Express for dekstop.
Juntando a prática com a teoria temos neste programa para locadora de veículos um exemplo de como usar os recursos da linguagem C# tais como: classes, coleções, serialização, impressão; bem como o uso dos controles de formulário como picturebox, textbox, label, listview, button.
Neste exemplo específico estamos usando a classe Dictionary.
A classe Dictionary representa uma coleção de chaves e valores. É uma coleção do tipo chave/valor e implementa a interface IDictionary que possui duas coleções no seu interior uma para guardar a chave e outra para guardar o valor.
A aplicação não utiliza um banco de dados relacional. Os dados são persistidos em arquivos texto através da serialização.
á ouviu falar em serialização ? O que é serializar ? Como podemos fazer isto na plataforma .NET ?
De forma genérica a serialização é uma técnica usada para persistir objetos , ou seja : gravar objetos em disco , fazer a transmissão remota de objetos via rede , armazenar os objetos em um banco de dados e/ou arquivos (binários , xml, etc.)
Serializar nada mais é do que colocar os valores que o objeto está utilizando juntamente com suas propriedades de uma forma que fique em série (sequencial) . Fazendo isto estamos tornando o objeto Serializable, e, tornando um objeto Serializable, estamos atribuindo essa qualidade a ele, e dando privilégios para que o mesmo possa ser gravado em disco ou enviado por rede.
A serialização é o processo de armazenar um objeto , incluindo todos os atributos públicos e privados para um stream.
Se você faz a serialização naturalmente vai querer fazer o processo inverso - desserialização , que seria restaurar os atributos de um objeto gravado em um stream. (Este stream pode ser um arquivo binário , xml , etc.)
Nota: Tradução de stream - fluxo (no caso de dados) . Melhor deixar stream mesmo.
Por que você iria querer usar a serialização ?
Primeiro por que nem tudo se pode armazenar em um banco de dados . As vezes a natureza da sua aplicação não exige um banco de dados ou usar um banco de dados pode ficar muito caro para o tamanho dos dados que se quer guardar ou ainda você pode também querer gravar os dados em disco para posterior recuperação. Enfim , se você não quer usar um banco de dados , e quer persistir seus objetos pode fazer isto de diversas maneiras mas o trabalho exigirá mais código , mais trabalho e mais tempo.
As informações da aplicação exemplo são armazenadas em uma pasta criada automaticamente pela aplicação usando o código a seguir:
FileStream stnCarros = null;
BinaryFormatter bfmCarros = new BinaryFormatter();
Directory.CreateDirectory(@"C:\JcmSoft_Carros");
string strNomeArquivo = @"C:\JcmSoft_Carros\Carros.crs";
O programa esta criando a pasta JcmSoft_Carros no drive C:\ da máquina local:
Os arquivos criados e usados para armazenar as informações são:
• Carros.crs
• Clientes.crc
• Empregados.cre
• PedidoLocacao.cro
As informações são serializadas nos arquivos através dos objetos criados conforme mostra o código abaixo:
// Cria um carro
Carro veiculo = new Carro();
veiculo.Fabricante = txtFabricante.Text;
veiculo.Modelo = txtModelo.Text;
veiculo.Ano = int.Parse(txtAno.Text);
veiculo.Categoria = cbxCategorias.Text;
veiculo.TemCDPlayer = chkCDPlayer.Checked;
veiculo.TemDVDPlayer = chkDVDPlayer.Checked;
veiculo.EstaDisponivel = chkDisponivel.Checked;
// Chama o método Add da coleção para adicionar o carro
listaCarros.Add(txtTagNumber.Text, veiculo);
// salva a lista
stnCarros = new FileStream(strNomeArquivo, FileMode.Create, FileAccess.Write, FileShare.Write);
Quando do registro de pedido de locação, ao informar o número da carteira de motorista (CNH) na caixa de texto, é feita uma busca nos arquivos e a informação é recuperada e exibida nos controles de formulário conforme mostra o código abaixo:
Nota: Observe que estamos usando o evento Leave da caixa de texto
private void txtNumeroRegistroCNH_Leave(object sender, EventArgs e)
{
Cliente locador = null;
string strNumeroCNH = txtNumeroRegistroCNH.Text;
if (strNumeroCNH.Length == 0)
{
MessageBox.Show("Informe o número de registro da carteira de habilitação do Cliente.");
txtNumeroRegistroCNH.Focus();
return;
}
Dictionary<string, Cliente> listaClientes = new Dictionary<string, Cliente>();
BinaryFormatter bfmClientes = new BinaryFormatter();
string strNomeArquivo = @"C:\JcmSoft_Carros\Clientes.crc";
if (File.Exists(strNomeArquivo))
{
...