Tutorial ASP.NET 2.0 – Orientação a Objeto adicionando regras de negócio a nossa classe

Antes de adicionar regras de negócio a nossa classe, vamos analisar o que fizemos para chamar nossa classe

Dim oProduto As New Produto

Estamos criando a instância do objeto, que é conhecida como classe, repare na utilização da palavra new é ela que diz que demos criar nova instância do objeto Produto. Uma observação importante é que se tivéssemos criando um tipo de dado (int,string,datetime,etc) a palavra new não seria utilizada.

No trecho abaixo preenchemos as propriedades com o valores digitados no formulário

oProduto.DataFabricacao = txtDataFabricacao.Text

oProduto.Nome = txtNome.Text

oProduto.NumeroDias = txtNumeroDias.Text

E por último vamos chamar o método para calcular a data de validade

lblResultado.Text = oProduto.RetornaDataValidade()

Agora vamos adicionar algumas regras de negócio ao nosso método RetornaDataValidade:

  1. A quantidade de dias de validade deve estar entre 5 e 90 dias até o mês 6 do ano, do mês 7 ao mês 12 a quantidade de dias deve estar entre 10 e 70 dias.
  2. Para quantidades entre 15 e 30 dias, deve ser acrescentado 20% ao resultado final.

Com as regras nosso método ficaria assim:

Function RetornaDataValidade() As String

Dim retorno As String

Dim qtdDias As Integer = NumeroDias

‘Para quantidades entre 15 e 30 dias , deve ser acrescentado 20% ao resultado final.

If ((qtdDias > 14) AndAlso (qtdDias < 71)) Then qtdDias = qtdDias * 1.2

If (DataFabricacao.Month < 7) Then

‘5 e 90 dias até o mês 6 do ano

If ((NumeroDias > 4) AndAlso (NumeroDias < 91)) Then

retorno = DataFabricacao.AddDays(qtdDias)

Else

retorno = "Numero de dias deve estar entre 5 e 90"

End If

Else

‘Mês 7 ao mês 12 a quantidade de dias deve estar

If ((NumeroDias > 4) AndAlso (NumeroDias < 91)) Then

retorno = DataFabricacao.AddDays(qtdDias)

Else

retorno = "Numero de dias deve estar entre 10 e 70"

End If

End If

Return retorno

End Function

Para podermos enviar uma mensagem foi alterado o retorno do método para string

De Function RetornaDataValidade() As DateTime

Para Function RetornaDataValidade() As String

Outro ponto interessante é o trecho abaixo, onde podemos notar que não utilizamos o end if, isso foi possível por que só temos uma linha de comando dentro do if (qtdDias = qtdDias * 1.2), se tivéssemos duas linhas ou mais , o end if seria obrigatório.

If ((qtdDias > 14) AndAlso (qtdDias < 71)) Then qtdDias = qtdDias * 1.2

Agora rode a aplicação e informe os valores diferentes para ver o funcionamento das regras criadas.

 

Tutorial ASP.NET 2.0 – Orientação a Objeto Usando a Classe criada

 

Agora vamos usar a classe produto que criamos, para isso vamos criar um formulário para informar os valores das propriedades e chamar o método.

Adicione 5 label, 4 textbox e um botão

Agora vamos configurar a propriedade ID e Text de cada objeto

Tipo Objeto

ID

Text

Label

lblNome

Nome

Label

lblPreco

Preço

Label

lblDataFabricao

Data Fabricação

Label

lblNumeroDias

Dias Validade

Label

lblValidade

 

TextBox

txtNome

 

TextBox

txtPreco

 

TextBox

txtDataFabricao

 

TextBox

txtNumeroDias

 

Botão

btnEnviar

Enviar

Obs: Repare que adotamos um prefixo para cada tipo de objeto

O formulário deve esta semelhante ao abaixo:

Veja o código HTML

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="CursoASPNET._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

<html xmlns="http://www.w3.org/1999/xhtml&quot; >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="lblNome" runat="server" Text="Nome"></asp:Label>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />

<asp:Label ID="lblPreco" runat="server" Text="Preço"></asp:Label>

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />

<asp:Label ID="lblDataFabricacao" runat="server" Text="Data Fabricação"></asp:Label>

