• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Manual sobre a plataforma .Net

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Net Framework




Arquitetura básica da plataforma .Net. Descrição do Framework e seus principais componentes: Linguagens, biblioteca de classes e CLR.

Por Francisco Recio e David Provencio






A nova tecnologia de Microsoft oferece soluções aos problemas de programação atuais, como são a administração de código ou a programação para Internet. Para aproveitar ao máximo as características de .Net é necessário entender a arquitetura básica na que está implementada esta tecnologia e assim se beneficiar de todas as características que oferece esta nova plataforma.

O Framework de .Net é uma infra-estrutura sobre a que se reúne todo um conjunto de linguagens e serviços que simplificam enormemente o desenvolvimento de aplicações. Mediante esta ferramenta se oferece um ambiente de execução altamente distribuído, que permite criar aplicações robustas e escaláveis. Os principais componentes deste ambiente são:
Linguagens de compilação
Biblioteca de classes de .Net
CLR (Common Language Runtime)


fwimagen1.gif




Atualmente, o Framework de .Net é uma plataforma não incluída nos diferentes sistemas operacionais distribuídos por Microsoft, pelo qual é necessária sua instalação prévia à execução de programas criados mediante .Net. O Framework se pode baixar gratuitamente através da web oficial de Microsoft (ver link de download nos recursos do final).

.Net Framework suporta múltiplas linguagens de programação e embora cada linguagem tenha sua características próprias, é possível desenvolver qualquer tipo de aplicação com qualquer destas linguagens. Existem mais de 30 linguagens adaptadas a .Net, desde as mais conhecidas como C# (C Sharp), Visual Basic ou C++ até outras linguagens menos conhecidas como Perl ou Cobol.



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Common Language Runtime (CLR)

O CLR é o verdadeiro núcleo do Framework de .Net, já que é o ambiente de execução no qual se encarregam as aplicações desenvolvidas nas distintas linguagens, ampliando o conjunto de serviços que oferece o sistema operacional padrão Win32.

A ferramenta de desenvolvimento compila o código fonte de qualquer uma das linguagens suportadas por .Net em um mesmo código, denominado código intermediário (MSIL, Microsoft Intermediate Lenguaje). Para gerar tal código o compilador se baseia no Common Language Specification (CLS) que determina as regras necessárias para criar código MSIL compatível com o CLR.

Desta forma, indistintamente da ferramenta de desenvolvimento utilizada e da linguagem escolhida, o código gerado é sempre o mesmo, já que o MSIL é a única linguagem que entende diretamente o CLR. Este código é transparente ao desenvolvimento da aplicação já que o gera automaticamente o compilador.

Entretanto, o código gerado em MSIL não é código máquina e portanto, não pode se executar diretamente. Necessita-se um segundo passo no qual uma ferramenta denominada compilador JIT (Just-In-Time) gera o código máquina real que se executa na plataforma que tenha o computador.

Desta forma se consegue com .Net certa independência da plataforma, já que cada plataforma pode ter seu compilador JIT e criar seu próprio código máquina a partir do código MSIL.

A compilação JIT realiza o CLR à medida que se invocam os métodos no programa e, o código executável obtido, se armazena na memória cache do computador, sendo recompilado só quando se produz alguma mudança no código fonte.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Biblioteca de classes de .Net

Quando se está programando uma aplicação muitas vezes se necessitam realizar ações como manipulação de arquivos, acesso a dados, conhecer o estado do sistema, implementar segurança, etc. O Framework organiza toda a funcionalidade do sistema operacional em um espaço de nomes hierárquico de forma que na hora de programar resulta bastante simples encontrar o que se necessita.

Para isso, o Framework possui um sistema de tipo universal, denominado Common Type System (CTS). Este sistema permite que o programador possa interagir os tipos que se incluem no próprio Framework (biblioteca de classes de .Net) com os criados por ele mesmo (classes). Desta forma se aproveitam as vantagens próprias da programação orientada a objetos, como a herança de classes pré-definidas para criar novas classes, ou o polimorfismo de classes para modificar ou ampliar funcionalidades de classes já existentes.

fwimagen2.gif


A biblioteca de classes de .Net Framework inclui, entre outros, três componentes chave:
ASP.NET para construir aplicações e serviços Web.
Windows Forms para desenvolver interfaces de usuário.
ADO.NET para conectar as aplicações a bancos de dados.
A forma de organizar a biblioteca de classes de .Net dentro do código é através dos espaços de nomes (namespaces), onde cada classe está organizada em espaços de nomes segundo sua funcionalidade. Por exemplo, para manejar arquivos se utiliza o espaço de nomes System.IO e se o que se quer é obter informação de uma fonte de dados se utilizará o espaço de nomes System.Data.

