17

Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …
Page 2: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …
Page 3: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

AutorLuiz Henrique C. CorrêaProfissional com mais de 5 anos de experiência em desenvolvimento de softwares. Especialista na plataforma .NET, com a qual trabalha desde a versão .NET 1.1 da Framework. Possui certificações da IBM (RUP), ITIL, além das MCP e MCTS da Microsoft. Entusiasta das Metodologias Ágeis.

RevisãoNT Editora e Figuramundo

Projeto GráficoNT Editora

Editoração EletrônicaNT Editora e Figuramundo

CapaNT Editora

NT Educação, uma empresa do Grupo NTSCS Q2 - Bl. D - Salas 307 e 308 - Ed. Oscar NiemeyerCEP 70316-900 - Brasília - DFFone: (61) [email protected] e www.grupont.com.br

Linguagem de Programação C#. / NT Editora.

-- Brasília: 2013. 170p. : il. ; 21,0 X 29,7 cm.

ISBN - 978-85-68004-71-5

1. Linguagem de Programação, Microsoft .NET, C#.

Copyright © 2014 por NT Editora.Nenhuma parte desta publicação poderá ser reproduzida por

qualquer modo ou meio, seja eletrônico, fotográfico, mecânico ou outros, sem autorização prévia e escrita da NT Editora.

Page 4: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

LEGENDA

ÍCONES

Prezado(a) aluno(a),Ao longo dos seus estudos, você encontrará alguns ícones na coluna lateral do material didático. A presença desses ícones o ajudará a compreender melhor o conteúdo abor-dado e também como fazer os exercícios propostos. Conheça os ícones logo abaixo:

Saiba MaisEste ícone apontará para informações complementares sobre o assunto que você está estudando. Serão curiosidades, temas afins ou exemplos do cotidi-ano que o ajudarão a fixar o conteúdo estudado.

ImportanteO conteúdo indicado com este ícone tem bastante importância para seus es-tudos. Leia com atenção e, tendo dúvida, pergunte ao seu tutor.

DicasEste ícone apresenta dicas de estudo.

Exercícios Toda vez que você vir o ícone de exercícios, responda às questões propostas.

Exercícios Ao final das lições, você deverá responder aos exercícios no seu livro.

Bons estudos!

Page 5: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

4 NT Editora

Sumário

1. A PLATAFORMA MICROSOFT.NET ...................................................................71.1 O que é a Plataforma .NET? ...................................................................................................71.2 Características da plataforma ..............................................................................................81.3 Tecnologias disponíveis .........................................................................................................91.4 A evolução da plataforma .....................................................................................................91.5 Elementos fundamentais da framework ....................................................................... 12

2. A IDE MICROSOFT VISUAL STUDIO ...............................................................192.1 Versões do Visual Studio 2010 .......................................................................................... 192.2 Baixando e instalando o Visual Studio Express Edition .......................................... 192.3 Conhecendo o Visual Studio Express Edition e entendendo o ambiente de programação .................................................................................................................................. 202.4 Solution e projetos – Solution Explorer ........................................................................ 222.5 Application Console ............................................................................................................. 232.6 A estrutura de um programa C# em Application Console ..................................... 242.7 Criando e executando nossa primeira aplicação ....................................................... 24

3. NOÇÕES BÁSICAS DA LINGUAGEM C# .........................................................293.1 Um pouco de história ......................................................................................................... 293.2 Características da linguagem ............................................................................................ 293.3 Declaração de variáveis ....................................................................................................... 303.4 Tipos primitivos do C# ......................................................................................................... 313.5 Palavras reservadas ............................................................................................................... 33

4. PROGRAMANDO EM C# .................................................................................364.1 Estrutura de um programa em C# ................................................................................... 364.2 Entrada, processamento e saída de dados (conceito de sistemas) ..................... 394.3 Desenvolvimento de software .......................................................................................... 444.4 Estruturas de controle, decisão e repetição ................................................................. 444.5 Laço for e a estrutura condicional switch case ............................................................ 514.6 Enum .......................................................................................................................................... 574.7 Cast/Parse ................................................................................................................................. 59