<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />

<asp:Label ID="lblNumeroDias" runat="server" Text="Dias Validade"></asp:Label>

<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>

<asp:Button ID="btnEnviar" runat="server" Text="Enviar" /><br />

<asp:Label ID="lblResultado" runat="server" Width="191px"></asp:Label></div>

</form>

</body>

</html>

Agora vamos criar o código que será chamado no click do botão enviar, para isso primeiro de um duplo click no botão enviar.

Observação: Caso você não esteja no modo design, no rodapé clique em Design.

Será criado o código abaixo:

Protected Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click

End Sub

Agora vamos criar nosso código para instanciar a classe e utiliza-la.

Protected Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click

Dim oProduto As New Produto

oProduto.DataFabricacao = txtDataFabricacao.Text

oProduto.Nome = txtNome.Text

oProduto.NumeroDias = txtNumeroDias.Text

lblResultado.Text = oProduto.RetornaDataValidade()

End Sub

Vamos rodar nosso projeto (ctrl + f5) preencher o formulário e clicar em enviar.

Como não temos nenhum tratamento de erro, devemos informar os dados corretamente, nos próximos capítulos estaremos melhorando o código.

A aparência também não é das melhores, por enquanto não se preocupe com esse pequeno detalhe, estaremos em breve aplicando CSS para melhorar a aparência do nosso formulário.

Tutorial ASP.NET 2.0 – Orientação a Objeto Criando nossa primeira classe

Agora vamos criar uma classe produto para mostrarmos melhor o conceito de orientação a objeto.

Nossa classe produto terá quatro propriedades e um método.

Propriedades

  • Nome
  • Preço
  • Data Fabricação
  • Dias Validade

Método

  • Retornar Data Validade
Criando uma classe

Clique com o botão direito do mouse no projeto/Website e selecione add à New Item

Selecione class e digite produto.vb , clique em Add

Foi criado um arquivo somente com a definição da classe.

Public Class Produto

End Class

Vamos agora adicionar as propriedades e o método, para criar a propriedade clique com o botão direito dentro do arquivo, selecione Insert Snippet

Usando o Insert Snippet

Selecione Common Code Patterns à Properties and Procedures à Define a Property

Será criado o código Abaixo:

Public Class Produto

Private newPropertyValue As Integer

Public Property NewProperty() As Integer

Get

Return newPropertyValue

End Get

Set(ByVal value As Integer)

newPropertyValue = value

End Set

End Property

End Class

Agora vamos alterar o nome e tipo da propriedade

Public Class Produto

Private _nome As String

Public Property Nome() As String

Get

Return _nome

End Get

Set(ByVal value As String)

_nome = value

End Set

End Property

End Class

Agora repita os passos anteriores para criar as outras propriedades, veja o código como deve ficar.

Public Class Produto

Private _nome As String

Public Property Nome() As String

Get

Return _nome

End Get

Set(ByVal value As String)

_nome = value

End Set

End Property

Private _DataFabricacao As DateTime

Public Property DataFabricacao() As DateTime

Get

Return _DataFabricacao

End Get

Set(ByVal value As DateTime)

_DataFabricacao = value

End Set

End Property

Private _NumeroDias As Integer

Public Property NumeroDias() As Integer

Get

Return _NumeroDias

End Get

Set(ByVal value As Integer)

_NumeroDias = value

End Set

End Property

Private _Preco As Double

Public Property Preco() As Double

Get

Return _Preco

End Get

Set(ByVal value As Double)

_Preco = value

End Set

End Property

End Class

Agora vamos criar nosso método

Function RetornaDataValidade() As DateTime

Return DataFabricacao.AddDays(NumeroDias)

End Function

Nesse método utilizamos a propriedade DataFabricacao e NumeroDias , como DataFabricacao é do tipo data, temos o método de soma para dia AddDays.

Nossa classe já pode ser utilizada em nossa página:

Public Class Produto

Private _nome As String

Public Property Nome() As String

Get

Return _nome

End Get

Set(ByVal value As String)

_nome = value

End Set

End Property

Private _DataFabricacao As DateTime

Public Property DataFabricacao() As DateTime

Get