A principal vantagem dos espaços de nomes de .Net é que desta forma se tem toda a biblioteca de classes de .Net centralizada sob o mesmo espaço de nomes (System). Ademais, através de qualquer linguagem se usa a mesma sintaxe de invocação, já que a todas as linguagens se aplica a mesma biblioteca de classes.




 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Ensamblados

Um dos maiores problemas das aplicações atuais é que em muitos casos têm que tratar com diferentes arquivos binários (DLL´s), elementos de registro, conectividade aberta a bancos de dados (ODBC), etc.

Para solucionar o Framework de .Net maneja um novo conceito denominado ensamblado. Os ensamblados são arquivos com forma de EXE ou DLL que contém toda a funcionalidade da aplicação de forma encapsulada. Portanto a solução ao problema pode ser tão fácil como copiar todos os ensamblados no diretório da aplicação.

Com os ensamblados já não é necessário registrar os componentes da aplicação. Isto se deve a que os ensamblados armazenam dentro de si mesmos toda a informação necessária no que se denomina o manifesto do ensamblado. O manifesto percorre todos os métodos e propriedades em forma de meta-dados junto com outra informação descritiva, como permissões, dependências, etc.

Para gerenciar o uso que fazem das aplicações dos ensamblados .Net utiliza o chamado cache global de ensamblados (GAC, Global Assembly Cache). Assim, .Net Framework pode hospedar no GAC os ensamblados que possam ser usados por várias aplicações e inclusive distintas versões de um mesmo ensamblado, algo que não era possível com o anterior modelo COM.

Recursos:

Página oficial de .Net Framework
.NET Framework Developer Center

Download de .Net Framework
Content not found
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Vantagens de .Net




Algumas das vantagens e inconvenientes da plataforma .Net.

Por Francisco Recio e David Provencio




A seguir se resumem as vantagens mais importantes que proporciona .Net Framework:
Código administrado: O CLR realiza um controle automático do código para que este seja seguro, ou seja, controla os recursos do sistema para que a aplicação se execute corretamente.
Interoperabilidade multilinguagem: O código pode ser escrito em qualquer linguagem compatível com .Net já que sempre se compila em código intermediário (MSIL).
Compilação just-in-time: O compilador JIT incluído no Framework compila o código intermediário (MSIL) gerando o código máquina próprio da plataforma. Aumenta-se assim o rendimento da aplicação ao ser específico para cada plataforma.
Garbage collector: O CLR proporciona um sistema automático de administração de memória denominado recolhedor de lixo (garbage collector). O CLR detecta quando o programa deixa de utilizar a memória e a libera automaticamente. Desta forma o programador não tem porque liberar a memória de forma explícita embora também seja possível fazê-lo manualmente (mediante o método disponse() liberamos o objeto para que o recolhedor de lixo o elimine da memória).
Segurança de acesso ao código: Pode-se especificar que uma peça de código tenha permissões de leitura de arquivos, porém não de escritura. É possível aplicar distintos níveis de segurança ao código, de forma que se pode executar código procedente do Web sem ter que se preocupar se isto vai estragar o sistema.
Desdobramento: Por meio dos ensamblados resulta muito mais fácil o desenvolvimento de aplicações distribuídas e a manutenção das mesmas. O Framework realiza esta tarefa de forma automática melhorando o rendimento e assegurando o funcionamento correto de todas as aplicações.
São tudo vantagens?

Processos como o recolhimento de lixo de .Net ou a administração de código introduzem fatores de sobrecarga que repercutem na demanda de mais requisitos do sistema.

O código administrado proporciona uma maior velocidade de desenvolvimento e maior segurança de que o código seja bom. Em contrapartida o consumo de recursos durante a execução é muito maior, embora com os processadores atuais isto seja cada vez menos inconveniente.

O nível de administração do código dependerá em grande medida da linguagem que utilizemos para programar. Por exemplo, enquanto que Visual Basic .Net é uma linguagem totalmente administrada, C Sharp permite a administração de código de forma manual, sendo por padrão também uma linguagem administrada. Enquanto que C++ é uma linguagem não administrada na qual se tem um controle muito maior do uso da memória que faz a aplicação.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Programação orientada a objetos, introdução



Introdução à programação orientada a objetos, utilizada na tecnologia .Net.

Por Francisco Recio e David Provencio





A programação orientada a objetos é uma evolução da programação procedural baseada em funções. A POO nos permite agrupar seções de código com funcionalidades comuns.

