PROGRAMAÇÃODE COMPUTADORES I:C# LuizHenriqueC.Corêa

Documentos relacionados
Fundament n os s da platafo f rm r a. NE N T André Menegassi

DESENVOLVIMENTO DE SOFTWARE AULA 1

Excelência no Atendimento ao Cliente. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

DESENVOLVIMENTODE APLICAÇÕESPARAINTERNET:PHP. VitorFariasCoreia

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

Linguagem de Programação C#. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

Introdução ao C# . Visão geral do.net Framework

Parte I Princípios básicos do Microsoft.NET Framework

Programação de Computadores II: Java. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

Planilhas Eletrônicas. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

Gerenciamento de Mensagens e Tarefas / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

ASP.NET 2.0 e PHP. Autor: Glauber de Almeida e Juarez Fernandes

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Ambiente de Programação Visual. Framework.NET. Prof. Mauro Lopes. Ambiente de Programação Visual Prof. Mauro Lopes

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Linguagem de Programação Procedural (VB) Prof. MSc Eng Marcelo Bianchi AULA 01 - INTRODUÇÃO AO VB

UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

BSI Letramento Digital Prof. André Di Thommazo. Organização pessoal

Implementando uma Classe e Criando Objetos a partir dela

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

A interface do Microsoft Visual Studio 2005

Elementos da Linguagem C#

ADMINISTRAÇÃODEREDES BASEADASEM LINUX. SalvadorAlvesdeMeloJúnioreIsmaelSouzaAraujo

ASP.NET. Guia do Desenvolvedor. Felipe Cembranelli. Novatec Editora.

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

3 Qualidade de Software

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

CURSO DE PROGRAMAÇÃO EM JAVA

PROCESSOS DE CRIAÇÃO DE APLICATIVOS

Sistema Datachk. Plano de Projeto. Versão <1.0> Z u s a m m e n a r b e i t I d e i a s C o l a b o r a t i v a s

Backsite Serviços On-line

JORNADA DE COMPRA. O que é e sua importância para a estratégia de Marketing Digital VECTOR

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Sistemas Operacionais. Prof. André Y. Kusumoto

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Como acompanhar a evolução dos aplicativos? Console >> Desktop >> Web >> Mobile >> Cloud. Como aproveitar o melhor de cada programador?

Montagem e Manutenção. Luís Guilherme A. Pontes

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

O guia completo para uma presença. online IMBATÍVEL!

Portal do Projeto Tempo de Ser

Gestão da TI. Os custos escondidos da. Conheça os custos escondidos na gestão amadora da TI e pare de perder dinheiro.

Microsoft.NET. Desenvolvimento Baseado em Componentes

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

19/05/2009. Módulo 1

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

GUIA DE BOAS PRÁTICAS

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

Este artigo abaixo foi produzido originalmente para a Network Core Wiki. Reproduzo-a aqui na íntegra. Publicado originalmente em 07/12/2007.

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

2 echo "PHP e outros.";

Curso de Especialização em Tecnologia da Informação. Engenharia de Software

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre

DISCIPLINAS ON-LINE GUIA DO ALUNO GRADUAÇÕES

Cotagem de dimensões básicas

Desenvolvimento Web TCC Turma A-1

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

DELPHI 7 LINGUAGEM DE PROGRAMAÇÃO AMBIENTE CLIENTE SERVIDOR

As 10 Melhores Dicas de Como Fazer um Planejamento Financeiro Pessoal Poderoso

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Introdução à Linguagem Java

SERVIDORES REDES E SR1

Ambientes Visuais. Ambientes Visuais

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

O sucesso de hoje não garante o sucesso de amanhã

5 Dicas Testadas para Você Produzir Mais na Era da Internet

UFG - Instituto de Informática

agility made possible

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Orientação a Objetos

DICAS DE BURACO ONLINE

Programação de Computadores II TCC Turma A-1

Soluções via.net para otimização de processos paramétricos com Autodesk Inventor.

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Protótipo de ferramenta para monitoração de computadores utilizando o padrão de gerência WMI da Microsoft e a plataforma de desenvolvimento.

Tecnologia sociais entrevista com Larissa Barros (RTS)

Política Gestão de Configuração e Mudança

Programação Orientada a Objetos

7 perguntas para fazer a qualquer fornecedor de automação de força de vendas

Como e por que criar uma para sua empresa A PERSONA VECTOR

PMBoK Comentários das Provas TRE-PR 2009

Mas, como utilizar essa ferramenta tão útil e que está à sua disposição?

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA

Paradigmas de Linguagens de Programação

Transcrição:

PROGRAMAÇÃODE COMPUTADORES I:C# LuizHenriqueC.Corêa INFORMAÇÃOECOMUNICAÇÃO

PROGRAMAÇÃODE COMPUTADORES I:C# LuizHenriqueC.Corêa INFORMAÇÃOECOMUNICAÇÃO