Return _DataFabricacao

End Get

Set(ByVal value As DateTime)

_DataFabricacao = value

End Set

End Property

Private _NumeroDias As Integer

Public Property NumeroDias() As Integer

Get

Return _NumeroDias

End Get

Set(ByVal value As Integer)

_NumeroDias = value

End Set

End Property

Private _Preco As Double

Public Property Preco() As Double

Get

Return _Preco

End Get

Set(ByVal value As Double)

_Preco = value

End Set

End Property

Function RetornaDataValidade() As DateTime

Return DataFabricacao.AddDays(NumeroDias)

End Function

End Class

 

Tutorial ASP.NET 2.0 – Introdução Orientação a Objeto

 

No DotNet tudo é um objeto, com isso temos uma grande reutilização de código e facilidade em melhorar os controles e objetos de acordo com nossa necessidade. Nunca devemos nos esquecer disso para tirar o máximo de proveito.

Dito isso vamos analisar novamente o código de nossa primeira página.

Partial Public Class _Default

Na linha acima estamos definindo o nome de nossa classe, _Default, a visibilidade, Public, e a plavra Partial, especifica que a classe será composta por mais de um arquivo.

Inherits System.Web.UI.Page

Estamos definindo que nossa classe _Default esta herdando da Classe Page, vale lembrar que só podemos herdar de uma classe.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Estamos definindo o método load da página, definindo que o mesmo está protegido, ou seja, não pode ser “substituído” por outro, caso criarmos outra página que herde de nossa classe _Default.

Esse método recebe um objeto que representa quem chamou esse método e a lista de parâmetros enviada.

Partial Public Class _Default

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim Mensagem As String = ""

Response.Write("Ola mundo!")

End Sub

End Class

 

Tutorial ASP.NET 2.0 – Analisando o HTML da página Ola Mundo

 

Agora vamos analisar o código da página default.aspx:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="CursoASPNET._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml&quot; >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
</div>
</form>
</body>
</html>

Em relação a uma página HTML temos os elementos a mais:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="CursoASPNET._Default" %>

Estamos especificando qual é a linguagem Language="vb"

Qual o arquivo que o código será armazenado CodeBehind="Default.aspx.vb"

Qual a classe Inherits="CursoASPNET._Default"

Define se os eventos serão associados automaticamente aos objetos AutoEventWireup="false" , valor false devemos criar os eventos , true eles serão criados automaticamente.

Na prática isso quer dizer que AutoEventWireup="false" requer

Handles Me.Load , já se o valor fosse true AutoEventWireup="true"

o Handles me.load seria opcional.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Response.Write("AutoEventWireup=False")

End Sub

O ideal é utilizar o valor false para uma melhor performance.

 

O restante do código é html normal com exceção da tag ScriptManager que é responsavel pelo gerenciamento das chamadas Ajax:

<asp:ScriptManager ID="ScriptManager1" runat="server" />

 

Tutorial ASP.NET 2.0 – O Bom e velho Olá Mundo

Vamos incluir o famoso “Ola Mundo” inserindo no evento Load o código Abaixo

Dim Mensagem As String = ""

Response.Write("Ola mundo!")

Nesse código estamos declarando uma variável do tipo string e vamos escreva na página utilizando o comando Response.Write.

O código da página fica assim:

Partial Public Class _Default

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim Mensagem As String = ""

Response.Write("Ola mundo!")

End Sub

End Class

Para exibir a página temos 3 opções.

  1. Utilizar o servidor Internet Information Service, conhecido como IIS
  2. Rodar a aplicação utilizando o menu Debug


Podemos utilizar a opção Start Debugging ou Star Without Debugging

  1. Podemos clicar com o botão direito em cima do arquivo e escolher a opção View in Browser

Como não pretendemos debugar o código, vamos rodar a aplicação usando ctrl + f5

Repare que ele criou uma página com a frase Ola Mundo! , veja que como rodei o aplicativo de dentro do Visual Studio, ele utilizou o ASP.NET Developement Server, que seria uma espécie de IIS interno do Visual Studio.

Technorati Tags: .NET, VB.NET, ASP.NET 2.0, SQL Server 2005, Tutorial, Apostila