Page 6: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

5Linguagem de Programação C#

5. PROGRAMAÇÃO ORIENTADA A OBJETOS ....................................................645.1 Pensando em objetos .......................................................................................................... 655.2 Classe ......................................................................................................................................... 665.3 Objeto ........................................................................................................................................ 665.4 Herança ..................................................................................................................................... 675.5 Propriedades ou atributos ................................................................................................. 675.6 Encapsulamento .................................................................................................................... 675.7 Modificadores de acesso .................................................................................................... 685.8 Métodos e eventos ............................................................................................................... 685.9 Interfaces .................................................................................................................................. 695.10 Classes abstratas ................................................................................................................. 695.11 Classes, métodos e propriedades estáticas (membro static) .............................. 705.12 Sobrecarga de métodos ................................................................................................... 705.13 Polimorfismo ........................................................................................................................ 71

6. REFATORANDO O PROJETO ...........................................................................746.1 Mundo OO ............................................................................................................................... 746.2 Exemplos OO da vida real .................................................................................................. 746.3 Estudar OO é um longo caminho .................................................................................... 756.4 Entendendo os benefícios da OO e das boas práticas ............................................. 766.5 Arrumando a casa... .............................................................................................................. 766.6 Novo projeto, TelaLogin ...................................................................................................... 776.7 Colocando a classe TelaLoginEstruturada para funcionar ...................................... 786.8 O Princípio da responsabilidade dos métodos e objetos ....................................... 80

7. DESENVOLVENDO ORIENTADO A OBJETOS .................................................837.1 Analisando a classe TelaLoginEstruturada ................................................................... 837.2 Identificando nossas classes .............................................................................................. 857.3 Classes de formulário ........................................................................................................... 897.4 Conclusão ...............................................................................................................................101

Page 7: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

6 NT Editora

8. UM POUCO MAIS SOBRE O FRAMEWORK .NET..........................................1048.1 Classe Object.........................................................................................................................1048.2 Tipos por valor e por referência (Value Types – Reference Types) .....................1068.3 Struct........................................................................................................................................1078.4 Trabalhando com strings ..................................................................................................1088.5 Concatenando strings corretamente ...........................................................................1118.6 Classe StringBuilder ............................................................................................................1128.7 Trabalhando com datas .....................................................................................................1138.8 Trabalhando com exceções .............................................................................................1158.9 Tipos nullable ........................................................................................................................123

9. COLLECTIONS (COLEÇÕES) ..........................................................................1299.1 Collections Interfaces ........................................................................................................1299.2 Arrays .......................................................................................................................................1309.3 Palavras reservadas usadas com collections ..............................................................1409.4 Collections especializadas ...............................................................................................141

10. GENERICS ...................................................................................................14910.1 Boxing e unboxing ...........................................................................................................15010.2 Coleções Generics.............................................................................................................15110.3 List<T> ..................................................................................................................................15110.4 Stack e queue .....................................................................................................................15310.5 HashSet .................................................................................................................................15510.6 SortedList .............................................................................................................................15510.7 Dictionary ............................................................................................................................15610.8 Criando suas próprias classes genéricas ..................................................................15610.9 Métodos Generics .............................................................................................................15710.10 Conclusão ..........................................................................................................................158

11. PROGRAMANDO PARA WINDOWS COM C# .............................................16111.1 Introdução Windows Forms ..........................................................................................16111.2 Conceitos básicos de aplicações Windows Forms ................................................16211.3 Componentes .....................................................................................................................16511.4 Eventos .................................................................................................................................167

BIBLIOGRAFIA ..................................................................................................170

Page 8: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

7Linguagem de Programação C#

1. A PLATAFORMA MICROSOFT.NET

NOTA: Neste curso usaremos as palavras sistema, programa e aplicativo como sinônimos. Ou seja, elas sempre representarão a mesma coisa, mesmo que em determinados contextos (fora

deste nosso curso) elas tenham significados ligeiramente diferentes.