Uma das principais desvantagens da programação procedural baseada em funções é a sua construção, quando uma aplicação sob este tipo de programação cresce, a modificação do código se torna muito trabalhosa e difícil devido a que a mudança de uma só linha em uma função, pode acarrear a modificação de muitas outras linhas de código pertencentes a outras funções que estejam relacionadas.

Com a programação orientada a objetos se pretende agrupar o código encapsulando-o e tornando-o independente, de maneira que uma modificação devida ao crescimento da aplicação só afete a poucas linhas.

A organização de uma aplicação em POO se realiza mediante estruturas de código, também chamados objetos. Estes objetos contem uma série de procedimentos e informação destinados a resolver um grupo de tarefas com um denominador comum. Um procedimento que esteja situado em um objeto não poderá ser usado por outro procedimento pertencente a outro objeto, se não for sob uma série de regras. Os dados que mantiver o objeto, permanecerão isolados do exterior e só se poderá acessá-los seguindo certas normas.

O objetivo de POO é catalogar e diferenciar o código, em base a estruturas hierárquicas dependentes, ao estilo de uma árvore genealógica.

Os objetos se criam a partir de uma série de especificações ou normas que definem como vai ser o objeto, isto é o que em POO se conhece como uma classe.

As classes definem a estrutura que vão ter os objetos que se criarem a partir dela, indicando que propriedades e métodos terão os objetos.

As propriedades definem os dados ou informação do objeto, permitindo modificar ou consultar seu estado, enquanto que os métodos são as rotinas que definem o comportamento do objeto. É necessário ter muito claro qual é a diferença entre um objeto e uma classe, a este respeito podemos dizer que uma classe constitui a representação abstrata de algo enquanto que um objeto constitui a representação concreta do que a classe define. Imaginemos os planos de uma casa desenhados por um arquiteto, neles encontramos o esquema da casa, as medidas, os materiais, etc... Uma vez construída a casa poderemos comprovar que cumpre tudo o que os planos determinavam, desta maneira podemos comparar os planos da casa com as classes em POO, e a casa em si com um objeto criado a partir de uma classe. Deve-se destacar também que com os mesmos planos se podem criar muitas casas iguais, o mesmo ocorre em POO, a partir de uma classe se podem criar muitos objetos iguais.

A criação de um objeto a partir de uma classe se conhece como instanciação de um objeto.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Tipos de dados em .NET



Vemos os tipos de dados para a plataforma .NET, com seus correspondências tanto em VB.NET como em C#.

Por Francisco Recio e David Provencio





Todos as linguagens de programação que cumprem as normas de .NET têm muitas coisas em comum, uma delas é o conjunto de tipos de dados. Há que destacar que estes tipos de dados estão implementados como classes, de maneira que uma variável declarada de um tipo determinado, terá a capacidade de usar tanto os métodos como as propriedades que pertençam à classe do tipo de dado.
VB.NET
Dim Cadeia As String
Dim Longitude As Integer
Cadeia = "Dados"
Longitude = Cadeia.Length()

C#
String Cadeia;
Int Longitude;
Cadeia = "Dados";
Longitude = Cadeia.Length();


No exemplo anterior declaramos uma variável de tipo String (Cadeia de caracteres), e podemos ver como esta variável possui uma série de propriedades e métodos que podem ser invocados, neste caso usamos a propriedade Length() para obter o número de caracteres da variável Cadeia e atribuí-lo à variável Longitude, que passaria a ter o valor 5.

Na seguinte tabela se mostra uma relação dos tipos de dados de .NET Framework e sua correspondência em VB.NET e C#.


Nome da classe

Tipo de dado em VB.NET

Tipo de dado en C#

Descrição

Byte
Byte
Byte
Inteiro sem signo de 8 bit.

Sbyte
Sbyte (Não nativo)
sbyte
Inteiro sem signo de 8bit (Tipo não conforme com o CLS)

Int16
Short
short
Inteiro com signo de 16 bit.

Int32
Integer
int
Inteiro com signo de 32 bit.

Int64
Long
long
Inteiro com signo de 64 bit.

Uint16
UInt16 (No nativo)
ushort
Inteiro sem signo de 16 bit. (Tipo não conforme com o CLS)

Uint32
Uint32 (No nativo)
uint
Inteiro sem signo de 32 bit. (Tipo não conforme com o CLS)

Uint64
Uint64 (Não nativo)
ulong
Inteiro sem signo de 64 bit. (Tipo não conforme com o CLS)

Single
Single
float
Número com vírgula flutuante de precisão simples, de 32 bit.

Double
Double
double
Número com vírgula flutuante de precisão dupla, de 64 bit.

Boolean
Boolean
bool
Valor lógico

Char
Char
char
Caractere unicode de 16 bit.

