asp.net web aula 1

49
TECNOLOGIAS PARA APLICAÇÕES WEB WEB AULA 1 Unidade 1  Introdução à Plataforma .NET Framework e a Linguagem C# VÍDEO AULA 01 Um novo modelo de desenvolvimento A partir dos anos 90 a internet começou a mudar a forma como as organizações se comunicavam. Aplicações tradicionais como processadores de texto e planilhas eletrônicas eram criadas para funcionar individualmente, acessando dados que estavam armazenados na própria maquina que o aplicativo era executado. A maioria dos novos softwares é desenvolvida para funcionarem de forma distribuída, acessando bases remotas e provendo serviços para outros programas, chamados de aplicativos clientes. Como resultado o primeiro objetivo dos novos softwares é suportar o compartilhamento de informações pela rede e a distribuição delas através de mensagem eletrônica, e-mail e até mesmo redes sociais. Basicamente o novo modelo de desenvolvimento de software está deixando de apenas criar funcionalidades básicas de um sistema isolado para a criação de serviços que possibilitam gerar soluções para uma grande quantidade de aplicações. O .NET Framework possibilita o desenvolvimento de uma plataforma robusta para criação de aplicativos para desktop, celulares e Internet. Torna o desenvolvimento para internet uma tarefa fácil como nunca foi anteriormente. Fácil publicação e manutenção 