1.1 O que é a Plataforma .NET?Vamos ampliar o exemplo do terreno e da nossa casa para chegarmos ao entendimento do que

significa a Plataforma .NET.

Vamos imaginar que o terreno no qual nós queremos construir a nossa casa é bastante arenoso e acidentado. Então, para que a nossa casa possa subir de forma segura, foi necessário criar uma ca-mada superior ao terreno, de forma que essa camada de terra e brita pudesse assentar melhor a nossa casa. Pronto, temos aí uma camada intermediária entre o terreno e a nossa casa.

É mais ou menos isso que a Microsoft fez ao criar o .NET. Trata-se de uma camada intermediária entre o programa que vamos construir e o sistema operacional. Essa camada intermediária é a Fra-mework .NET, que é a plataforma na qual os nossos programas em C# irão rodar.

Uma outra plataforma bem conhecida é a Java (da antiga SUN e atualmente da Oracle). O con-ceito de Java pode servir perfeitamente para explicar grande parte dos conceitos plataforma .NET.

Tanto a ideia da Sun ao criar o Java, quanto da Microsoft ao criar o .NET era desenvolver uma plataforma intermediária ao sistema operacional.

No caso do Java, essa plataforma intermediária (chamada de JVM – Java Virtual Machine) possui versões para diversos sistemas operacionais. Essa estratégia é resumida no “lema” do Java: Write Once Run Anywhere (escreva uma vez e rode em qualquer lugar).

Todo programa de computador precisa rodar em alguma plataforma.Um programa como o Word, por exemplo, roda na plataforma Windows. O Windows é um sistema operacional moderno, que possui diversos recursos nativos que os programadores podem