Decimal
Decimal
decimal
Valor decimal de 96 bit.

IntPtr
IntPtr (No nativo)
--
Inteiro com signo cujo tamanho depende da plataforma: 32 bit em plataformas de 32 bit e 64 bit em plataformas de 64 bit. (Tipo não conforme com o CLS)

UintPtr
UintPtr (Não nativo)
--
Inteiro sem signo cujo tamanho depende da plataforma: 32 bit em plataformas de 32 bit e 64 bit em plataformas de 64 bit. (Tipo não conforme com o CLS)

String
String
string
Cadeia de caracteres.


Segundo o modo no qual se armazenam e manipulam estes tipos de dados se podem dividir em duas categorias.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Tipos de dados por valor e por referência



Podemos armazenar variáveis por valor e por referência. Explicamos o que significa cada um e as maneiras que .NET realiza este armazenamento.

Por Francisco Recio e David Provencio




Tipos por valor: os tipos por valor armazenam dados aos que se pode acessar de forma direta, por sua vez dentro desta categoria encontramos mais subcategorias como os tipos nativos de .NET, os tipos de dados criados pelo programador e os enumerados. Os tipos por valor não podem ter valores nulos.

Tipos por referência: Os tipos criados por referência armazenam o endereço de memória em que se encontra um dado determinado de maneira que usaremos esse endereço de memória para acessar de forma indireta ao dado. Os tipos por referência se dividem em vários subgrupos como são as classes próprias da plataforma, interfaces, classes criadas pelo programador, etc.

tiposreferencia.gif




Quando executamos uma aplicação é necessário que os dados se situem na memória do computador, a qual está divida em duas partes, uma chamada Stack, de pequeno tamanho, porém de acesso muito rápido e outra chamada Heap que conta com um maior tamanho, mas como uma velocidade de acesso inferior.

Quando criamos tipos por valor, o valor da variável deste tipo se armazena no Stack, se atribuímos uma variável destas características a outra, se cria uma cópia no Stack. Ao destruir um tipo por valor, se destrói também o valor que se salvou no Stack.
Quando criamos um tipo por referência, na verdade o que salvamos no Heap é um endereço de memória que aponta a um valor, porém não ao valor em si mesmo. Se atribuímos uma variável que contém um tipo por referência a outra variável, se diz que ambas se referem ao mesmo valor. Os tipos por referência podem conter valores nulos.








 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Criação de classes em VB.Net e C#



Explicação da criação de classes e objetos nas duas principais linguagens da plataforma .Net.

Por Francisco Recio e David Provencio





Para explicar a criação de classes usaremos um exemplo simples baseado em uma classe principal "bicicleta".

Para criar uma classe devemos definir suas propriedades e seus métodos, neste exemplo se usam os seguintes termos como propriedades da classe bicicleta: Modelo, Preço, NumeroDeVelocidades e Velocidade; como métodos da classe se usam: Acelerar(km) , Frear() e ConsultarVelocidade().

VB.NET
Public Class Bicicleta
Public Modelo as String
Public Preco as Double
Public NumeroDeVelocidades as Integer
Private Velocidade as Integer

Public Sub Acelerar(ByVal km As Integer)
Velocidade = Velocidade + km
End Sub

Public Sub Frear()
If Velocidade > 0 Then
Velocidade = Velocidade -1
End If
End Sub

Public Function ConsutarVelocidade() As Integer
Return Velocidade
End Function
End Class

C#
Class Bicicleta
{
public string Modelo;
public double Preco;
public int NumeroDeVelocidades
private int Velocidade

public void Acelerar(int km)
{
Velocidade = Velocidade + km;
}

public void Frear()
{
if (Velocidade > 0)
{
Velocidade = Velocidade - 1;
}
}

public int ConsultarVelocidade()
{
return Velocidade;
}
}



Nossa classe bicicleta consta de várias propriedades e métodos, as palavras Private e Public definem a possibilidade das propriedades, funções ou sub-rotinas. A definição de uma propriedade ou método de tipo privado indica que só poderá ser usada dentro do código da mesma classe, se criássemos um objeto de tipo bicicleta, as especificações da classe não nos permitiriam acessar à propriedade velocidade para consultá-la ou modificá-la, já que está definida como privada. Em troca se podem usar as sub-rotinas Acelerar() e Frear() já que são de tipo Public, e desde dentro delas se interage com as propriedades privadas, com isto conseguimos encapsular o código e tornar acessível só aquele que quisermos.

Uma vez construída a classe já se podem instanciar objetos da mesma.

VB.NET
Dim objBicicleta as Bicicleta = New Bicicleta

Dim VelocidadeAtual as Integer