Tutorial ASP.NET 2.0 – Introdução ao VB.NET

 

A sintaxe do VB.NET é muito semelhante ao VB 6 , por isso grande parte dos programadores VB se sentem a vontade em começar a programar com VB.NET. Mas essa semelhança é perigosa já que mesmo programando do jeito VB 6, ou seja, não orientado a objeto os programas irão funcionar.

Vamos criar nosso primeiro projeto para que possamos ir testando todos os exemplos:

1) File  –> New –>  Project

2) Selecione a Opção ASP.NET AJAX – Enabled Web Application

Observação: Para essa opção aparecer você deve ter instalado o Ajax.Net e o (SP1 do Visual Studio ou a atualização conhecida como WEB Application) instalado.

Foi criado um projeto  com um diretório chamado My Project , onde podemos alterar todas as propriedades do projeto. E mais dois arquivos o web.config que configura algumas opções da aplicação e pode guardar valores globais, e o Arquivo Default.aspx

Clicando em Show all files, serão apresentados mais alguns arquivos:

Temos então os seguintes arquivos:

Defaul.aspx(Possui o código Visual, HTML + CSS + Javascript + Controles ASP.NET)

Defaul.aspx.designer.vb (Possui as definições dos controles )

Defaul.aspx.vb (Possui o código que será rodado no servidor)

 

Agora que temos o projeto vamos criar nosso primeiro código. Vamos editar o arquivo default.aspx.vb, veja abaixo o código inicial.

Partial Public Class _Default

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

End Class

 

Technorati Tags: .NET, VB.NET, ASP.NET 2.0, SQL Server 2005, Tutorial, Apostila

Tutorial ASP.NET 2.0 – Arquitetura WEB

Para quem está iniciando é sempre bom lembrar a arquitetura dos sistemas web, vamos lá então …
Toda aplicação web seja ela desenvolvida com linguagem compilada ou interpretada funciona da mesma forma, ou seja, enviamos uma solicitação para o servidor e recebemos de volta HTML/CSS/JavaScript/XML/arquivo, ou seja, recebemos um conjunto de bytes .

Partindo disso então temos que não podemos acessar recursos locais da maquina, como criar arquivos locais, alterar resolução do monitor, etc. Usando javascript podemos saber a hora local da maquina e sua resolução mas não podemos alterar essas informações.

Se precisarmos acessar recursos locais temos duas alternativas, criar um ActiveX que devera ser instalado pelo usuário, podendo então acessar a maquina local através de nosso sistema web. Mas o uso de ActiveX não deve ser utilizado a não ser que seja extremamente necessário, o melhor seria desenvolver uma aplicação Windows quando há a necessidade de acessar dados locais da maquina do usuário.

Outro fato interessante das aplicações web é que elas trabalham desconectadas, parece estranho já que temos que estar conectados na internet ou rede. O que quero dizer com desconectada é que a requisição é feita ao servidor e quando o servidor responder, pronto não há mais uma conexão entre as duas partes. A única coisa que temos é um número que será utilizado na próxima solicitação, esse número é chamado de SessionID.

Por trabalhar de forma desconectada é que surge a necessidade de sempre submeter todos os dados para o servidor, mesmo quando utilizamos AJAX estamos enviando todos os campos do formulário, só que ignoramos o que não nos interessa naquela chamada. Ou seja, não existe interação sem post-back que é o nome que damos a ação de enviar os dados para o servidor e receber uma resposta, resposta essa que geralmente reflete de alguma forma na página atual.

 

Tutorial ASP.NET 2.0 – Requisitos

Para acompanhar os tutoriais será necessário o SQL Server 2005 Express , Visual Studio 2005 ou Visual Web Developer Express ambos com o SP1 http://msdn2.microsoft.com/pt-br/vstudio/bb265237.aspx , ASP.NET 2.0 AJAX Extensions 1.0 e ASP.NET AJAX Control Toolkit http://ajax.asp.net/downloads/default.aspx?tabid=47.

Vamos utilizar o tipo de projeto Web Application, pois ele possui algumas facilidades para quem esta vindo da versão ASP.NET 1.1 e também desktop. E ao meu ver ser mais produtivo que o projeto padrão Web Site