usufruir para construir os seus programas, são as chamadas API’s (http://pt.wikipedia.org/wiki/API).

Para fazermos um paralelo mais simples de entender, o sistema operacional é como se fosse o terreno onde iremos construir a

nossa casa. Sendo assim, a nossa casa seria o programa que “será executado” sobre o terreno (sistema operacional) Windows.

Diante disso, podemos encarar o Windows como uma plataforma, pois além de abrigar o nosso programa, ele nos oferece recursos que

facilitam a criação desses aplicativos.

API’s: Application Programming Interface

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 9: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

8 NT Editora

Conceitualmente com o .NET ocorre a mesma coisa, porém a Microsoft não criou versões do .NET para rodar em outros sistemas operacionais. Mesmo assim, existe uma iniciativa já bem difundida pela comunidade chamada Projeto Mono. Mono é um projeto que tem por objetivo justamente criar uma versão da Framework que rode no Linux. Vale dar uma olhada nesse projeto e acompanhar a sua evolução (http://www.mono-project.com/Main_Page).

A grande diferença inicial das duas plataformas (Java e .NET) é que o .NET nasceu independente de linguagem, ao contrário do Java que nasceu independente de sistema operacional.

Mas com a evolução das suas tecnologias, tanto o Java quanto o .NET se adaptaram, e hoje o .NET roda em mais plataformas (projeto Mono, mencionado anteriormente), e o Java já permite que mais linguagens sejam utilizadas na JVM, como Ruby e Scala.

C# (a nossa linguagem alvo) é uma poderosa linguagem de programação que nos possibilita criar vários tipos de programas para as mais diversas necessidades. Ela é uma das muitas linguagens que pode rodar na Plataforma Microsoft .NET.

Outros dois exemplos (de dezenas) de linguagens que rodam na Plataforma .NET é o VB.NET e o F#. No nosso curso, nós aprenderemos somente C#, que, ao lado do VB.NET, é a linguagem de progra-mação mais utilizada na plataforma da Microsoft.

Grande parte do poder do C# vem do seu ambiente de execução, que podemos resumir como sendo a Plataforma .NET. É sobre essa poderosa plataforma que os nossos programas serão executa-dos. Por esse motivo, antes de começarmos a falar de C#, é preciso entender um pouco sobre a Plata-forma .NET. E é por ela que começaremos a nossa viagem no mundo do C#.

1.2 Características da plataformaA Framework .NET é um completo e poderoso ambiente de execução de programas. Existem

milhares de aplicativos construídos para essa plataforma. Alguns dos motivos do seu sucesso são:

• Um ambiente totalmente orientado a objetos

Tudo dentro da plataforma .NET foi construído sob o paradigma da orientação a objetos. Este curso apresentará, de forma não aprofundada, esse paradigma.

• Coleta automática de lixo (Garbage Collector)

Em linguagens e plataformas mais antigas era responsabilidade do programador gerenciar o ci-clo de vida dos objetos. A Framework .NET possui o Garbage Collector, que gerencia automaticamente o ciclo de vida dos objetos, evitando, assim, diversos problemas.

• Completa e robusta biblioteca de classes.

A biblioteca de classes .NET possui diversas classes que facilitam em muito a criação de nossas aplicações. Podemos ter em mente que, graças a framework, nunca começamos um sistema do zero.

• Uma plataforma independente de linguagem de programação.

Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?!

• Perfeitamente possível de ser portável para outros sistemas operacionais

Exemplo do projeto Mono que já comentamos.

Ruby: Lin-guagem de programação interpretada multiparadig-ma, de tipa-gem dinâmica e forte, com gerenciamen-to de memória automático.

Scala: Scala-ble Language ou mesmo Lin-guagem Evo-lutiva é uma linguagem de programação de propósito geral, diga-se multiparadig-ma, projetada para expressar padrões de programação comuns de uma forma concisa, elegante e type-safe.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 10: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

9Linguagem de Programação C#

1.3 Tecnologias disponíveisComo já sabemos, a Plataforma .NET nos dá muitas opções para construirmos robustas aplica-

ções que atenderão as mais variadas necessidades de nossos clientes.

Alguns exemplos do que podemos criar com .NET:

• Aplicativos de Console;

• Aplicativos Web;

• Aplicativos para servidores;

• Aplicativos Smart Client (celulares e PDA’s);

• Aplicativos de banco de dados;

• Serviços Windows;

• Web Services e muito mais.

Vamos comentar duas dessas tecnologias:

ASP.NET – É a tecnologia que possibilita ao desenvolvedor criar aplicativos WEB (Páginas Dinâ-micas para Internet). O grande atrativo do ASP.NET é o desenvolvimento RAD (http://pt.wikipedia.org/wiki/Rapid_Application_Development).

WindowsForms – Tecnologia focada na criação de aplicativos para Windows (ex.: Cliente/Servi-dor). Segue a mesma linha de ferramentas como Visual Basic 6 e Delphi, porém totalmente renovada, fazendo uso de todo o universo da Framework .NET.

Veremos, no final do curso, um exemplo de cada uma dessas duas tecnologias para incentivá-los a continuar os estudos na Plataforma .NET. Tenho certeza que gostarão do que irão ver.

1.4 A evolução da plataformaA primeira versão Beta da Framework foi lançada em 1999. Porém, somente em 2002, a versão

1.0 da .NET Framework foi lançada. Essa primeira versão revolucionou o cenário de desenvolvimento de aplicativos no mundo. Na época, o Java estava em franca ascensão entre a preferência dos desen-volvedores para desenvolvimento de sistemas corporativos. Mas aliada a uma poderosa IDE (http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado) o Microsoft Visual Studio, a Micro-soft trouxe para o mundo do desenvolvimento WEB e Mobile a facilidade que sempre lhe rendeu destaque entre os fabricantes de ferramentas de desenvolvimento para plataforma Windows. Tudo isso resultou numa ampla e relativamente rápida aceitação de mercado, definindo a plataforma da Mi-crosoft rapidamente entre as preferidas no desenvolvimento de sistemas, juntamente com Java e PHP.

Hoje a Plataforma .NET já se consagra como uma das mais utilizadas no mundo. Esse fato deve-se principalmente à sua constante evolução. Você, que está entrando agora nesse fascinante mundo do Framework .NET, prepare-se, pois este curso é apenas o primeiro passo de uma longa, porém, di-vertida caminhada de estudos.

Sem nos prender a detalhes, vamos dar uma rápida olhada na evolução da plataforma.

RAD: Rapid Application Development ou Desen-volvimento Rápido de Aplicação é um modelo de processo de desen-volvimento de software interativo e incremental que enfatiza um ciclo de desen-volvimento extremamen-te curto.

IDE: Integrated Development Environment ou Ambiente Integrado de Desenvolvi-mento é um programa de computador que reúne ca-racterísticas e ferramentas de apoio ao de-senvolvimento de software com o objetivo de agilizar esse processo.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 11: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

10 NT Editora

A versão atual da Framework é a 4.0, sendo que ainda temos muitas empresas utilizando ampla-mente versões anteriores (2.0 e 3.5 principalmente). Apesar de trabalharmos com as últimas versões da IDE e da Framework, o objetivo deste nosso curso é a linguagem de programação C#, sem nos aten-tarmos a detalhes de versões. Dessa forma, você estará apto a trabalhar com todas as versões (da 2.0 até a 4.0). Esse foco inicial na linguagem é necessário e vai fazer com que você consiga ter uma base sólida para enfrentar todos os desafios que essa plataforma nos apresenta. Afinal de contas, quanto mais alto desejarmos ir, mais sólidas devem ser as nossas bases, não é mesmo?

Atenção! Não se apavore com a figura a seguir... ela resume (sim, isso mesmo, resume!) todas as tecnologias existentes na plataforma .NET (versões 3.5 e 4.0).

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 12: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

11Linguagem de Programação C#SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 13: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

12 NT Editora

Vamos tentar esclarecer as coisas:

Olhando a figura da versão 4, nós temos na base da figura o .NET Framework 2.0 e 3.0. Significa que tudo que está construído na plataforma tem como base a framework. É na framework que encon-tramos os elementos básicos da plataforma. Para entendermos a fundo os elementos da framework seria necessário um curso específico totalmente focado nela. São inúmeros detalhes tecnológicos que estão muito além do escopo deste curso.

Mas não se preocupe muito com esses detalhes nesse primeiro momento, eles são, sim, impor-tantes, mas ao longo das suas experiências com desenvolvimento de aplicativos nessa plataforma, você encontrará motivação para estudar, quando necessário, mais a fundo a framework.

É bem verdade que esse estudo mais aprofundado fará de você um melhor desenvolvedor (sempre procure aprender mais e mais sobre seu trabalho), mas dar um passo de cada vez é tão im-portante quanto se aprofundar nos estudos.

1.5 Elementos fundamentais da framework

MSIL (Microsoft Intermediate Language)

MSIL ou IL é a linguagem intermediária.

Estão lembrados que comentamos que a plataforma .NET é independente de linguagem? Pois então, é a MSIL que permite essa mágica.

Na verdade, todo código gerado por nós em C# no Visual Studio transformar-se-á numa outra linguagem, que a framework entende, chamada de MSIL ou simplesmente IL.

Independentemente da linguagem que você escrever seu programa, quando compilada, será gerada a IL. Mas repare que não é qualquer linguagem que pode ser compilada em .NET. Ela deve ade-rir às especificações da CLS e CTS (comentadas adiante) e só então a linguagem pode ser “nomeada” como XYZ.NET, assim como Python.NET, Cobol.NET etc.

CLS (Common Language Specification)

Define (especifica) um conjunto de regras padrão que as linguagens devem implementar para serem executadas pelo CLR. Seguindo essas especificações, podemos criar linguagens para a plataforma .NET. A CLS define, entre muitas outras coisas, o que a linguagem deve ter para que o CLR possa gerar a IL.

CTS (Common Type System)

O CTS é o conjunto comum dos tipos de dados da framework. Mesmo existindo várias linguagens de programação disponíveis para .NET, todas elas compartilham um mesmo “Sistema de Tipos Comuns”.

E então? Gostaram da sopa de letrinhas? Agora deu pra entender

melhor onde estamos nos metendo?

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 14: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

13Linguagem de Programação C#

A Plataforma .NET é totalmente orientada a objetos. Todos os tipos de dados existentes derivam (herança) da Classe System.Object. Mais adiante, no nosso curso, vamos estudar sobre orientação a obje-tos, assunto imprescindível para que possamos desenvolver em C# (na verdade, em qualquer linguagem moderna!). Porém, o importante nesse ponto é saber que assim como todo código escrito em .NET será transformado em IL, todas as linguagens que são executadas em .NET acessam o mesmo conjunto de tipos.

CLR (Common Language Runtime)

Podemos encarar o CLR como o coração da framework, pois é o ambiente de execução das aplicações .NET. O CLR cuidará do gerenciamento de memória por meio do Garbage Collector, além de outros detalhes importantes, mas não necessários para nós neste momento.

O CLR em ação:

Assembly

Toda aplicação .NET, quando compilada, é armazenada fisicamente numa unidade denomina-da Assembly. Podemos ter na nossa aplicação uma ou mais assemblies, as quais são representadas no sistema de arquivos do sistema operacional na forma de arquivos executáveis de extensão .EXE ou na forma de uma biblioteca de ligação dinâmica, mais conhecida como DLL, de extensão .DLL. Podemos definir as assemblies como o produto final do nosso trabalho em .NET.

Metadados ou METADATA

Todo o programa contém informações que são essenciais para o sistema operacional e até mes-mo para outros programas. No Sistema Operacional Windows, os programas armazenam essas infor-mações no registro do Windows.

Apesar de os nossos programas, feitos em .NET, rodarem em Windows, não os desenvolvemos para esse sistema operacional, mas, sim, para a plataforma .NET. Sendo assim, as informações dos nos-sos programas são armazenadas em metadados e não diretamente no registro do Windows.

.NET PE file

ClassLoader

JIT Compilers

ManagedNative Code

CLR’s Virtual Execution Engine

Verifi

er

JIT

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 15: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

14 NT Editora

Mas que informações são essas?

• Descrição dos tipos (classes, estruturas, tipos enumerados, etc.) usados na aplicação, poden-do esta ter sido gerada em forma de DLL ou executável.

• Descrição dos membros (propriedades, métodos, eventos, etc.)

• Descrição de cada unidade de código externo (assembly) usada na aplicação e que é requeri-da para que esta execute adequadamente.

• Resolução de chamada de método.

• Resolução de versões diferentes de uma aplicação.

Outra coisa muito importante nas aplicações .NET é que mesmo duas aplicações sendo homô-nimas, elas convivem normalmente no mesmo ambiente. Isto acontece porque a METADATA contém a versão de cada um, evitando o conflito entre as aplicações. A CLR procura na METADATA a versão correta da aplicação a ser executada.

PE (Portable Executable – Executável Portável)

Por meio do PE, o código fonte gerado em .NET poderá ser interpretado (executado) em qual-quer plataforma que tenha suporte .NET, sem necessidade de recompilação da fonte.

Compilação JIT (Just in Time)

O compilador JIT, também conhecido como JITTER, converte as instruções da IL para instruções específicas da arquitetura do processador, onde a aplicação .NET está sendo executada.

Existem três tipos de JITTER:

Pre-JIT: Compila de uma só vez todo o código da aplicação .NET que está sendo executado e o armazena no cache para uso posterior;

Econo-JIT: Utilizado em dispositivos móveis em que a memória é um recurso precioso. Sendo assim, o código é compilado sob demanda e a memória alocada, que não está em uso, é liberada quando o dispositivo assim o requer;

Normal-JIT: Compila o código sob demanda e joga o código resultante em cache, de forma que esse código não precise ser recompilado quando houver uma nova invocação do mesmo método.

Compilação

Antes da instalação ou na primeira vez que cada método é

chamado

Execução

SourceCode

NativeCode

JIT Compiler

LanguageCompiler

Code

Metadata

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 16: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

15Linguagem de Programação C#

GC (Garbage Collector – Coletor de Lixo)

Durante muito tempo, desenvolvedores de software lutaram arduamente para manter os seus programas limpos. Isso significa tratar do gerenciamento de memória usada pelos seus sistemas. Essa é uma atividade bastante onerosa e foco de muitos problemas de bugs nas aplicações. Hoje, para a maioria dos desenvolvedores, gerenciar memória não é mais uma preocupação central. Deixe que o .NET cuide disso pra você! O GC é um item muito valioso para os desenvolvedores .NET, pois é ele quem cuida de todo o gerenciamento de memória dos nossos programas. Quando uma área de me-mória não está mais em uso, o GC trata de liberá-la.

Porém, não é por existir o GC que nós não iremos nos preocupar com a memória alocada pelo nosso sistema. Existem algumas técnicas importantes que precisamos adotar para que tenhamos sis-temas otimizados e mais performáticos.

BCL (Base Classe Library – Biblioteca de Classe Base)

A Biblioteca de Classes .NET possui um incrível numero de classes que ajudam no nosso trabalho diário como desenvolvedores. Classes que trabalham com rede, banco de dados, formulários e tudo mais que é necessário para desenvolvermos uma aplicação completa e robusta encontramos na BCL.

As classes da BCL estão organizadas em namespaces. Podemos entender os namespaces como as pastas que usamos no Windows Explorer para armazenar e organizar os nossos arquivos. Quando criamos as nossas classes, podemos (não só podemos, como DEVEMOS) organizá-las em namespaces. Dessa forma, estamos definindo o empacotamento das nossas classes, que facilitará na organização do nosso sistema.

Dentro da BCL encontramos diversos namespaces, dentre os quais podemos destacar:

Namespaces principais:

System:

Contém algumas classes de baixo nível usadas para trabalhar com tipos primitivos, opera-ções matemáticas, gerenciamento de memória, etc.

System.Collections:

Contém pilhas, filas e listas encadeadas.

System.Data, System.Data.Common;

System.Data.OleDb;

System.Data.SqlClient:

Acesso à base de dados. Aqui também se encontra o ADO.NET

System.Diagnostics:

Log de Event, medição de performance, gerenciamento de processos, depuração, etc.

System.Drawing e namespace derivados:

A .NET oferece uma biblioteca de componentes para trabalhar com gráficos, chamadas GDI+, que se encontra nesse namespace.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 17: Autor...Podemos desenvolver em VB.NET, C#, F#, Cobol.NET, C++, Python, Ruby.... está bom ou que-rem mais?! • Perfeitamente possível de ser portável para outros sistemas …

16 NT Editora

Parabéns, você fina-lizou esta lição!

Agora responda às questões ao lado.

System.IO:

Biblioteca para lidar com entrada e saída, gerenciamento de arquivos, etc.

System.NET:

Bibliotecas para programação de redes, sockets, etc.

System.Reflection:

Biblioteca necessária para gerar código em tempo de execução, descobrir tipo de variáveis, etc.

System.Security:

Criptografia, permissão e todo o suporte referente à segurança.

System.Threading:

Biblioteca para aplicações multithread.

System.Web:

Biblioteca sobre tudo relacionado a Web, como Webservices, ASP.NET, etc.

System.Windows.Forms:

Bibliotecas para o desenvolvimento de aplicações Windows tradicionais.

System.XML:

Biblioteca que permite a interação com documentos XML.

Exercícios

Questão 01 – Qual das alternativas abaixo é uma implementação OpenSource que se propõe a portar a plataforma .NET para outros sistemas operacionais tal como o Linux?

a) Projeto JVM.

b) Projeto Mono.

c) Projeto Class Library.

d) Projeto Console Application.

Questão 02 – Sobre a plataforma .NET, é correto afirmar:

a) é independente de Linguagem;

b) a linguagem usada para desenvolvimento é somente C#;

c) é nativamente independente de Sistema Operacional;

d) trabalha apenas com as linguagens VB.NET e C#.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.