objBicileta.Modelo = "Montanha"
objBicicleta.Preco = 200
objBicicleta.NumeroDeVelocidades = 21

objBicicleta.Acelerar(5)
objBicicleta.Frear()

VelocidadeAtual = objBicicleta.ConsultarVelocidade

C#
Bicicleta objBicicleta = new Bicicleta();

int VelocidadeAtual;

objBicicleta.Modelo = "Montanha";
objBicicleta.Preco = 200;
objBicicleta.NumeroDeVelocidades = 21;

objBicicleta.Acelerar(5);
objBicicleta.Frear();

VelocidadeAtual = objBicicleta.ConsultarVelocidade();



Após a criação do objeto objBicicleta a partir da classe, se podem modificar os valores das propriedades de tipo Public, e chamar aos métodos de tipo Public.

No exemplo se chama aos métodos Acelerar(5), passando-lhe o número de km que queremos acelerar através do parâmetro "km" que está definido na sub-rotina.

Logo, se chama ao método Frear() que decresce em uma unidade o valor da propriedade Velocidade.

Por último se usa a função ConsultarVelocidade(), que retorna o valor da propriedade Velocidade para introduzi-lo na variável VelocidadeAtual.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Aplicações de Console




Realizamos nossos primeiros programas em .NET, utilizando a console, que utiliza um formato de saída e entrada de dados em modo texto.

Por Francisco Recio e David Provencio





Pode-se definir uma aplicação de console como aquela que se executa em uma janela de MS-DOS, ou seja, em linha de comandos.

O mais comum dentro do desenvolvimento sob a plataforma .Net é a criação de aplicações Web ou aplicações Windows, entretanto a melhor forma de sentar umas bases firmes sob a programação orientada a objetos é começar construindo aplicações simples de console.

Nota: Para os exemplos descritos neste artigo usaremos o ambiente de desenvolvimento facilitado por Microsoft, Visual Studio.Net.

O primeiro exemplo de aplicação de console é um simples programa que pede ao usuário 2 números e lhe pergunta se deseja somá-los ou subtraí-los.

Antes de começar a desenvolver a aplicação há que conhecer a classe principal que interage com o console de MS-DOS, a classe Console.

Mediante esta classe se consegue mostrar informação na tela assim como capturar a informação que introduza o usuário, cabe destacar que os métodos da classe Console são de tipo Shared, isto significa que não é necessário criar um objeto a partir da classe para invocar a seus métodos, é possível fazê-lo indicando o nome da classe seguido de um ponto e o nome do método.

O método WriteLine()

Este método é o que se usa para mostrar texto no console, o método escreve na tela o valor que lhe passemos como parâmetro.

O parâmetro que recebe o método pode ser de vários tipos, já seja uma cadeia de caracteres, um número inteiro, uma linha em branco, etc...
VB.NET

Module Module1
Sub Main()
'Escrevemos uma cadeia de caracteres.
Console.WriteLine("Escrevendo uma linha no console")
'Escrevemos um número inteiro
Console.WriteLine(23)
'Escrevemos uma comparação lógica
Console.WriteLine(3 > 1)
Console.ReadLine()
End Sub
End Module

C#

using System;

namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//Escrevemos uma cadeia de caracteres.
Console.WriteLine("Escrevendo uma linha no console");
//Escrevemos um número inteiro
Console.WriteLine(23);
//Escrevemos uma comparação lógica
Console.WriteLine(3 > 1);
Console.ReadLine();
}
}
}



É importante destacar que este método adiciona automaticamente o enter no final da linha, isto significa que a seguinte chamada a Console.WriteLine() escreve na seguinte linha.

A última linha na que realizamos uma chamada ao método ReadLine() se utiliza para evitar que a tela se feche automaticamente.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Pant1.gif


O método ReadLine()

Este método se usa para recolher a informação que o usuário introduz quando a aplicação assim o requeira. Quando invocamos ao método Console.ReadLine() o sistema fica em espera até que o usuário clique a tecla Intro.

Se se atribui a chamada ao Console.ReadLine() a uma variável se consegue capturar o dado introduzido pelo usuário, para depois poder operar com ele.
VB.NET

'Declaramos uma variável de tipo cadeia de caracteres
Dim cadeia As String
'Mostramos uma mensagem ao usuário
Console.WriteLine("Por favor, introduza seu nome:")
'Capturamos o dado introduzido pelo usuário
cadeia = Console.ReadLine()
'Operamos com o dado
cadeia = "O nome introduzido é: " & cadeia
'Mostramos a cadeia
Console.WriteLine(cadeia)
Console.ReadLine()

C#

