quarta-feira, 5 de março de 2014

TYPE SAFE CAST (Casting Seguro)

FONTE : https://www.youtube.com/watch?v=_tEM3U0xA8Y

Análise Orientada a Objetos - Introdução

partes.
Programação Orientada a Objetos - Baseada  no mundo real. Surgiu para resolver a crise de software dos anos 70.Reutilização de código.Proporciona fácil manutenção devido ao desacoplamento das partes.














segunda-feira, 27 de agosto de 2012

Criando objeto de acesso a dados para banco de dados MySQL

Neste Post estudaremos como criar uma classe responsável para acesso ao banco de dados MySql.
Esta classe servirá para uma preparação, quando uma aplicação fizer alguma transação com o banco de dados, seja um cadastro, uma exclusão ou uma consulta, a mesma deve saber quais sãos os objetos que ela vai utilizar. Neste caso usaremos os objetos para MySql (estão definidos na dll MySql.Data.dll).

Fazendo referência.

O SGBD MySql não foi desenvolvido pela Microsoft e seus objetos não são nativos do .NET Framework, isso significa que teremos de utilizar uma dll de terceiro. 

O instalador do conector MySql .NET pode ser encontrado no link:
http://dev.mysql.com/downloads/connector/net/6.4.html

Após a instalação poderemos adicionar a referência da dll do MySql ao nosso projeto. (talvez seja necessária a reinicialização do Visual Studio se ele estiver aberto).
Para adicionar referência basta dar um clique direito do mouse em cima do projeto no Solution Explorer (Caso o Solution explorer não esteja visível, basta utilizar o atalho Ctrl + Alt + S) e selecionar a opção Adicionar Referência.

Observe o nome da dll Mysql.Data   

Para ter acesso aos objetos MySql.Data é necessário importa-los para classe que estamos criando. 




O próximo passo é informarmos os dados do servidor onde está a base de dados que iremos usar. 
No exemplo a seguir estou referenciando uma base de dados MySql local, instalada no meu próprio computador. 

String de Conexão.
Na primeira linha do código acima temos uma constante que, diferentemente de uma variável, tem seu valor imutável. O uso de uma constante é discutível para este caso. Existe uma possibilidade de trabalharmos futuramente com um servidor remoto ou até mesmo a possibilidade da senha do servidor MySql mudar. Futuramente vamos abordar práticas melhores para tratar strings de conexão. 
A string de conexão é escrita em formato texto, por esse motivo declaramos no código da classe com String. Na linha a seguir veremos que a  string de conexão passará a ser um objeto. 
No início da string temos o atributo server, se estiver usando uma instalação do MySql do seu próprio computador basta colocar a palavra LOCALHOST. Agora, se estiver usando usando uma conexão remota informe o número IP  ou o nome do servidor. No atributo User Id foi informado o Usuário Raiz root, este usuário tem acesso a todas as funcionalidades do servidor MySql, é altamente recomendável que você crie outros usuários e gerencie os privilégios por segurança. Nas versões mais atuais do SGBD MySql o usuário root não pode ser usado remotamente.
Uma observação importante: Se você estiver usando a instalação do MySql sem senha, basta eliminar o PWD= suasenha;
Por fim, temos o atributo database onde você deve referenciar o nome da base de dados que vai utilizar. 

Objeto de conexão. 
Na segunda linha do código acima trata a instância do objeto de conexão. Este objeto é do tipo MySqlConnection (tipo construído dentro da dll MySql.Data). 
Podemos observar que na instância desse objeto existe um parâmetro: 

O valor passado como parâmetro: conexaoString é a constante que criamos acima, com os dados do servidor MySql em formato texto. 
O uso desse "parâmetro" na instância do objeto do tipo MySqlConnection é chamado de construtor. 
Para explicar de forma simples um construtor imagine que  um objeto é como um bolo, e o construtor serve para criar esse bolo (objeto) já com algumas características definidas, como por exemplo, um bolo em formato de coração. O construtor é uma forma para criar bolos diferentes.  Neste caso estamos criando um objeto do tipo MySqlConnection que já vem com a característica dos dados do nosso servidor MySql. 





Já temos em nossa aplicação o objeto conexao que de fato se conectará a um servidor MySql, agora precisaremos ter o cuidado de manipular quando essa conexão deverá estar aberta e quando ela deverá estar fechada.

