Escolar Documentos
Profissional Documentos
Cultura Documentos
APOSTILA PARTE 2
Introduo a C# e VB.net
Modelos Anteriores Linguagem C
- Gerenciamento de Memria Manual.free (ponteiro);
- Pode acessar reas de memrias proibidas;
- Linguagem Estruturada (Imperativas);
- No tira proveito de recursos da OO, como herana;
- Complexo desenvolvimento quando se utiliza de APIs puras;
- Complexidade ao se usar milhares de funes e Tipos de Dados;
APOSTILA PARTE 2
Modelos Anteriores C, C++, VB6
APOSTILA PARTE 2
- Hoje engloba uma serie de tecnologia para o desenvolvimento de software;
APOSTILA PARTE 2
Plataforma .NET Web Services
WEB SERVICES
APOSTILA PARTE 2
Pelo que pude perceber at o momento no h linguagem melhor ou pior. H
linguagem que voc melhor se adapta ou prefere.
Os sistemas desenvolvidos em .NET so auto-explicativos: cada programa compilado
contm em si informaes necessrias em METATAGS que faz com que o runtime no
precise procurar as informaes no registro do Windows. Por exemplo quando criamos um
sistema, o mesmo pode ser executado em qualquer mquina (que suporte a .NET) sem
necessidade da instalao. Todas as informaes necessrias para que o sistema seja
executado so encontrados dentro nas METATAGS dentro dele mesmo. Com isso temos um
sistema auto-explicativo, pois as informaes necessrias esto armazenadas dentro dele e
no no registro do sistema operacional.
como
XYZ.NET,
assim
como
Python.NET,
Cobol.NET
etc.
Caractersticas:
-
Localizar;
Carregar;
Gerenciar;
APOSTILA PARTE 2
-
APOSTILA PARTE 2
APOSTILA PARTE 2
.NET FRAMEWORK CLS (Common Language Specification)
Define um conjunto de regras que as linguagens que implementam a .NET devem
seguir para que a CLR possa gerar a IL.
Esse um dos motivos de podermos criar sistemas em diferentes linguagens e
interagir entre elas dentro da .NET. No momento da compilao gerado um cdigo nico
intermedirio (IL) e todas essas linguagens suportadas pela .NET seguem as regras da CLS,
para que depois de gerado a IL, ela seja interpretada corretamente pela CLR, como j dito
acima.
Caractersticas:
- Especificaes relacionadas aos subtipos comuns;
- Todas as linguagens suportadas pelo .NET;
- Com isso podemos concluir que um tipo .NET tem que ir de acordo com as
especificaes do CLS, com isso todas as linguagens suportadas podero
interoperar.
10
APOSTILA PARTE 2
A .NET oferece uma biblioteca de componentes para trabalhar com grficos, chamadas
GDI+, que se encontra neste namespace.
System.IO:
Biblioteca para lidar com entrada e sada, gerenciamento de arquivos etc.
System.NET:
Bibliotecas para programao de redes, sockets etc.
System.Reflection:
Biblioteca necessria para gerar cdigo em tempo de execuo, descobrir tipo de variveis
etc.
System.RuntimeInteropServices e System.Runtime.Remoting:
Fornece bibliotecas para interagir com cdigo no-gerenciado.
System.Security:
Criptografia, permisso e todo o suporte referente segurana.
System.Threading:
Biblioteca para aplicaes multithread
System.Web:
Biblioteca sobre tudo relacionado a Web, como Webservices, ASP.NET etc.
System.Windows.Forms:
Bibliotecas para o desenvolvimento de aplicaes Windows tradicionais.
System.XML:
Biblioteca que permite a interao com documentos XML.
Estrutura da arquitetura .NET em camadas:
Primeira: Linguagem de programao preferida e aceita pela especificao da CLS e CTS.
Segunda: BCL (Base Class Library)
Terceira: CLR (Common Language Runtime)
Quarta: CTS (Common Type System) e CLS (Common Language Specification)
Explicando melhor as camadas e para que servem, ficaria da seguinte forma:
Voc usar sua linguagem de programao preferida e que seja suportada pela .NET
(primeira camada) e ento criar seus sistemas. E, para cri-los, voc acessar as classes da
BCL, j que tudo objeto em .NET. (segunda camada) Feito isso, seu programa dever ser
compilado e ento gerado a IL que, por sua vez, ser interpretada pela CLR (terceira
camada), que dever passar pelas especificaes da CTS e CLS (quarta camada).
11
APOSTILA PARTE 2
.NET FRAMEWORK Metadados ou METADATA
Um programa feito na plataforma .NET, como j dito, no utiliza o registro do
Windows por ser auto-explicativo. As informaes so armazenadas em METADATA dentro
de cada programa no momento da compilao.
Que informaes so essas?
Descrio dos tipos (classes, estruturas, tipos enumerados etc) usado na aplicao,
podendo esta ter sido gerada em forma de DLL ou executvel.
Descrio dos membros (propriedades, mtodos, eventos etc.)
Descrio de cada unidade de cdigo externo (assembly) usada na aplicao e que
requerida para que esta execute adequadamente.
Resoluo de chamada de mtodo.
Resoluo de verses diferentes de uma aplicao.
Outra coisa muito importante nas aplicaes .NET que mesmo duas aplicaes
sendo homnimas, elas convivem normalmente no mesmo ambiente. Isto acontece porque
na METADATA contem a verso de cada um, evitando o conflito entre as aplicaes. A CLR
procura na METADATA a verso correta da aplicao a ser executada.
12
APOSTILA PARTE 2
.NET FRAMEWORK - Compilao JIT (Just in Time)
O compilador JIT, tambm conhecido como JITTER, converte as instrues da IL
para instrues especficas da arquitetura do processador onde a aplicao .NET esta sendo
executada.
Temos trs tipos de JITTER:
Pre-JIT: Compila de uma s vez todo o cdigo da aplicao .NET que esta sendo
executada e o armazena no cache para uso posterior.
Econo-JIT: Utilizado em Hand-Helds onde a memria um recurso precioso.
Sendo assim, o cdigo compilado sob demanda e a memria alocada que no esta
em uso liberada quando o dispositivo assim o requer.
Normal-JIT: Compila o cdigo sob demanda e joga o cdigo resultante em cache, de forma
que esse cdigo no precise ser recompilado quando houver uma nova invocao do
mesmo mtodo.
13
APOSTILA PARTE 2
.NET FRAMEWORK GC - (Garbage Collector - Coletor de Lixo)
Gerenciar memria no deve ser uma preocupao de quem desenvolve sistemas
para tratar sobre regras de negcio e com .NET voc no precisa se preocupar com o
gerenciamento de memria porque o GC faz isso pra voc. Quando uma rea de memria
no esta mais em uso, o GC trata de liber-la. E quando necessrio a utilizao de um novo
espao o GC tambm faz isso pra voc. No por isso que voc deixar de finalizar seus
objetos, mas caso isso acontea (esta a pior das hipteses) o GC tratar este caso.
Apesar de que mesmo voc no trabalhando com C/C++, em .NET voc tambm
poder gerenciar memria o que torna o desempenho maior. Em contrapartida
considerado um mtodo inseguro, conhecido como "unsafe code".
Tipos de variveis:
A seguinte tabela mostra os tipos do C# com sua referencia no Framework.
Os tipos da tabela abaixo so conhecidos como tipos internos ou Built-in.
C# Type
.NET
type
Framework
bool
System.Boolean
byte
System.Byte
sbyte
System.SByte
char
System.Char
decimal
System.Decimal
double
System.Double
float
System.Single
int
System.Int32
uint
System.UInt32
long
System.Int64
ulong
System.UInt64
object
System.Object
short
System.Int16
ushort
System.UInt16
string
System.String
14
APOSTILA PARTE 2
Comparao C# E VB.NET
Vb.net
C#
Cada tipo no C# um atalho para o tipo do Framework. Isso quer dizer que se
declararmos a varivel desta forma:
string nome;
ou dessa forma
System.String nome;
teremos o mesmo resultado. O atalho serve apenas para facilitar na hora de
desenvolver a aplicao.
A seguinte tabela mostra os tipos de variveis e os valores possveis de se
armazenar em cada uma delas.
C#/Vb.net
bool
byte
sbyte
char
decimal
15
APOSTILA PARTE 2
double
float
int
uint
long
ulong
object
short
ushort
string
16
APOSTILA PARTE 2
Diferena na Declarao de variveis entre C# e VB.net
Visual Basic .NET
Dim contador As Integer
Dim contador As Integer = 10
Dim dados As Double
Dim dados As Double = 3.5#
Dim valor As Single
Dim nome As String
Dim c As Char
Dim l As Long
Dim m As Decimal
Dim obj As MinhaClasse
Dim obj1 As New MinhaClasse()
Dim obj2 As MinhaClasse = New
MinhaClasse()
Public endereco As String
Private cidade As String
C#
int contador;
int contador = 10;
double dados;
double dados = 3.5;
float f;
string nome;
char c;
long l;
decimal m;
MinhaClasse obj;
MinhaClasse obj1 = new
MinhaClasse();
MinhaClasse obj2 = new
MinhaClasse();
public string endereco;
private string cidade;
Aritmtica
Operadores aritmticos C#.
Operador Descrio
+ (Adio)
- (Subtrao)
* (Multiplicao)
/ (Diviso)
% (Resto/Mdulo)
Dos cinco operadores citados acima os trs primeiros trabalham da maneira que ns j
conhecemos (Adio, Subtrao e Multiplicao), j o operador de Diviso / trabalha de
maneira diferente na diviso de um inteiro, por exemplo, quando dividimos 11 por 2 usando
esse operador (sendo 11 um inteiro) o resto da diviso descartado, pois os inteiros no
aceitam numeros fracionrios, ou seja, o resultado seria 5. J o operador % tem como sua
nica funo pegar o resto de uma diviso usando o mesmo exemplo dividindo 11 por 2
usando o operador % modulo o resultado seria 1, j que o resto da diviso.
Agora vamos fazer um pequeno exerccio para praticar os conceitos aprendidos, veja:
using System;
class OperadoresAritmeticos
{
public static void Main ()
{
int soma = 0, diferenca=0, produto=0, resto=0;
double divisao=0; // resultado da diviso
int num1 = 10, num2 = 2;
soma = num1 + num2;
Tecnologia da Informao o nosso DNA
17
APOSTILA PARTE 2
diferenca = num1 - num2;
produto = num1 * num2;
divisao = num1 / num2;
// resto de 3/2
resto = 3 % num2;
Console.WriteLine("num1 = {0}, num2 = {1}", num1, num2);
Console.WriteLine();
Console.WriteLine("Soma de {0} e {1} {2}", num1, num2, soma);
Console.WriteLine("Diferena de {0} e {1} {2}", num1, num2, diferenca);
Console.WriteLine("Produto de {0} e {1} {2}", num1, num2, produto);
Console.WriteLine("Quociente de {0} e {1} {2}", num1, num2, divisao);
Console.WriteLine();
Console.WriteLine("resto de 3 quando dividido por {0} {1}", num2, resto);
}
}
O exemplo acima embora simples faz uso de todos os operadores aritmticos, como
voc j viu no artigo passado o mtodo WriteLine da classe Console apenas mostra uma
mensagem na tela, veja a seguinte linha de cdigo:
Voc deve estar se perguntando o que significa esses {0}, {1} e {2}, isso serve para
ns dizermos ao programa onde se encontra o valor da variavel nessa string, ou seja,
{0} ser substitudo por num1, {1} ser substitudo por num2 e {2} ser
substitudo por soma.
Operadores de atribuio
Operador Descrio
= (Atribuio simples)
+= (Atribuio aditiva)
-= (Atribuio Subtrativa)
*= (Atribuio Multiplicativa)
/= (Atribuio de diviso)
%= (Atribuio de mdulo)
Um operador de atribuio serve justamente para atribuirmos um valor a uma varivel, veja:
x = 5;
Ou seja, simplesmente atribumos o valor 5 a varivel x usando o operador de atribuio
simples =.
Outro exemplo:
int num1=10, num2=2;
num1 += num2;
Primeiro atribumos o valor 10 a varivel num1 e o valor 2 a varivel num2, na segunda linha
atribumos o valor de num2 a varivel num1 com o operador de atribuio +=, que valor ter
num1 agora?
Neste caso num1 ter o valor atribudo igual a 12, pois seria o mesmo que:
int num1=10, num2=2;
num1 = num1 + num2;
O mesmo valido para os outros operadores, exemplo:
int num1=10, num2=2;
num1 -= num2;
O que seria o mesmo que:
Tecnologia da Informao o nosso DNA
18
APOSTILA PARTE 2
int num1=10, num2=2;
num1 = num1 - num2;
Neste caso usamos o operador -= e o resultado de num1 seria 8, e assim por diante.
Obs: Faa as Prticas da APostila.
19