//Declaramos uma variável de tipo cadeia de caracteres
string cadeia;
//Mostramos uma mensagem ao usuário
Console.WriteLine("Por favor, introduza seu nome:");
//Capturamos o dado introduzido pelo usuário
cadeia = Console.ReadLine();
//Operamos com o dado
cadeia = "O nome introduzido é: " + cadeia;
//Mostramos a cadeia
Console.WriteLine(cadeia);
Console.ReadLine();



Pant2.gif




O método Read()

Este é outro método que permite capturar informação que provém do usuário. A diferença com o anterior é que Read() não espera a que o usuário clique intro para capturar o dado introduzido, e sim que o faz após o clique de qualquer tecla, capturando o valor da tecla clicada em código ASCII.



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Exemplo de aplicação de console



Uma vez que aprendemos a usar a classe console, vamos realizar uma aplicação de console.

Por Francisco Recio e David Provencio





Agora que se conhece um pouco melhor a classe Console, se dará começo à aplicação, as linguagens usadas para este exemplo são Visual Basic.Net e C#.

O primeiro que se deve fazer depois de arrancar Visual Studio.Net, é escolher a opção "Aplicação de console" (Fig1), após este passo Visual Studio gera as seguintes linhas:


Pant4.gif


VB.NET
Module Module1
Sub Main()

End Sub
End Module

C#
using System;

namespace ConsoleApplication3
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
}
}
}



Dentro do procedimento Main(), se introduz o código que se quer executar. O primeiro que há que fazer é declarar as variáveis que serão usadas, para este exemplo se usam 2 variáveis de tipo inteiro para recolher os valores dos números que introduzir o usuário:
VB.NET
Module Module1
Sub Main()
Dim Numero1 As Integer
Dim NUmero2 As Integer
End Sub
End Module

C#
using System;

namespace ConsoleApplication3
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int Numero1;
int Numero2;
}
}
}


Uma vez estando declaradas as variáveis, se solicitam ambos números ao usuário e se introduzem seus valores nas duas variáveis, a seguir se pede que se selecione uma das opções possíveis, somar ou diminuir.



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
VB.NET
Module Module1
Sub Main()
Dim Numero1 As Integer
Dim Numero2 As Integer

Console.WriteLine("Introduza o primeiro número")
Numero1 = Console.ReadLine()

Console.WriteLine("Introduza o segundo número")
Numero2 = Console.ReadLine()

Console.WriteLine("Escolha uma opção: 1 - Somar / 2 - Diminuir")
If (Console.ReadLine = 1) Then
Console.WriteLine("O resultado da soma é: " & Numero1 + Numero2)
Console.ReadLine()
ElseIf (Console.ReadLine = 2) Then
Console.WriteLine("O resultado da subtração é: " & Numero1 - Numero2)
Console.ReadLine()
Else
Console.WriteLine("Opção Incorreta")
End If
End Sub
End Module

C#
using System;

namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int Numero1;
int Numero2;
int opcion;

Console.WriteLine("Introduza o primeiro número");
Numero1 = Int32.Parse(Console.ReadLine());

Console.WriteLine("Introduza o segundo número");
Numero2 =Int32.Parse(Console.ReadLine());

Console.WriteLine("Escolha uma opção: 1 - Somar / 2 - Subtrair");
opcao = Int32.Parse(Console.ReadLine());
if (opcao == 1)
{
Console.WriteLine("O resultado da soma é: " + (Numero1 + Numero2));
}
else if (opcao == 2)
{
Console.WriteLine("O resultado da subtração é: " + (Numero1 - Numero2));
}
else
{
Console.WriteLine("Opção Incorreta");
}
Console.ReadLine();
}
}
}


Seguindo o fluxo da aplicação se pode ver depois que o usuário seleciona uma das 2 opções, se mostra o resultado da operação por tela.

Se o que se deseja é encapsular o código na medida do possível se podem construir 2 funções que realizem as operações de somar e subtrair e que escrevem o resultado na tela, o código ficaria da seguinte maneira:
VB.NET
Module Module1
Sub Main()
Dim Numero1 As Integer
Dim Numero2 As Integer

Console.WriteLine("Introduza o primeiro número")
Numero1 = Console.ReadLine()

Console.WriteLine("Introduza o segundo número")
Numero2 = Console.ReadLine()

Console.WriteLine("Escolha uma opção: 1 - Somar / 2 - Subtrair")
If (Console.Readline = 1) Then
Somar(Numero1, Numero2)
ElseIf (Console.ReadLine = 2) Then
Subtrair(Numero1, Numero2)
Else
Console.WriteLine("Opção Incorreta")
End If
End Sub