No código acima temos o método AbreConexao ele fará a abertura da conexão quando alguma transação de dados for solicitada. O Código foi estruturado assim:

  1. Verificação se a conexão está fechada.
              If conexao.State = ConnectionState.Closed Then  
              Estamos usando o "SE" para saber se o estado da conexão é fechado.  
              Se ela estiver fechada a condição pedirá que ela seja aberta dentro de um tratamento de erros.


  1. Tratamento de erros
             A instrução TRY significa que a aplicação TENTARÁ executar algo, caso ocorra um insucesso o código alocado dentro do bloco CATCH será executado informando uma mensagem de erro. 

O uso do tratamento de erros é uma boa prática. Em algumas linguagens de programação o uso  é obrigatório dependendo da situação, no nosso caso estaremos manipulando dados em um servidor SGBD, em JAVA, por exemplo, é obrigatório o uso do TRY/CATCH todas as vezes que transações de dados forem utilizadas. No VB.NET o uso é opcional porém é uma boa prática usa-lo para evitar que aplicação se comporte de forma inesperada.  

Algumas exceções podem ocorrer numa tentativa de abertura de conexão, o tempo de "timeout" pode exceder, os dados do usuário podem estar incorretos. O Catch disparará uma mensagem com o erro ocorrido. 

Agora basta criar um método para fechar a conexão assim que terminarmos de utiliza-la. 




                 


No próximo POST criaremos mais alguns métodos para a execução dos comandos SQL. 

terça-feira, 17 de julho de 2012

Usando Vetores

Neste Post vamos estudar a utilização de Vetores em VB.NET.
Como primeiro exemplo, vou usar de uma aplicação do tipo Console.

Menu new Project do Visual Studio 2010 para criação de uma aplicação Console.


Após a criação do projeto da aplicação segui alguns passos para renomear o módulo no Solution Explorer. Você pode revisar acessando o Post Criando aplicação Console VB.NET .

Seguindo os passos do exercício, vamos criar um vetor que receba o nome de 5 amigos.
Para dimensionar um vetor com essas características basta digitar:


Declaração de Vetor: DIM amigos(4) as string


Na linha indicada estamos fazendo:
Dim:  dimensionar , amigos(4): vetor com cinco posições contando a partir do zero, As String: receberá uma cadeia de caracteres.

Para atribuir um valor dado pelo usuário à uma determinada posição do Vetor, vamos emitir uma mensagem usando o método WriteLine.

Console.WriteLine("Digite o nome de um amigo")    amigos(0) = Console.ReadLine()


Na linha : amigos(0) = Console.ReadLine()
Estamos atribuindo o valor digitado pelo o usuário ao índice 0 do Vetor.
O índice 0 é a primeira posição de um vetor.

Usando a estrutura de repetição "Enquanto" para preencher um Vetor.


Para preencher o vetor usando um mecanismo de repetição vamos apenas acrescentar a instrução
While ao código e uma variável que faça o controle de vezes que a repetição será executada.

Vamos chamar essa variável de contador.





Dessa forma, o algoritmo executará cinco vezes (de 0 até 4) o método WriteLine e a atribuição do nome digitado pelo o usuário a uma posição do vetor.

Agora vamos fazer com que o algoritmo apresente os nomes digitados pelo usuário.

Para apresentar os nomes que estão alocados no vetor foi utilizada uma nova estrutura de repetição para apresentar os nomes um a um.

Note que foi zerado o valor do contador pois quando a primeira estrutura de repetição for finalizada
o contador deverá ter o valor 5. Como 5 é maior que 4 não entrará nenhuma vez no segunda estrutura de repetição.



Não podemos esquecer que no final do algoritmo devemos incluir o Console.ReadLine() apenas para que o Console não feche a tela antes que o usuário possa ler o conteúdo.



Agora é só executar pressionando F5.





Algo deu errado!!

Na hora de exibir os nomes alocados no Vetor, o mesmo nome apareceu cinco vezes.

A falha no algoritmo está na linha indicada:





amigos(0) = Console.ReadLine()

Indica que toda vez que o laço de repetição enquanto (while) é executado e o usuário digita um nome,
este nome é atribuído à mesma posição do vetor. (posição zero)