Autor Luiz Henrique C. Corrêa Profissional 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ão NT Editora e Figuramundo Projeto Gráfico NT Editora Editoração Eletrônica NT Editora e Figuramundo Capa NT Editora NT Editora, uma empresa do Grupo NT SCS Q2 - Bl. D - Salas 307 e 308 - Ed. Oscar Niemeyer CEP 70316-900 - Brasília - DF Fone: (61) 3421-9200 sac@grupont.com.br www.nteditora.com.br e www.grupont.com.br Programação de Computadores III: C#. / NT Editora. -- Brasília: 2014. 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.

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(a) ajudará a compreender melhor o conteúdo abordado e também como fazer os exercícios propostos. Conheça os ícones logo abaixo: Saiba Mais Esse ícone apontará para informações complementares sobre o assunto que você está estudando. Serão curiosidades, temas afins ou exemplos do cotidiano que o ajudarão a fixar o conteúdo estudado. Importante O conteúdo indicado com esse ícone tem bastante importância para seus estudos. Leia com atenção e, tendo dúvida, pergunte ao seu tutor. Dicas Esse í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!

Sumário 1. A PLATAFORMA MICROSOFT.NET...7 1.1 O que é a Plataforma.NET?...7 1.2 Características da plataforma...8 1.3 Tecnologias disponíveis...9 1.4 A evolução da plataforma...9 1.5 Elementos fundamentais da framework... 12 2. A IDE MICROSOFT VISUAL STUDIO...19 2.1 Versões do Visual Studio 2010... 19 2.2 Baixando e instalando o Visual Studio Express Edition... 19 2.3 Conhecendo o Visual Studio Express Edition e entendendo o ambiente de programação... 20 2.4 Solution e projetos Solution Explorer... 22 2.5 Application Console... 23 2.6 A estrutura de um programa C# em Application Console... 24 2.7 Criando e executando nossa primeira aplicação... 24 3. NOÇÕES BÁSICAS DA LINGUAGEM C#...29 3.1 Um pouco de história... 29 3.2 Características da linguagem... 29 3.3 Declaração de variáveis... 30 3.4 Tipos primitivos do C#... 31 3.5 Palavras reservadas... 33 4. PROGRAMANDO EM C#...36 4.1 Estrutura de um programa em C#... 36 4.2 Entrada, processamento e saída de dados (conceito de sistemas)... 39 4.3 Desenvolvimento de software... 44 4.4 Estruturas de controle, decisão e repetição... 44 4.5 Laço for e a estrutura condicional switch case... 51 4.6 Enum... 57 4.7 Cast/Parse... 59 4 NT Editora

5. PROGRAMAÇÃO ORIENTADA A OBJETOS...64 5.1 Pensando em objetos... 65 5.2 Classe... 66 5.3 Objeto... 66 5.4 Herança... 67 5.5 Propriedades ou atributos... 67 5.6 Encapsulamento... 67 5.7 Modificadores de acesso... 68 5.8 Métodos e eventos... 68 5.9 Interfaces... 69 5.10 Classes abstratas... 69 5.11 Classes, métodos e propriedades estáticas (membro static)... 70 5.12 Sobrecarga de métodos... 70 5.13 Polimorfismo... 71 6. REFATORANDO O PROJETO...74 6.1 Mundo OO... 74 6.2 Exemplos OO da vida real... 74 6.3 Estudar OO é um longo caminho... 75 6.4 Entendendo os benefícios da OO e das boas práticas... 76 6.5 Arrumando a casa...... 76 6.6 Novo projeto, TelaLogin... 77 6.7 Colocando a classe TelaLoginEstruturada para funcionar... 78 6.8 O Princípio da responsabilidade dos métodos e objetos... 80 7. DESENVOLVENDO ORIENTADO A OBJETOS...83 7.1 Analisando a classe TelaLoginEstruturada... 83 7.2 Identificando nossas classes... 85 7.3 Classes de formulário... 89 7.4 Conclusão...101 Programação de Computadores III: C# 5

8. UM POUCO MAIS SOBRE O FRAMEWORK.NET...104 8.1 Classe Object...104 8.2 Tipos por valor e por referência (Value Types Reference Types)...106 8.3 Struct...107 8.4 Trabalhando com strings...108 8.5 Concatenando strings corretamente...111 8.6 Classe StringBuilder...112 8.7 Trabalhando com datas...113 8.8 Trabalhando com exceções...115 8.9 Tipos nullable...123 9. COLLECTIONS (COLEÇÕES)...129 9.1 Collections Interfaces...129 9.2 Arrays...130 9.3 Palavras reservadas usadas com collections...140 9.4 Collections especializadas...141 10. GENERICS...149 10.1 Boxing e unboxing...150 10.2 Coleções Generics...151 10.3 List<T>...151 10.4 Stack e queue...153 10.5 HashSet...155 10.6 SortedList...155 10.7 Dictionary...156 10.8 Criando suas próprias classes genéricas...156 10.9 Métodos Generics...157 10.10 Conclusão...158 11. PROGRAMANDO PARA WINDOWS COM C#...161 11.1 Introdução Windows Forms...161 11.2 Conceitos básicos de aplicações Windows Forms...162 11.3 Componentes...165 11.4 Eventos...167 BIBLIOGRAFIA...170 6 NT Editora