Sub Somar(ByVal Numero1, ByVal Numero2)
Console.WriteLine("O resultado da soma é: " & Numero1 + Numero2)
Console.ReadLine()
End Sub

Sub Subtrair(ByVal Numero1, ByVal Numero2)
Console.WriteLine("O resultado da subtração é: " & Numero1 - Numero2)
Console.ReadLine()
End Sub
End Module
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
C#
using System;

namespace ConsoleApplication2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int Numero1;
int Numero2;
int opcion;

Console.WriteLine("Introduza o primeiro número");
Numero1 = Int32.Parse(Console.ReadLine());

Console.WriteLine("Introduza ol segundo número");
Numero2 =Int32.Parse(Console.ReadLine());

Console.WriteLine("Escolha uma opção: 1 - Somar / 2 - Subtrair");
opcao = Int32.Parse(Console.ReadLine());
if (opcao == 1)
{
Somar(Numero1, Numero2);
}
else if (opcao == 2)
{
Subtrair(Numero1, Numero2);
}
else
{
Console.WriteLine("Opção Incorreta");
}
Console.ReadLine();
}
static void Sumar (int Numero1, int Numero2)
{
Console.WriteLine("O resultado da soma é: " + (Numero1 + Numero2));
Console.ReadLine();
}

static void Restar (int Numero1, int Numero2)
{
Console.WriteLine("O resultado da subtração é: " + (Numero1 - Numero2));
Console.ReadLine();
}
}
}


Desta maneira, consegue-se encapsular funcionalidades dentro da aplicação, atribuindo as tarefas de Somar e Subtrair a duas sub-rotinas, a principal vantagem é que uma vez que tivermos assegurado que ambas sub-rotinas funcionam, poderemos nos esquecer delas e continuar com o desenvolvimento da aplicação.

O resultado da execução de qualquer dos 2 códigos anteriores é o seguinte:[





Pant3.gif
/B]
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Criação de uma aplicação Windows



Introdução à criação em .NET de aplicações em ambiente de janelas, chamadas geralmente aplicações Windows.

Por Francisco Recio e David Provencio





A criação de aplicações Windows sempre foi uma tarefa complexa devido à dificuldade de ter que criar uma interface gráfica que interaja com o usuário. Os Formulários de Windows (Windows Forms) de .Net permitem a criação de aplicações de interface gráfica de forma simples. .Net proporciona um amplo conjunto de controles como botões, caixas de texto, etiquetas, etc. que, unidos à completa biblioteca de classes de .Net, torna possível o desenvolvimento de aplicações em pouco tempo.

Nos seguintes exemplos se usou Visual Studio.Net, não obstante, é possível criar aplicações Windows com um simples editor de texto e uma ferramenta de compilação compatível com o CLR de .Net Framework. Visual Studio.Net admite desenhar a aplicação de forma visual, permitindo em cada momento acessar ao código gerado e servindo ademais como ferramenta de compilação e depuração.

Para começar uma nova aplicação, se executa Visual Studio e se seleciona Novo Projeto, onde aparecem os diferentes tipos de aplicações que se podem realizar com cada linguagem, selecionando neste caso Aplicação para Windows. Uma vez introduzido o nome da aplicação e a rota onde se localizará se clica Aceitar.


pantalla11.gif



Fig 1. Janela de criação de novo projeto.


Nos seguintes exemplos se mostra como criar uma aplicação baseada em formulários nas duas linguagens mais comuns, tanto para Visual Basic .Net como para C#, deixando ao leitor a escolha da linguagem que lhe pareça mais próxima.

Depois de ter criado o projeto, se dispõe de uma aplicação completa que pode ser executada. Isto pode ser realizado no menu Depurar pulsando no elemento Iniciar (Tecla F5) o que executará diretamente a aplicação dentro de Visual Studio.Net. Veja o código criado até agora:









 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
VB.NET
Public Class Form1
nbsp; Inherits System.Windows.Forms.Form

+ " Código gerado pelo designer de Windows Forms "

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'escreva aqui seu código.

End Sub

End Class


Se se optou por C# pode-se comprovar que o código é muito parecido, embora seja algo mais extenso já que a iniciação por padrão está situada fora da região do código que o designer vai gerando automaticamente.

No código gerado, o formulário 'Form1' é uma classe que provém mediante a palavra chave inherits (heredar) do espaço de nomes System.Windows.Forms.Form pertencente à biblioteca de classes de .Net. As aplicações desenvolvidas com .Net utilizam a biblioteca de classes incluída no Framework de .Net que proporcionam um conjunto de funcionalidades pré-fabricadas que facilitam o desenvolvimento. Esta biblioteca de classes está organizada em espaços de nomes dependendo de sua funcionalidade.