Para resolver este problema basta trocar o zero, que está como índice do vetor, para a variável contador.
Assim, cada nome digitado será alocado em uma posição diferente do vetor até que ele esteja completo.



Agora o resultado deve ser o seguinte:



Para exibir essa linha separadora apenas incluí uma linha

Console.WriteLine("---------- Mostrando os amigos -----------")

antes de começar a segunda estrutura de repetição enquanto.




domingo, 8 de julho de 2012

Criando uma aplicação Console em VB.NET com Visual Studio

Olá pessoal!


Neste post vamos aprender a criar uma aplicação Console em VB.NET. Neste primeiro momento vamos utilizar um algoritmo que já estudamos com Visualg: O cálculo da média simples.


Dado três notas, o algoritmo deve fazer o cálculo da média simples e mostrar-la aos usuários.


Em primeiro lugar, veremos como criar um projeto de aplicação Console no Visual Studio.

Criando um projeto Visual Studio 2010



Clicando no link indicado poderemos ver um tela de seleção de tipos de projetos:

Seleção do tipo de projeto e local para a gravação do projeto

Nesta etapa é importante observarmos alguns pontos:
  1. O Tipo de linguagem de programação que usaremos.
    O Visual Studio é uma IDE de desenvolvimento com suporte a várias linguagens, neste exercício usaremos VB.NET.
  2. O Tipo de Projeto - Console Application.
  3. O Diretório onde será criado o projeto.
                   Você pode selecionar qualquer diretorio em seu computador, caso não modifique o Visual Studio gravará no diretório padrão que geralmente é \Documents\Visual Studio 2010\Projects.