1. A PLATAFORMA MICROSOFT.NET 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 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. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 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 camada 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 Framework.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 conceito 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). Programação de Computadores III: C# 7

Ruby: Linguagem de programação interpretada multiparadigma, de tipagem dinâmica e forte, com gerenciamento de memória automático. Scala: Scalable Language ou mesmo Linguagem Evolutiva é uma linguagem de programação de propósito geral, diga-se multiparadigma, projetada para expressar padrões de programação comuns de uma forma concisa, elegante e type-safe. 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 programaçã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 executados. Por esse motivo, antes de começarmos a falar de C#, é preciso entender um pouco sobre a Plataforma.NET. E é por ela que começaremos a nossa viagem no mundo do C#. 1.2 Características da plataforma A 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 ciclo 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 querem mais?! Perfeitamente possível de ser portável para outros sistemas operacionais Exemplo do projeto Mono que já comentamos. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 8 NT Editora

Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 1.3 Tecnologias disponíveis Como 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/Servidor). 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 plataforma A 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 desenvolvedores 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 Microsoft 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 Microsoft 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 devese 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, divertida caminhada de estudos. Sem nos prender a detalhes, vamos dar uma rápida olhada na evolução da plataforma. RAD: Rapid Application Development ou Desenvolvimento Rápido de Aplicação é um modelo de processo de desenvolvimento de software interativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto. IDE: Integrated Development Environment ou Ambiente Integrado de Desenvolvimento é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar esse processo. Programação de Computadores III: C# 9

A versão atual da Framework é a 4.0, sendo que ainda temos muitas empresas utilizando amplamente 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 atentarmos 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). Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 10 NT Editora

Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. Programação de Computadores III: C# 11

E então? Gostaram da sopa de letrinhas? Agora deu pra entender melhor onde estamos nos metendo? 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 encontramos 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, importantes, 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 importante 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 aderir à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. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 12 NT Editora

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 objetos, 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:.net PE file Class Loader Verifier JIT Managed Native Code JIT Compilers Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. Assembly Toda aplicação.net, quando compilada, é armazenada fisicamente numa unidade denominada 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 CLR s Virtual Execution Engine Todo o programa contém informações que são essenciais para o sistema operacional e até mesmo para outros programas. No Sistema Operacional Windows, os programas armazenam essas informaçõ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 nossos programas são armazenadas em metadados e não diretamente no registro do Windows. Programação de Computadores III: C# 13

Mas que informações são essas? Descrição dos tipos (classes, estruturas, tipos enumerados, etc.) usados na aplicação, podendo 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 é requerida 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 qualquer 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. Source Code Antes da instalação ou na primeira vez que cada método é chamado Compilação Language Compiler Native Code Execução Code Metadata JIT Compiler Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 14 NT Editora

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 memó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 sistemas 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. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 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. Programação de Computadores III: C# 15

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. Parabéns, você finalizou esta lição! Agora responda às questões ao lado. 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#. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 16 NT Editora

Questão 03 Quel a característica da plataforma.net tem por objetivo limpar as referências de objetos que não estão mais sendo utilizados? a) Fracamente tipada. b) Coleta Automática de Lixo (Garbage Collector). c) Destruição automática dos objetos instanciados. d) Uso mais eficiente das referências de memória não usadas. Questão 04 Qual dessas linguagens pode ser utilizada para desenvolver sistemas na plataforma.net? a) Visual Basic.NET. b) COBOL.NET. c) C#. d) Todas as anteriores. Questão 05 Qual das tecnologias abaixo da plataforma.net possibilita ao desenvolvedor criar aplicativos WEB (páginas dinâmicas para Internet)? a) ASP.NET. b) ASP. c) PHP. d) Silverlight. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. Questão 06 Qual das tecnologias abaixo da plataforma.net é focada na criação de aplicativos para Windows (ex.: Cliente/Servidor) e segue a mesma linha de ferramentas como Visual Basic 6 e Delphi? a) Web Forms. b) Windows Forms. c) ASP.NET. d) WCF. Questão 07 Qual das siglas abaixo representa parte da estrutura dos elementos fundamentais da plataforma/framework.net? a) IIS. b) C#. c) WPF. d) CLR. Programação de Computadores III: C# 17

Questão 08 Qual dos elementos abaixo pode ser considerado o mais importante dentro da plataforma.net? a) IIS. b) C#. c) WPF. d) CLR. Questão 09 A menor unidade de execução dentro da plataforma.net é o: a) CLR; b) MSIL; c) JIT; d) assembly. Questão 10 A responsabilidade de compilar os arquivos de um programa feito em.net para a linguagem intermediária é: a) CLR; b) assembly; c) JIT; d) IIS. Reprodução proibida. Copyright NT Editora. Todos os direitos reservados. 18 NT Editora