Transcript of asp.net web aula 1

  • 5/22/2018 asp.net web aula 1

    1/49

    TECNOLOGIAS PARA APLICAES WEB

    WEB AULA 1Unidade 1 Introduo Plataforma .NETFramework e a Linguagem C#

    VDEO AULA 01

    Um novo modelo de desenvolvimento

    A partir dos anos 90 a internet comeou a mudar a forma como asorganizaes se comunicavam. Aplicaes tradicionais comoprocessadores de texto e planilhas eletrnicas eram criadas parafuncionar individualmente, acessando dados que estavamarmazenados na prpria maquina que o aplicativo era executado. Amaioria dos novos softwares desenvolvida para funcionarem deforma distribuda, acessando bases remotas e provendo servios paraoutros programas, chamados de aplicativos clientes. Como resultadoo primeiro objetivo dos novos softwares suportar ocompartilhamento de informaes pela rede e a distribuio delasatravs de mensagem eletrnica, e-mail e at mesmo redes sociais.Basicamente o novo modelo de desenvolvimento de software estdeixando de apenas criar funcionalidades bsicas de um sistemaisolado para a criao de servios que possibilitam gerar soluespara uma grande quantidade de aplicaes.

    O .NET Framework possibilita o desenvolvimento de uma plataformarobusta para criao de aplicativos para desktop, celulares e Internet.Torna o desenvolvimento para internet uma tarefa fcil como nuncafoi anteriormente.

    Fcil publicao e manuteno

  • 5/22/2018 asp.net web aula 1

    2/49

    Aplicaes podem ser criadas utilizando diferentes tecnologias:

    Saiba mais: Viso geral do .NET Frameworkhttp://msdn.microsoft.com/pt-br/library/hh425099.aspx

    Web pagesWeb ServicesBibliotecas (DLLs)Windows FormsConsole Application

    O .NET Framework torna fcil a tarefa de publicao, na maioria doscenrios, basta copiar o aplicativo e seus componentes em uma pasta

    e execut-lo. Isso possvel porque o .NET Framework localiza ecarrega todas as dependncias necessrias que o aplicativo precisa,mesmo se houverem diferentes verses do mesmo componente nosistema.

    As configuraes ps-instalao tambm so um ponto importante eque muito bem tratado pelo .NET Framework. Configuraes desegurana, conexes com banco de dados e parmetros da aplicaopodem ser facilmente alterados sem a necessidade de compilar aaplicao novamente, isso porque o .NET Framework trabalha com

    essas configuraes em um modelo baseado em arquivos. Umarquivo de configurao um arquivo XML que pode alterar ocomportamento de uma aplicao. Por exemplo, o administrador dosistema pode configurar a aplicao para utilizar apenas uma versode um componente instalado no sistema, ou at mesmo alterar ocaminho de um banco de dados se o mesmo foi migrado para outrolocal, tudo isso de uma forma flexvel e sem impactar o sistema.

    Segue abaixo o modelo de um arquivo de configurao utilizado no.NET:

    http://msdn.microsoft.com/pt-br/library/hh425099.aspxhttp://msdn.microsoft.com/pt-br/library/hh425099.aspxhttp://msdn.microsoft.com/pt-br/library/hh425099.aspx
  • 5/22/2018 asp.net web aula 1

    3/49

    Vdeo: XML Teoria e Prtica

    http://www.youtube.com/watch?v=I-me4ipqpxYCada um dos ns do xml acima contm uma configurao que pode irde uma referncia de um recurso utilizado na aplicao at umastring de conexo utilizada para conectar no banco de dados.

    Elementos do .NET FRAMEWORK

    O .NET Framework consiste em trs camadas bsicas:

    Common Language RuntimeCommom Type System.NET Class Library

  • 5/22/2018 asp.net web aula 1

    4/49

    A seguir vamos conhecer cada uma dessas camadas.

    Common Language Runtime

    O Common Language Runtime (CLR) uma camada entre a aplicao

    e o sistema operacional. O CLR simplifica o desenvolvimento de umaaplicao e reduz a quantidade de cdigo que os desenvolvedorestm que escrever pois disponibiliza uma grande quantidade derecursos, dentre eles podemos citar o gerenciamento de memria ede threads (paralelismo), ciclo de vida de componentes e tratamentode erros. Um dos maiores trunfos do CLR a forma transparentecomo ele prov todos os recursos citados, no importando alinguagem de programao utilizada e retirando qualquer esfororequerido do programador.

    O CLR tambm responsvel por compilar o cdigo antes do mesmoser executado. Ao contrrio de produzir uma compilao binria,como a maioria dos compiladores faz, o compilador do .NET produz arepresentao do cdigo em uma linguagem comum para o .NETFramework, chamada de Microsoft Intermediate Language (MSIL),mais conhecido com IL. Quando o cdigo executado pela primeiravez , o CRL invoca um compilador especial chamado Just In Time(JIT), que transforma o cdigo IL em um executvel especfico para otipo do processador que a aplicao ser executada. Como todas aslinguagens do .NET Framework tm como resultado a mesma

    compilao, todas tm o mesmo desempenho. Isso quer dizer queum programa escrito em Visual Basic .NET (VB.NET) pode trabalharda mesma forma que um programa desenvolvido em C Sharp (C#).

    A imagem abaixo ilustra como funciona a compilao de umprograma desenvolvido em uma das linguagens do .NET Framework,no caso o C#:

    Figura - Processo de Compilao do .NET

  • 5/22/2018 asp.net web aula 1

    5/49

    Fonte:Introduction... (2013)

    Commom Type System

    O Commom Type System (CTS) um componente do CLR quemantm um conjunto padro de tipos de dados, cada um comcaractersticas e comportamentos em comum. A grande vantagempor trs do CTS a possibilidade de trabalhar com os mesmos tiposde dados utilizando qualquer uma das linguagens do .NET. Porexemplo, se uma aplicao em C# precisa se comunicar com umcomponente desenvolvido em VB.NET ela no precisar conternenhum cdigo adicional para conseguir se comunicar com ocomponente.

    O CTS permite que cada linguagem de programao do .NET utilizeos tipos de dados especificados na linguagem, o compilador do .NETconverte o tipo de dados utilizado para o tipo de dados definido noCTS. Tambm possvel utilizar na programao diretamente o tipodefinido no CTS.

    http://msdn.microsoft.com/en-us/library/z1zx9t92.aspxhttp://msdn.microsoft.com/en-us/library/z1zx9t92.aspxhttp://msdn.microsoft.com/en-us/library/z1zx9t92.aspxhttp://msdn.microsoft.com/en-us/library/z1zx9t92.aspx
  • 5/22/2018 asp.net web aula 1

    6/49

    A tabela a seguir mostra cada um dos tipos definidos no CTS:

    .NET Class Library

    O .NET Class Library a camada que prov uma grande quantidadede classes que executam as mais diversas funes, por exemplo,efetuar operaes matemticas, manipular arquivos XML ou bancosde dados.

    Para facilitar o uso das classes as mesmas foram dividas em pacoteschamados de namespaces. O namespace raiz do .NET Class Library chamado de System, que contm classes bases e tipos de dados,como a String, o Int16, Console e Array.

    Exemplos de namespaces do .NET Class Library:

    System.Data.SqlClient: Contm classes para trabalhar com o bancode dados SQL Server;

  • 5/22/2018 asp.net web aula 1

    7/49

    System.IO: Contm classes para trabalhar com arquivos e dadosserializados em memria.

    A grande vantagem de se trabalhar com o .NET Class Library apossibilidade de utilizar todos os recursos das classes nas diferentes

    linguagens do .NET Framework, facilitando na publicao daaplicao, pois o .NET Class Library est incluso em todas as versesdo .NET Framework.

    Tecnologias unificadas

    At agora, foi abordado como funcionam os componentes internos do.NET Framework. As tecnologias, listadas a seguir, so as diferentesformas disponveis para utilizar todos os recursos da plataforma.

    Vdeo: .NET Framework e seus componentes

    http://www.youtube.com/watch?v=zbDsiOYlBtk

    Visual StudioWindows FormsASP.NET

    Visual Studio

    O Visual Studio uma IDE (Integrated Development Environment)para desenvolvimento utilizando qualquer uma das linguagens

    contidas no .NET Framework. O Visual Studio disponibiliza recursospara trabalhar com diversas linguagens no mesmo ambiente. Contmferramentas para DEBUG, designers para HTML, XML, banco de dadose cdigos de servidor. Alm disso conta com IntelliSense, recurso quecompleta o cdigo, garantindo que o desenvolvedor evite erros, almde adicionar um alto ganho na produtividade.

    Veja na tabela abaixo alguns recursos do Visual Studio:

  • 5/22/2018 asp.net web aula 1

    8/49

    Windows Forms

    Windows Forms o nome dado para o conjunto de classes quecontm funcionalidades que suportam criar aplicaes desktoptradicionais, que contm uma interface grfica para interao dousurio. O Windows Forms torna fcil o desenvolvimento de sistemaspara o usurio final utilizando qualquer uma das linguagens do .NETFramework. O Visual Studio permite o desenvolvimento WindowsForms arrastando controles em uma ferramenta visual, descartando anecessidade de criar a parte grfica da aplicao utilizando cdigo,recurso esse chamado de drag-and-drop (arrastar e soltar).

  • 5/22/2018 asp.net web aula 1

    9/49

    Desenvolvimento Windows Forms no Visual Studio

    Saiba mais: Introduo ao Windows Forms

    http://msdn.microsoft.com/pt-br/vbasic/ms789117.aspx

    ASP.NET

    Para o desenvolvimento de aplicaes WEB o .NET framework dispedo ASP.NET, uma arquitetura de desenvolvimento criadaespecificamente para criar aplicaes WEB poderosas com altaprodutividade.

    http://msdn.microsoft.com/pt-br/vbasic/ms789117.aspxhttp://msdn.microsoft.com/pt-br/vbasic/ms789117.aspxhttp://msdn.microsoft.com/pt-br/vbasic/ms789117.aspx
  • 5/22/2018 asp.net web aula 1

    10/49

    O ASP.NET dividido em vrias tecnologias, entre ela o ASP.NET WebForms, ASP.NET MVC e Web Services.

    ASP.NET Web Forms

    Desenvolvedores que no tm familiaridade com o desenvolvimentopara WEB podem perder muito tempo para descobrir como validar umsimples campo de e-mail em um formulrio de contato. Umavalidao pode ser executada tanto no lado cliente, como no ladoservidor. Decidir qual lado seguir pode ser complicado pelo fato deque cada uma das abordagens tem suas vantagens e desvantagens,algumas podem no ficar explicitamente visveis no momento dodesenvolvimento se no houver a ateno necessria. Se a validaofor feita no lado cliente utilizando Javascript, deve ser considerado orisco do navegador do usurio no suportar Javascript, ou at mesmo

    estar desativado. Dessa forma os dados seriam enviados sem estardevidamente validados. Se os dados forem validados no servidor, otempo para enviar esses dados e obter uma resposta pode frustrar ousurio, ou seja, a aplicao poder ser segura mas ir pecar nausabilidade.

    O Web Forms simplifica todos os processos da arquitetura cliente-servidor, pois tem como objetivo facilitar a entrada dedesenvolvedores desktop no ambiente WEB, disponibilizando recursoscomo o drag-and-drop para adicionar controles em uma pgina e

    editar suas caractersticas visualmente.

  • 5/22/2018 asp.net web aula 1

    11/49

    Ambiente de desenvolvimento em ASP.NET no Visual Studio

    ASP.NET MVC

    Vdeo: Introduo ao ASP.NET

    http://msdn.microsoft.com/pt-br/asp.net/gg252004.aspx

    O ASP.NET MVC um framework para trabalhar com o padro deprojeto Model-View-Controller, permitindo o controle total sobre oque enviado para o cliente e utilizando todo o poder do ASP.NET edo .NET Framework. uma excelente plataforma para trabalhar comdesenvolvimento dirigido por testes por no conter cenrios

    complexos como o ciclo de vida de pginas baseado em eventoscomo o ASP.NET Web Forms. Tambm introduziu no ASP.NET a

    http://msdn.microsoft.com/pt-br/asp.net/gg252004.aspxhttp://msdn.microsoft.com/pt-br/asp.net/gg252004.aspxhttp://msdn.microsoft.com/pt-br/asp.net/gg252004.aspx
  • 5/22/2018 asp.net web aula 1

    12/49

    possibilidade de configurar rotas para criar endereos amigveis,permitindo assim um melhor desempenho na disponibilizao decontedo atravs de mecanismos de busca.

    Saiba mais: Padro MVC

    http://msdn.microsoft.com/pt-br/magazine/cc337884.aspx

    Web Services

    Um Web Service uma aplicao que expe funcionalidades na webatravs de mtodos. Web Services so desenvolvidos para seremconsumidos por outras aplicaes e no tm a inteno de interagir

    diretamente com o usurio final. Web Services tornam fceis acriao de recursos para serem acessados remotamente. Aplicativosclientes podem invocar os mtodos de um Web Service como se elesestivesses definidos na prpria aplicao.

    VDEO AULA 02

    Linguagem C#

    A linguagem C# foi criada pela Microsoft especificamente para aplataforma .NET. A criadora da linguagem descreve a mesma como

    simples, moderna, orientada a objetos, fortemente tipada (apesardos tipos dinmicos introduzidos na verso 4) derivada do C e C++.Algumas pessoas por sua vez diriam que a linguagem tambm derivada do Java, por algumas similaridades em seu design.Sintaticamente o C# muito parecido com C++ e Java. Algumaspalavras chaves so iguais, blocos de cdigo so marcados comchaves e as instrues so terminadas com ponto e vrgula. Aprimeira impresso ao ver um bloco de cdigo escrito em C# queele muito parecido com C++ e Java. Apesar de toda essasimilaridade o C# muito mais simples de ser absorvido do que oC++, mas tendo quase o mesmo nvel de dificuldade do Java. Seudesign apesar de similar, mais moderno que as outras linguagenscitadas.

    http://msdn.microsoft.com/pt-br/magazine/cc337884.aspxhttp://msdn.microsoft.com/pt-br/magazine/cc337884.aspxhttp://msdn.microsoft.com/pt-br/magazine/cc337884.aspx
  • 5/22/2018 asp.net web aula 1

    13/49

    Algumas das principais caractersticas do C#:

    Suporte total a programao orientada a objetos, incluindoHerana e Interfaces, mtodos virtuais, e sobrecarga deoperadores;

    Uma grande quantidade de tipos de dados bases, como tiposnumricos inteiros e fracionados;

    Suporte para gerar automaticamente documentao em XML; Limpeza de memria automtica de recursos no utilizados; Acesso total a Class Library do .NET Framework, e fcil acesso

    as APIs do Windows; Ponteiros e direto acesso a memria so permitidos, mas a

    linguagem foi projetada de uma forma para que no sejanecessrio o uso desses recursos;

    Suporte a propriedades e eventos; C# pode ser utilizado para criar qualquer tipo de aplicao

    dentro da plataforma .NET, como pginas em ASP.NET e WebServices.

    Muitos dos recursos citados tambm so suportados por outraslinguagens do .NET Framework, como o VB.NET e o Visual C++, masdeve ser levado em considerao que o C# foi desenvolvido do zeropara o .NET. Sendo assim, tem um suporte mais completo dessesrecursos, ao mesmo tempo em que sua sintaxe mais fluda para suautilizao.

    O que preciso para escrever e rodar cdigo C#

    O .NET Framework, atualmente na verso 4.5, necessrio paraexecutar aplicaes escritas em qualquer linguagem do .NET.

    Apesar do C# poder ser escrito em qualquer editor de texto deterceiros, altamente recomendado a utilizao da IDE oficial, oVisual Studio, pois contm ferramentas poderosas que possibilitamum ganho considervel na produtividade.

    C# Bsico

    Agora que foram apresentados os principais recursos da linguagemC#, veremos como utiliz-los, compilando o cdigo de exemploabaixo:

  • 5/22/2018 asp.net web aula 1

    14/49

    Saiba mais: Compilador C#

    http://msdn.microsoft.com/pt-br/library/vstudio/2fdbz5xd.aspx

    Compilando e rodando o programa

    O cdigo acima pode ser compilado executando pela linha decomando o compilador do C# (csc.exe) contra o arquivo (que deveser salvo com extenso .cs), como mostrado abaixo:

    cscprimeiro_programa.cs

    Nota: O compilador do C# pode ser encontrado no seguinte caminho:

    {drive}\Windows\Microsoft.NET\Framework\{verso do .netframework}

    Exemplo:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319

    Para poder compilar um cdigo direto da linha de comando, deve ser

    verificado se as ferramentas de linha de comando do .NET foraminstaladas no sistema.

    http://msdn.microsoft.com/pt-br/library/vstudio/2fdbz5xd.aspxhttp://msdn.microsoft.com/pt-br/library/vstudio/2fdbz5xd.aspxhttp://msdn.microsoft.com/pt-br/library/vstudio/2fdbz5xd.aspx
  • 5/22/2018 asp.net web aula 1

    15/49

    Depois de compilado ser gerado um arquivo .exe que pode serexecutado da linha de comando ou atravs do Windows Explorercomo qualquer outro executvel.

    A sada do programa (considerando que o usurio se chama Joo)

    ser a seguir:

    C# e sua sintaxe

    Vamos observar alguns detalhes sobre a sintaxe do C#. Como emoutras linguagens, linhas de comando no C# so terminadas componto e vrgula, e podem continuar em mltiplas linhas semnecessidade de um caractere para informar essas continuaes, comovemos a seguir:

  • 5/22/2018 asp.net web aula 1

    16/49

    Para comentar uma linha basta utilizar duas barras (//). Para vriaslinhas deve ser iniciado com barra e asterisco ( /*) e terminar com amesma combinao ao contrrio ( */):

  • 5/22/2018 asp.net web aula 1

    17/49

    Saiba mais: Comentrios com XML

    http://msdn.microsoft.com/pt-br/library/vstudio/b2s063f7.aspx

    Todos esses aspectos mostram as similaridades do C# com o C++ eo Java.

    As primeiras linhas do cdigo anterior comeam com a utilizao denamespaces, um recurso utilizado para agrupar classes que tmresponsabilidades similares. Os namespaces do C# so equivalentesaos namespaces do C++ e os packages do Java. A palavra chavenamespace seguida de chaves declara em qual namespace umaclasse est contida.

    A palavra chave using informa ao compilador em qual namespacedeve ser procurado para encontrar classes que foram referenciadasem seu cdigo mas no foram definidas no mesmo namespace. Using

    no C# equivalente palavra chave import do Java e usingnamespace do C++.

    http://msdn.microsoft.com/pt-br/library/vstudio/b2s063f7.aspxhttp://msdn.microsoft.com/pt-br/library/vstudio/b2s063f7.aspxhttp://msdn.microsoft.com/pt-br/library/vstudio/b2s063f7.aspx
  • 5/22/2018 asp.net web aula 1

    18/49

    Veremos no cdigo abaixo outra utilizao dos namespaces:

    N cdigo acima foi adicionado uma instruo using pois foi

    referenciada uma classe contida no namespace System. Valeressaltar que a maioria das operaes efetuadas no C# dependemdas classes bases do .NET. Nesse caso, foi utilizada a classe Consolepara imprimir uma mensagem na linha de comando. O C# no temnenhum comando para efetuar essa operao.

    Como a maioria dos programas em C# utilizam classes e outroselementos do namespace System, uma boa prtica adicionar umainstruo using para esse namespace em todos os arquivos.

    Depois disso foi definido uma classe chamada Program, como ela foidefinida no namespace ConsoleApplication1, correto afirmar queseu nome completo ConsoleApplication1.Program.

    Classes

    Como no Java, tudo no C# deve estar contido em uma classe.Classes no C# so similares a classes no Java e C++. A declaraoda classe se d com a palavra chave class, seguida do nome daclasse e das chaves. Todo cdigo referente associado a classe deveestar dentro das chaves, como mostrado no exemplo abaixo:

  • 5/22/2018 asp.net web aula 1

    19/49

    No exemplo anterior foi declarado um mtodo chamado Main. Todo

    executvel desenvolvido em C# (Console, Windows) deve ter umponto de partida. Esse o papel do mtodo Main, ser o primeiromtodo a ser executado ao abrir o executvel.

    Um mtodo no C# tem o seguinte formato:

    Saiba mais: Orientao a Objetos com C#

    http://msdn.microsoft.com/pt-br/library/cc580626.aspx

    Por Exemplo:

    http://msdn.microsoft.com/pt-br/library/cc580626.aspxhttp://msdn.microsoft.com/pt-br/library/cc580626.aspxhttp://msdn.microsoft.com/pt-br/library/cc580626.aspx
  • 5/22/2018 asp.net web aula 1

    20/49

    Primeiro devem ser definidos os modificadores do mtodo queservem para especificar o nvel de acesso do mtodo. No exemploanterior foram utilizadas as palavras chaves public e static. Apalavra chave public define que o mtodo pode ser chamado de

    qualquer lugar, inclusive fora da classe que foi definido. J a palavrachave static indica que o mtodo no poder ser invocado de umobjeto (instncia da classe) e sim diretamente da classe. Logo depoisdeve ser definido o tipo de retorno do mtodo, no caso void parainformar que o mtodo no retornar nada. No exemplo, o mtodono recebe parmetros. Por fim, so definidas as instrues domtodo:

  • 5/22/2018 asp.net web aula 1

    21/49

    A instruo acima declara uma varivel do tipo int chamada x. Deveser observado que o compilador no deixar essa varivel serutilizada a no ser que ela seja inicializada.

    Assim que declarada, pode ser inicializada utilizando o operador de

    atribuio igual ( = ):

    x = 20;

    Tambm possvel declarar e inicializar uma varivel ao mesmotempo:

    int x = 20;

    Se vrias variveis so declaras e inicializadas ao mesmo tempo,

    todas as variveis sero consideradas do mesmo tipo:

    Int x = 50, y = 100;

    No exemplo anterior as duas variveis sero do tipo int.

    No possvel declarar variveis de diferentes tipos ao mesmotempo:

    int x = 20;

    bool y = false;int x = 10, bool y = false; // no compilar

    A inicializao de variveis mostra o nvel de segurana do C#.Nenhuma varivel pode ser utilizada sem primeiro ser inicializada. Emalgumas linguagens o compilador mostraria apenas uma mensagemde alerta, mas o compilador do C# trata essa situao como um erro.Isso previne a leitura de lixo em memria deixado por outrosprogramas.

    O C# utilizada dois diferentes mtodos para assegurar que variveissempre sero inicializadas antes de serem utilizadas:

    Variveis que so definidas como atributos em classes eestruturas, se no inicializadas explicitamente, soautomaticamente inicializadas com valores padres do tipo queforam declaradas no momento que so criadas.

    Variveis locais de um mtodo devem ser explicitamenteinicializadas antes de qualquer instruo que ir utilizar o valorda varivel. A inicializao no precisa ser feita no momento da

    declarao da varivel, mas o compilador verificar todos oscaminhos possveis do mtodo e gerar um erro caso o valor da

  • 5/22/2018 asp.net web aula 1

    22/49

    varivel esteja sendo acessado sem ser inicializadopreviamente.

    Vdeo: Variveis no C#

    http://www.youtube.com/watch?v=0dVOVeT0rTg

    O cdigo abaixo ilustra as afirmaes sobre inicializao de variveis:

    Ao compilar o cdigo acima, ser gerado o seguinte erro:

  • 5/22/2018 asp.net web aula 1

    23/49

    O erro informa que a varivel maiorIdadeest sendo utilizada semser inicializada, isso porque caso a idade digitada seja menor que 18nenhum valor ser atribudo varivel, e no haver um valor paraser testado na instruo if.

    Considere a seguinte instruo:

    Pessoaobjeto;

    No C# essa linha de cdigo declara uma varivel que pode apontarpara um objeto do tipo Pessoa, mas o objeto ainda no foi criado,logo a varivel no aponta para nada. Qualquer chamada para ummtodo ou propriedade a partir dessa varivel ir gerar um erro.

    Para instanciar um objeto no C# deve ser utilizada a palavra chave

    new. Primeiro criada a varivel como no exemplo anterior e logoem seguida instanciado um objeto;

  • 5/22/2018 asp.net web aula 1

    24/49

    No final fica assim: Pessoaobjeto= newPessoa();

    FRUM:

    Com o conhecimento adquirido sobre a plataforma .NET e a

    linguagem C#, cite as vantagens que voc identificou ao utilizar essatecnologia.

    RESUMO:

    Vimos nesta unidade algumas das tecnologias que compreendem o.NET Framework, seu padro de funcionamento junto ao sistemaoperacional e os diversos tipos de arquiteturas possveis para seremtrabalhadas, como Windows e Web, alm do ambiente dedesenvolvimento Visual Studio. Tambm foi apresentada a linguagem

    C#, sua sintaxe e suas similaridades com as linguagens Java e C++.

    INTRODUCTION to the C# Language and the .NET Framework2013.Disponvel em: < http://msdn.microsoft.com/en-us/library/z1zx9t92.aspx >. Acesso em: 21 fev. 2013.

    TIPOS de dados (guia de programao). 2013. Disponvel em: . Acesso em: 28 jan.2013.

    APLLICATTION development in visual studio. 2013. Disponvel em: .Acesso em: 28 fev. 2013.

    SUGESTO DE LEITURA

    SHARP, John. Visual C# 2008 - passo a passo. Porto Alegre:Bookman, 2008.

    LOUREIRO, Henrique. C# 4.0 com visual studio 2010. Lisboa: FCA,2011.

    MSDN. .NET framework application essentials. Disponvel em: .Acesso em: nov. 2012.

  • 5/22/2018 asp.net web aula 1

    25/49

    MSDN. Introduction to the C# language and the .NET Framework.Disponvel em: . Acesso em:nov. 2012.

    WEB AULA 2Unidade 1 Linguagem C# Avanado

    VDEO AULA 03

    Inferncia de tipo

    Inferncia de tipo utilizada para omitir o tipo da varivel nomomento da declarao. Para utilizar esse recurso no C# utilizada apalavra chave var. O compilador ir descobrir o tipo da varivel apartir do momento da inicializao, por exemplo:

    varx = 2;

    ir se tornar:

    intx = 2;

    Saiba mais: A lgica da Inferncia

    http://pt.wikipedia.org/wiki/Infer%C3%AAncia

    Depois de compilado, as duas instrues so iguais.

    Veja mais um exemplo:

    http://pt.wikipedia.org/wiki/Infer%C3%AAnciahttp://pt.wikipedia.org/wiki/Infer%C3%AAnciahttp://pt.wikipedia.org/wiki/Infer%C3%AAncia
  • 5/22/2018 asp.net web aula 1

    26/49

    Apenas deve ser atentando para algumas regras. A varivel deve sersempre inicializada no momento da declarao. De outra forma, ocompilador no saberia definir o tipo da varivel. O valor inicializadono pode ser null como visto abaixo:

  • 5/22/2018 asp.net web aula 1

    27/49

    Uma vez declarada e inicializada, o tipo da varivel no pode seralterado. Diferente do tipo Variant do Visual Basic, a palavra chavevar ir apenas retirar a responsabilidade do desenvolvedor de digitaro tipo da varivel.

    Considere o cdigo:

    Vdeo: Introduo ao Visual Basic .NET

    http://falandoti.com.br/do-nada-ao-basico-com-visual-basic-net-parte-1/

    O cdigo acima ir gerar o seguinte erro:

    http://falandoti.com.br/do-nada-ao-basico-com-visual-basic-net-parte-1/http://falandoti.com.br/do-nada-ao-basico-com-visual-basic-net-parte-1/http://falandoti.com.br/do-nada-ao-basico-com-visual-basic-net-parte-1/http://falandoti.com.br/do-nada-ao-basico-com-visual-basic-net-parte-1/http://falandoti.com.br/do-nada-ao-basico-com-visual-basic-net-parte-1/
  • 5/22/2018 asp.net web aula 1

    28/49

    O erro informa que no possvel converter implicitamente o tipo

    string para int, isso porque a varivel x foi inicializada com o valor 2,o compilador inferiu o tipo int para esta varivel, logo no possvelguardar um valor do tipo string.

    Escopo de Variveis

    O escopo de uma varivel o local do cdigo onde uma varivel podeser acessada. No geral, o escopo determinado pelas seguintesregras:

    Um campo ( varivel declarada como membro de classe ) acessvel dentro de qualquer local da classe;

    Uma varivel local de um mtodo acessvel apenas no escopodo mtodo em que foi declarada, assim que o mtodo terminasua execuo a varivel eliminada;

    Uma varivel local declarada dentro de qualquer estrutura derepetio (while, for) acessvel apenas no escopo do loop.

    Problemas de escopo em variveis locais

  • 5/22/2018 asp.net web aula 1

    29/49

    comum programas utilizarem o mesmo nome de varivel emdiferentes partes do mesmo. No existe nenhum problema nesseprocedimento se as variveis forem criadas em diferentes escopospara que no haja a possibilidade de ambiguidade. O mais importante ter em mente que duas variveis com o mesmo nome no podem

    estar no mesmo escopo, como mostrado no exemplo abaixo:

    O cdigo acima simplesmente imprime na tela os nmeros de 0 a 9, edepois os mesmos nmeros de 9 a 0, utilizando duas estruturas derepetio for. importante notar que a varivel i foi declarada duasvezes no mesmo mtodo. Isso perfeitamente possvel porque avarivel i foi declarada em estruturas de repetio diferentes, logoso variveis locais dos loops.

    Vejamos outro exemplo:

  • 5/22/2018 asp.net web aula 1

    30/49

    Se tentarmos compilar o cdigo acima, teremos o seguinte erro:

    A local variable named 'j' cannot be declared in this scopebecause it would give a different meaning to 'j', which isalready used in a 'parent or current' scope to denotesomething else

    Isso ocorre porque a varivel J foi declarada antes do bloco for, noescopo do mtodo Main, e s ser eliminada quando o mtodoterminar. A segunda declarao de J est errada, pois o bloco for estcontido no mtodo, dessa forma uma varivel J j existe no escopo eno pode ser declarada novamente.

    Problemas de escopo entre variveis locais e campos

    Em algumas situaes possvel distinguir duas variveis com omesmo nome no mesmo escopo. Nesse caso o compilador permitir acriao da segunda varivel com o mesmo nome. Isso porque o C#consegue diferenciar variveis locais (variveis declaradas dentro demtodos) de campos ( variveis declaradas a nvel de classe ).

    Consideremos o seguinte cdigo:

  • 5/22/2018 asp.net web aula 1

    31/49

    Saiba como encontrar erros atravs do Visual Studio:

    http://msdn.microsoft.com/pt-br/library/vstudio/sc65sadd.aspx

    O cdigo acima ir compilar mesmo tendo duas variveis J no escopodo mtodo Main. Note que a primeira varivel J foi declarada a nvel

    de classe e s ser eliminada quando a classe for destruda ( quandoo mtodo Main terminar sua execuo e o programa terminar ). Noexemplo, a varivel J declarada dentro do mtodo Main esconde avarivel declarada a nvel de classe, e a sada do programa ser onmero 50.

    Mas e se precisarmos acessar a varivel declarada no nvel de classe?Nesse caso necessrio utilizar o nome da classe para informarmosao compilador que a varivel que ser acessada est declarada anvel de classe, como mostrado no cdigo a seguir:

    http://msdn.microsoft.com/pt-br/library/vstudio/sc65sadd.aspxhttp://msdn.microsoft.com/pt-br/library/vstudio/sc65sadd.aspxhttp://msdn.microsoft.com/pt-br/library/vstudio/sc65sadd.aspx
  • 5/22/2018 asp.net web aula 1

    32/49

    A sada do programa ser o nmero 20.

    Constantes

    Como o prprio nome diz, uma constante uma varivel cujo valorno pode ser alterado durante seu ciclo de vida. Para declarar umaconstante basta utilizar a palavra chave const na declarao davarivel. Uma constante sempre deve ser inicializada no momento de

    sua criao:

    const inta = 100;

    Constantes tem as seguintes caractersticas:

    Devem ser inicializadas no momento da declarao e seu valorno pode ser alterado;

    O valor de uma constante deve ser computado em nvel decompilao, isso quer dizer que no permitido inicializar umaconstante com o valor de uma varivel;

    Constantes so implicitamente estticas e no permitidoutilizar a palavra chave static em sua declarao;

    Existem pelo menos 2 vantagens na utilizao de constantes em umprograma:

    Constantes ajudam a evitar erros. Se em algum local doprograma houver a tentativa de alterao do valor inicializadona constante o compilador apresentar um erro, no permitindotal ao.

  • 5/22/2018 asp.net web aula 1

    33/49

    Constantes tornam os programas mais flexveis para alterao,pois vrios locais do programa podem acess-las, e umasimples alterao em seu valor pode alterar o comportamentodo programa inteiro, poupando tempo e evitandoinconsistncias em sua modificao.

    VDEO AULA 04

    Tipos de dados pr-definidos no C#

    Agora que conhecemos variveis e constantes, veremos melhor ostipos de dados disponveis no C#. Notaremos que o C# muito maisrgido quanto utilizao de tipos do que outras linguagens deprogramao.

    Tipos por Valor e Tipos por Referncia

    Antes de descobrir os tipos de dados disponveis no C#, importanteentender que o C# contm duas categorias de tipos de dados:

    Tipos por Valor Tipos por Referncia

    A principal diferena entre as 2 categorias que os tipos por valorguardam o valor diretamente, enquanto os tipos por refernciaguardam uma referncia para onde o valor est alocado. Tipos dedados que trabalham por valor no C# so basicamente os tiposmenos complexos, como o int, float e bool.

    Considere as variveis abaixo:

    int i = 123;strings = ol mundo;

    Em memria, a representao das variveis acima funciona dessaforma:

  • 5/22/2018 asp.net web aula 1

    34/49

    Ou seja, i guarda o valor no prprio local de memria, j s apontapara outro local de memria que contm o valor.

    Tipos por valor so alocados em um local de memria chamado de

    stack, e os tipos por referncia so alocados no heap. importantesaber quando um tipo trabalha por valor ou por referncia peladiferena presente na atribuio de cada uma dessas categorias. Porexemplo, int um tipo por valor, isso quer dizer que o cdigo abaixoir resultar em dois locais de memria alocando o valor 50:

    int i = 50;intj = i;

    Saiba o que so ponteiros na programao:

    http://pt.wikipedia.org/wiki/Ponteiro_%28programa%C3%A7%C3%A3o%29

    Porm, considere o cdigo abaixo:

    O cdigo instncia um objeto da classe Coordenada. importanteentender que toda classe no C# um tipo que trabalha porreferncia. No cdigo acima apenas um objeto do tipo Coordenada foicriado. As duas variveis obj e obj2 apontam para o mesmo local em

    memria onde est alocado o objeto. Como obj e obj2 so variveisde um tipo que trabalha por referncia, a declarao das mesmas no

    http://pt.wikipedia.org/wiki/Ponteiro_%28programa%C3%A7%C3%A3o%29http://pt.wikipedia.org/wiki/Ponteiro_%28programa%C3%A7%C3%A3o%29http://pt.wikipedia.org/wiki/Ponteiro_%28programa%C3%A7%C3%A3o%29http://pt.wikipedia.org/wiki/Ponteiro_%28programa%C3%A7%C3%A3o%29http://pt.wikipedia.org/wiki/Ponteiro_%28programa%C3%A7%C3%A3o%29
  • 5/22/2018 asp.net web aula 1

    35/49

    cria um novo objeto, apenas permite apontar para um objeto do tipoCoordenada. Para criar um objeto necessrio utilizar a palavrachave new. Como obj e obj2 apontam para o mesmo objeto,qualquer alterao feita em obj ir alterar obj2, e vice-versa.

    Seguindo o comportamento descrito, o cdigo mostradoanteriormente retornar os valores 30 e 50 respectivamente.

    Quando uma varivel de um tipo que trabalha por referncia possvel indicar que ela no aponta para nenhum objeto atribuindo ovalor null:

    Coordenadax = null;

    Qualquer acesso a um membro do tipo Coordenada pela varivel

    acima ir gerar uma exceo em tempo de execuo.

    O CLR implementa um algoritmo para identificar se um objeto contmreferncias para o mesmo. Caso no exista nenhuma varivelapontando para o objeto ele destrudo e a memria alocada liberada para uso novamente. Essa tarefa executada por ummecanismo chamado Garbage Collector.

    O C# foi arquitetado dessa forma pois tipos primitivos simples comoo int e bool tm uma melhor performance trabalhando por valor. J

    tipos complexos que podem conter vrios campos, como as classes,tm um melhor desempenho trabalhando por referncia.

    Tipos por Valor pr-definidos

    Como mencionado na unidade 1, os tipos de dados bsicos pr-definidos reconhecidos pelo C# no so exatamente da linguagem,mas sim do .net Framework. Por exemplo, quando declaramos um intno C#, na verdade estamos criando uma instncia da structSystem.Int32 definidos pelo CTS.

    Veremos a seguir uma tabela de mapeamento dos tipos por valor doC# para os tipos por valor definidos no .net Framework:

  • 5/22/2018 asp.net web aula 1

    36/49

    Tipos por Referncia pr-definidos

    O C# contm dois tipos de dados pr-definidos que trabalham porreferncia, object e string como descrito na tabela abaixo:

    O tipo object

    Muitas linguagens de programao e hierarquia de classes contmum tipo base, cujo todos os outros tipos de dados derivam. O C# no exceo. No C# o tipo object o tipo base para todos os outrostipos de dados definidos na linguagem, pr-definidos ou criados pelo

    usurio. Isso quer dizer que o tipo object pode ser utilizado paraalgumas situaes:

    Para apontar para objetos de qualquer tipo de dados, porexemplo, possvel empacotar um objeto que trabalha porvalor para mov-lo do stack para o heap;

    til para trabalhar com reflexo, tcnica utilizada quandoprecisamos trabalhar com objetos de tipos desconhecidos;

    O tipo object implementa alguns mtodos bsicos, como oEquals, GetType e ToString, uteis em diversas situaes edisponveis para todos os objetos no C#.

  • 5/22/2018 asp.net web aula 1

    37/49

    Considere o cdigo abaixo:

    Vdeo: Tipo Object

    http://www.youtube.com/watch?v=KFE66HfPUFk&feature=youtu.be

    Note que foram atribudos valores do tipo int, string e DateTime emvariveis do tipo object, isso perfeitamente possvel pois todos ostipos no C# herdam de object.

    VDEO AULA 05

    O tipo string

    A palavra chave string no C# mapeada para o tipo System.Stringdo .net Framework. Esse um tipo de dados muito flexvel em sua

    utilizao, operaes como concatenao e cpia so efetuadasnaturalmente.

    Apesar da forma de atribuio, string um tipo que trabalha porreferncia. Internamente o tipo string alocado no heap, e no no

    stack, e quando uma varivel string atribuda a outra so criadasduas referncias para o mesmo objeto. Apesar de ser um tipo porreferncia, a string tem alguns comportamentos diferentes dos outrostipos que pertencem a essa categoria. Por exemplo, quando umastring modificada criado um novo objeto para representar essastring, deixando a primeira string intacta.

    Considere o seguinte cdigo

  • 5/22/2018 asp.net web aula 1

    38/49

    Vdeo: Concatenao de Strings

    http://youtu.be/ZcU56qW8M4U

    A sada desse programa ser:

    Alterar o valor da varivel z1 no tem nenhum efeito na varivel z2,ao contrrio do que seria esperado de um tipo que trabalha porreferncia. O que aconteceu foi que ao atribuir o valor isso uma

    string na varivel z1, um novo objeto foi criado. Quando z2 foiinicializada com o valor de z1, uma referncia ao mesmo objetoapontado por z1 foi passada para z2. Quando o valor da varivel z1foi alterado, ao contrrio de alterar a string original, um novo objetofoi criado e alocado no heap para o novo valor, e a referncia de z1foi alterada para apontar para esse novo objeto. z2 continuouapontando para a string original.

    Literais do tipo string so criados utilizando aspas duplas ( ), o usode aspas simples ( ) no C# utilizado para criar literais do tipo char

    e causam erro em tempo de compilao se tentarem ser atribudas avariveis do tipo string:

  • 5/22/2018 asp.net web aula 1

    39/49

    Estruturas Condicionais

    Estruturas condicionais permitem que um bloco de cdigo sejaexecutado apenas se uma ou vrias condies forem atendidas. O C#tem duas estruturas para trabalhar com condies, a estrutura if, quepermite testar se uma condio especfica foi atendida, e o blocoswitch, que permite testar uma expresso com um diferente nmerode valores.

    Estrutura condicional if

    O C# herdou a construo if...else do C e C++. A sintaxe dessaestrutura muita intuitiva para qualquer desenvolvedor que j tenhaprogramado com uma linguagem procedural:

    Se apenas uma instruo ser executada em qualquer uma daspartes condicionais, as chaves no so necessrias.

  • 5/22/2018 asp.net web aula 1

    40/49

    Se necessrio, um bloco if pode no ter uma bloco else. Tambm permitido combinar clusulas else if para testar mltiplas condies:

    Exemplo:

  • 5/22/2018 asp.net web aula 1

    41/49

    No h limite para o nmero de else if adicionadas a um bloco if

    Estrutura condicional switch

    A estrutura switch..case familiar para programadores C++ e Java. muito til para comparar um argumento com vrias opes.

    Para criar o bloco necessrio passar um argumento para o switchseguido de uma srie de clusulas case. Quando a expresso daclusula switch encontra o respectivo case o cdigo segueimediatamente para aquele case. Para cada case deve haver a

    instruo breakpara que o bloco pare de ser executado. Tambm possvel utilizar um case padro caso nenhum deles seja executado.

  • 5/22/2018 asp.net web aula 1

    42/49

    O exemplo a seguir testa o valor da varivel x:

    Note que os valores dos blocos case so constantes, variveis noso permitidas.

    Estruturas de repetio

    O C# disponibiliza quatro estruturas de repetio ( for, foreach,while, do...while) que permitem executar um bloco de cdigo quantasvezes for preciso at uma certa condio ser em encontrada. O for,while e do...while so basicamente iguais aos encontrados no c++.

    Estrutura de repetio for

  • 5/22/2018 asp.net web aula 1

    43/49

    O for um mecanismo para iterar sobre um loop onde testado seuma condio ainda vlida para poder ser executado novamente. Asintaxe a seguinte:

    For(inicializador; condio; iterador)

    Instrues

    Onde:

    O inicializador uma expresso a ser executada antes do loopiniciar ( geralmente iniciando uma varivel para servir comocontador);

    A condio a expresso a ser testada em cada iterao antesdo loop ser executado;

    O iterador uma expresso a ser executada depois de cadaiterao ( geralmente um incremento do contador).

    A iterao termina quando a expresso retorna false.

    O for um excelente loop para repetir um bloco de cdigo em umdeterminado nmero de vezes. O exemplo seguinte mostra um usotpico de um bloco for, imprimindo na tela todos os nmeros de 0 a99:

    Vdeo: foreach, uma alternativa ao for:

    http://www.youtube.com/watch?v=Ys3_QVaAP5w

    No exemplo acima foi declarada uma varivel i do tipo int einicializada com o valor 0. Essa varivel ser utilizada como contadorpara o loop. A condio testa se o contador menor que 100. Essacondio retornar true enquanto o contador for menor que 100. Ocontador incrementado em cada iterao.

  • 5/22/2018 asp.net web aula 1

    44/49

    O exemplo retornar o seguinte resultado:

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

    20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

    40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

    60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

    80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

    Estrutura de repetio while

    A estrutura de repetio while idntica ao while do C++ e Java. O

    while tem uma sintaxe mais simples que o for pois necessrioapenas uma expresso para utiliz-lo:

    While(condio)Instrues

    Diferente da estrutura for, o while geralmente utilizado para repetirum bloco de cdigo por um nmero de vezes desconhecido nomomento que o loop comea. Uma varivel de controle utilizada ealterada no interior da estrutura para que a iterao termine:

  • 5/22/2018 asp.net web aula 1

    45/49

    Estrutura de repetio do... while

    O do...while funciona como o while, mas sua condio de parada testada depois do loop ser executado. Isso quer dizer que o bloco decdigo ser executado pelo menos uma vez:

  • 5/22/2018 asp.net web aula 1

    46/49

    Estrutura de repetio foreach

    O foreach uma estrutura que itera sobre cada objeto de umacoleo, no sendo necessrio trabalhar com ndices. Para que a

    estrutura foreach consiga trabalhar com uma coleo ela deveimplementar a interface IEnumerable. Como exemplos de colees noC# podemos citar arrays, as classes do namespace System.Collectione colees criadas pelo usurio.

    Considere o seguinte cdigo:

  • 5/22/2018 asp.net web aula 1

    47/49

    Saiba mais: O que so Interfaces

    http://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspx

    O exemplo mostra uma iterao em um vetor de string utilizando aestrutura foreach. Cada vez que executado o loop a varivel x alterada para conter um elemento do vetor.

    A inferncia de tipo muito utilizada em estruturas foreach:

    A varivel x ser do tipo string pois o foreach est iterando sobre umvetor de strings.

    Um ponto importante que deve ser lembrado que os itens dacoleo no podem ser modificados dentro de uma estrutura foreach:

    http://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspxhttp://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspxhttp://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspxhttp://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspxhttp://www.linhadecodigo.com.br/artigo/2999/entendendo-interfaces-com-csharp.aspx
  • 5/22/2018 asp.net web aula 1

    48/49

    O cdigo mostrado no ir compilar, pois x no pode ser modificado.

    FRUM:

    Como vimos nesta unidade a linguagem C# tem duas formas bsicasde tipos de dados, por valor e referncia. Em sua opinio qual ocenrio ideal para utilizar cada um desses tipos?

    RESUMO:

    Nesta unidade foram apresentados conceitos primordiais paradesenvolver aplicativos utilizando todas as vantagens que alinguagem C# pode proporcionar. Vimos que existem diferenas naescolha do tipo de dados e como esses tipos so gerenciados emmemria. Tambm foram mostradas as estruturas de repetio econdicionais disponveis na linguagem, sua sintaxe e suassimilaridades com a linguagem C.

    BUILT-in types table (C# reference). 2013. Disponvel em: . Acessoem: 28 fev. 2013.

    SUGESTES DE LEITURA

    SHARP, John. Visual C# 2008 - passo a passo. Porto Alegre:

    Bookman, 2008.

  • 5/22/2018 asp.net web aula 1

    49/49

    LOUREIRO, Henrique. C# 4.0 com visual studio 2010. Lisboa: FCA,2011.

    MSDN..NET framework application essentials. Disponvel em: .

    Acesso em: nov. 2012.

    MSDN. Introduction to the C# language and the .NETFramework. Disponvel em: . Acesso em:nov. 2012.