Após confirmarmos a criação do projeto será criado um módulo com um método  Main(). Nesta postagem não iremos nos aprofundar nas definições de método, por hora é válido saber que ele executará o comportamento necessário de um algoritmo que calcula a média simples através de uma Entrada (as notas que serão imputadas pelo usuário), através de um processamento (a expressão matemática que realiza o cálculo, e por fim, uma Saída (a mostra do resultado da média simples).

Método Main


É recomendável que o módulo criado automaticamente pelo Visual Studio seja renomeado com um título mais sugestivo, algo que indique a funcionalidade do algoritmo.  Vamos renomear para Media, sem acento.


Para renomear de forma segura, utilizaremos o painel do Solution Explorer. Clicando em cima do Module1 e pressionando F2 para renomear.
Aparecerá uma mensagem perguntando se gostaria de renomear todas as referências com o novo nome. Clique em Sim.




(Se o Solution Explorer não estiver visível como na imagem, é possível torna-lo visível através das teclas de atalho Ctrl + Alt + L.)

Alterar nome do módulo


Bom, agora chegou a hora de falarmos do código.
Assim como já desenvolvemos antes, precisaremos da declaração de algumas variáveis para o algoritmo armazenar as notas e mostrar o resultado.


declaração de variáveis: Dim nota1 as decimal, dim nota2 as decimal, dim nota3 as decimal, dim media as decimal
De acordo com o exemplo acima, as variáveis foram declaradas como decimal.
Você pode checar os tipos de variáveis disponíveis em VB.NET no link Tipos de variáveis em VB.NET


A palavra chave Dim significa dimensionar, ou simplesmente declarar na memória.
Quando declaramos uma variável estamos "reservando" um espaço na memória para receber unm determinado valor, neste caso um número decimal.

Não se preocupe se os nomes das variáveis ficarem sublinhadas com uma linha verde, essas linhas verdes são avisos que o Visual Studio emite. Eles, na maioria das vezes, indicam que algo pode não estar em conformidade mas não representam erros de sintaxe ou compilação.
No exemplo a seguir o Visual Studio mostrará no painel Error List (Se ele não estiver aparecendo você poderá visualiza-lo através do menu View) um aviso de que as variáveis ainda não foram utilizadas e não receberam valores. 

Lista de erros do Visual Studio 2010








Quando há algum erro de compilação ou um erro de sintaxe no código o mesmo ficará sublinhado com uma linha vermelha, este erro impede a compilação do programa.



Para emitir uma mensagem ao usuário, por exemplo, para pedir que digite uma nota, usaremos o método Escreva que no VB.NET é escrito da seguinte forma em uma aplicação console


Console.WriteLine("Digite a primeira nota")

Podemos dizer que WriteLine equivale ao Escreval do Visualg; faz com que uma mensagem seja escrita utilizando uma nova linha.
Já a palavra Console trás uma novidade para nós uma novidade.
Como VB.NET é uma linguagem que pode ser utilizada em aplicações Web, Desktop e em aplicações console, precisamos informar onde a mensagem seria exibida; neste caso em uma janela do tipo console.

Para recuperarmos um valor digitado por um usuário e atribuirmos a uma variável, usaremos o método ReadLine():

nota1 = Console.ReadLine()

Agora, a novidade fica por conta de Nota1 estar recebendo o Console.ReadLine().
(No VisualG era preciso colocar o nome da variável dentro do parenteses para que ela recebesse o valor).
Métodos Escreva e leia no VB




A partir do momento que uma variável recebe valor, a linha de aviso que o Visual Studio havia colocado desaparecerá.

Basta repetir o procedimento para as outras variáveis para terminar o algoritmo.


Console.WriteLine("Digite a primeira nota")
        nota1 = Console.ReadLine()
        Console.WriteLine("Digite a segunda nota")
        nota2 = Console.ReadLine()
        Console.WriteLine("Digite a terceira nota")
        nota3 = Console.ReadLine()

        media = (nota1 + nota2 + nota3) / 3

        Console.WriteLine("Sua média é : " & media)



Pronto! Terminado o algoritmo! Desta vez, a novidade ficou por conta do símbolo de concatenação.
Observe que no Visualg a concatenação era feita através da vírgula. No VB.NET o símbolo utilizado é o de & ("E" comercial).
        Console.WriteLine("Sua média é : " & media)

Para visualizar o algoritmo em execução, basta pressionar F5.
O resultado deve ser o seguinte:

execução do algoritmo

 

OPS!! Algo parece ter dado errado!
Como a saída é muito rápida, tratando-se apenas de uma frase, o console é fechado rapidamente.
Para resolver este problema basta apenas acrescentar uma linha:


Console.ReadLine()

O console ficará aguardando o pressionar de alguma tecla para fechar a janela. Assim fica mais fácil de visualizar o resultado.






Até Mais!

quinta-feira, 5 de julho de 2012

Tipos de Variáveis em VB.NET.

Tipos de Variáveis em VB.NET.


Boa tarde galera!
Neste primeiro post do blog  .NET Programmers Extreme, gostaria de mostrar as diferenças entre os tipos de varíáveis disponíveis no VB.NET.



Tipos de Variáveis em VB.NET
Tipo de Variável Tamanho Range Situação exemplo
Byte 1 Byte 0 a 255 (sem sinal) Dim ID as Byte
ID = 16
Short 2 Bytes - 32.768 até 32.767 Dim rendimentos as Shor
rendimentos = -10
Integer 4 Bytes - 2.147.483.648 até 2.147.483.647 Dim habitantes as Integer
habitantes = 150000000
Long 8 Bytes - 9.223.372.036.854.775.808 até 9.223.372.036.854.775.807 Dim Celulas as Long
Celulas = 12345768009
Single 4 Bytes - 3,402823 x 1038 to -1.401298 x 10-45 (valores negativos)
1,401298 x 10-45 a 3,402823 x 1038 (valores positivos)
Dim valor as Single
valor = 1457,42
Double 8 Bytes ± 79.228.162.514.264.337.593.543.950.335 (sem ponto decimal)
± 7,9228162514264337593543950335 (com 28 casas decimais)
Menor valor representável: ± 0,0000000000000000000000000001
Dim DEBITO as Decimal
DEBITO = 1387987,34
Char 2 Bytes 0 até 65.535 caracteres Dim SEXO as Char
SEXO = “M”
String 10 Bytes + 2 X quantidade de caracteres 0 até aproximadamente dois bilhões de caracteres Unicode Dim NOME as String
NOME = “José da Silva”
Boolean 4 Bytes True ou False Dim Ativo as Boolean
Ativo = True
Date 8 Bytes 1 de janeiro de 0001 a 31 de dezembro de 9999 Dim DataNascimento as Date
DataNascimento = #14/10/1982#
Object 4 Bytes Qualquer tipo pode ser armazenado em uma variável do tipo Object