Todas as linguagens incluídas em .Net estão orientadas a objetos, seguindo esta metodologia o formulário 'Form1' se declara como uma classe. Como se verá mais adiante, isto facilita o acesso aos métodos e propriedades do formulário e dos controles que se incluam ao tratar a cada elemento como objetos independentes.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Inserção de controles



Explicação sobre o processo de inserir controles em uma aplicação Windows. Os controles são elementos que podemos colocar em uma aplicação para interagir com o usuário ou visualizar os resultados do programa.

Por Francisco Recio e David Provencio





Os controles simplificam a criação da interface facilitando ademais a interação ordenada do usuário com a aplicação e a visualização dos resultados. Dentro da região denominada "Código gerado pelo Designer de Windows Forms", o designer cria automaticamente o código correspondente a cada controle segundo vão se adicionando estes através da tela de designer visual. Portanto, para inserir um novo controle basta arrastá-lo através do quadro de ferramentas ao formulário da aplicação.

Arrastando um controle de tipo botão ao nosso formulário e analisando o código gerado se observa o seguinte:
VB.NET
Me.Button1 = New System.Windows.Forms.Button()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(184, 64)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"

C#
this.button1 = new System.Windows.Forms.Button();
//
// button1
//
this.button1.Location = new System.Drawing.Point(184, 88);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";


Ao introduzir um controle de tipo botão se gera no código um objeto chamado 'button1' pertencente à classe System.Windows.Forms.Button e se estabelecem as propriedades por padrão para esse objeto. Estas propriedades se podem modificar através da vista de desenho clicando sobre o controle 'button1' e selecionado o painel de propriedades (Tecla F4).

Outra forma de mudar as propriedades de um controle é modificando o código gerado automaticamente pelo designer. A seguir se mostra um simples exemplo onde se modifica o literal de texto que aparece sobre o botão 'button1':
VB.NET
'load da classe Form1
Button1.Text = "Clique aqui"

C#
//load da classe Form1
button1.Text="Clique aqui";
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Uso de eventos em .Net



Os eventos são chamados ao código que se produzem quando o usuário realiza uma ação. Aprendemos a utilizá-los em .NET

Por Francisco Recio e David Provencio





Os eventos são chamados ao código que se produzem quando o usuário realiza uma ação como, por exemplo, clicar um botão ou selecionar um elemento de uma lista. Os eventos respondem à ação do usuário sobre um controle executando uma função situada no código.

A seguir se mostra um simples exemplo no qual se introduzem uma série de controles na vista de desenho modificando as propriedades tal como aparecem na imagem.

pantalla31.gif



Ao clicar duas vezes sobre o botão 'btnBoton' se cria automaticamente no código do formulário o evento que se corresponde com o clique do botão. A função criada se denomina por padrão 'btnBoton_Click' e responde ao evento btnBoton.Click que se indica por meio da palavra-chave handles (manejador). Seguidamente se mostra o código no evento que interage com o resto de controles:




 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
VB.NET
Private Sub btnBoton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBoton.Click

lblResultado.Text = "Ola " & txtNome.Text

End Sub

C#
private void btnBoton_Click(object sender, System.EventArgs e)
{
lblResultado.Text = "Ola " + txtNome.Text;
}


Cada controle tem sua própria coleção de eventos. Para criar um novo evento se utiliza o menu select de classes e seu correspondente menu de métodos situados na parte superior do código.



pantalla41.gif
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Interação entre objetos e controles




As aplicações .NET utilizam objetos que nós mesmos podemos programar. Aprendemos a trabalhar conjuntamente com os controles das aplicações Windows e os objetos que possamos ter programado.

Por Francisco Recio e David Provencio





A programação orientada a objetos proporciona um melhor ordenamento e clareza do código. A forma de programar consiste em dividir o código em classes de objetos que posteriormente podem ser reutilizados. Para mais informação se recomenda ler o artigo de 'Programação orientada a objetos, introdução' incluído nesta seção.

Ao iniciar a aplicação, o ponto de início do código se situa por padrão no evento 'Load' da classe 'Form1', se bem que se pode mudar dentro das propriedades do projeto através do explorador de soluções. O evento 'Load' é uma sub-rotina que não devolve nenhum valor. Nela se podem instanciar objetos de outras classes para ser utilizados posteriormente. O seguinte exemplo mostra como criar uma classe própria e a instanciação de um objeto de tal classe:
VB.NET
Public Class MinhaClasseSomar

Public resultado As Integer

Public Function somar(ByVal NumSoma1 As Integer, ByVal NumSoma2 As Integer) As Integer

Return NumSoma1 + NumSoma2

End Function

End Class
 
Topo