15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

  • Upload
    otxpmm

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    1/118

     

    Framewoks de

    Desenvolvimento

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    2/118

    Frameworks de Desenvolvimento

    Conteúdo

    Unidade 1 Definição de Framework 5 

    Classificação dos Frameworks 7 

    Profissionais Envolvidos 8 

    Benefícios e Desafios Decorrentes da Adoção de um Framework 10 

    Unidade 2 Plataforma de Desenvolvimento Java 11 

     Ambiente Eclipse 13 

    Unidade 3 Introdução ao Framework .NET 18 

    Visão Geral 19 

    O que é o Framework .NET 19 

    Common Language Runtime 19 

    Biblioteca de Classes do Framework .NET 20 

    Dificuldades encontradas no desenvolvimento de sistemas para Windows antes do .NET 21 

     A abordagem .NET 24 

    Unidade 4 A Arquitetura .NET 25 

    CLR (Commom Language Runtime) 25 

    CTS (Common Type System) 25 

    CLS (Common Language Specification) 26 

    BCL (Base Classe Library) 26 

    Unidade 5 Criando Aplicações com o Visual Studio 28 

    Versões do Framework .NET e Visual Studio 28 

    Conhecendo a IDE 29 

    Criando um Novo Projeto 29 

    Componentes da IDE 31 

    Menu 31 

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    3/118

    Frameworks de Desenvolvimento

    Toolbar (Barra de Ferramentas) 32 

    Toolbox 32 

    Solution Explorer 35 

    Properties 36 

    Janela de Design 38 

    Janela de Código – Code View 38 

    Criando um Hello World 38 

    Criando uma Calculadora 40 

    Passo 1 – Ajustando o Formulário 41 

    Passo 2 – Posicionando os Controles 41 

    Passo 3 –

     Adicionando Funcionalidades 43 

    Unidade 6 Programação Orientada a Objetos 47 

    Introdução 47 

    Por que OOP existe? 47 

    Conceitos de encapsulamento, herança e polimorfismo 50 

    Implementação prática dos conceitos 52 

    Herança e Agregação 56 

    Interfaces 63 

    Tratamento de exceções 69 

    Conversão de tipos (Typecasting) 75 

    Unidade 7 Segurança em Aplicações .NET 81 

    Utilização de Strong Names 81 

     A importância do StrongName 82 

    SQL Injection 86 

    Unidade 8 Acessando Dados com ADO 88 

    Camada Desconectada 88 

    Camada Conectada 88 

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    4/118

    Frameworks de Desenvolvimento

     ADO Object Model 89 

    Camada Desconectada 89 

    Camada Conectada 90 

    Contectando a um Banco de Dados 91 

    Criando um Banco de Dados 91 

    Criando um Formulário de Inserção de Dados 93 

    Criando uma Listagem de Dados 96 

    Unidade 9 Depurando Aplicações no Visual Studio 99 

    Erros de Sintaxe (Syntax Errors) 99 

    Erros em tempo de execução (runtime) 99 

    Erros de Semântica 99 

     A Classe Debug 100 

    Habilitando a Depuração 100 

     Adicionando BreakPoints 101 

    Executando a Aplicação em Modo de Depuração 101 

    Execução Passo a Passo 101 

    Usando a Janela de Depuração 102 

    Exibindo a Janela Window 102 

    Depuração Remota 102 

    Tracing 102 

    Classe TraceContext 103 

    Habilitando o Tracing em uma Aplicação Web 104 

    Dados do Trace 104 

    Categorias do Trace 104 

    Unidade 10 Compilando, Testando e Distribuindo Aplicações .NET ..........................106 

    Criando um Projeto de Instalação 106 

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    5/118

    Frameworks de Desenvolvimento

    Unidade 1Definição de Framework

    Um framework captura a funcionalidade comum a várias aplicações.

    As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmodomínio de problema:

    A definição que usamos foca quatro características principais de um framework (Orientado aObjeto):

    - Um framework provê uma solução para uma família de problemas semelhantes;

    - Usando um conjunto de classes e interfaces que mostra como decompor a família de problemas;

    - E como objetos dessas classes colaboram para cumprir suas responsabilidades;

    - O conjunto de classes deve ser flexível e extensível para permitir a construção de váriasaplicações com pouco esforço, especificando apenas as particularidades de cada aplicação;

    Observe que um framework é uma aplicação quase completa, mas com pedaços faltando.

    Ao receber um framework, seu trabalho consiste em prover os pedaços que são específicos para sua aplicação.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    6/118

    Frameworks de Desenvolvimento

     Na prática, então, um framework é um conjunto de facilidades definidas por um conjunto defuncionalidades que interagem entre si e que é capaz de auxiliar no trabalho do desenvolvedorem determinada área de atuação desse framework.

    Esse conceito começou a ser utilizado para ajudar no processo de reutilização de softwares ou pedaços desses softwares.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    7/118

    Frameworks de Desenvolvimento

    Classificação dos Frameworks

    Orientados a objetos / baseados em componentes

    Os frameworks podem ser classificados em caixa-branca e caixa-preta [Fayad 97]. Osframeworks caixa-branca baseiam-se nos mecanismos de herança e ligação dinâmica

    (dynamic binding) presentes em orientação a objetos. Os recursos existentes em umframework caixa-branca são reutilizados e estendidos a partir de: herança de classes doframework e sobrecarga (overriding) de métodos "hook" pré-definidos. Métodos "hook" sãodefinidos em interfaces ou classes abstratas e devem necessariamente ser implementados poruma aplicação. Um exemplo de método hook na linguagem Java é o actionPerformed(ActionEvent e) pertencente à interface ActionListener do framework AWT (Abstract WindowToolkit). Este método é chamado sempre que ocorre um evento ActionEvent correspondendo, por exemplo, a um clique de botão. Os padrões de projeto (design patterns) utilizados são oCommand, o Observer e o Template Method [Gamma 94].

    Frameworks caixa-preta são baseados em componentes de software. A extensão da

    arquitetura é feita a partir de interfaces definidas para componentes. Os recursos existentessão reutilizados e estendidos por meio de: definição de um componente adequado a umainterface específica e integração de componentes em um framework que utiliza padrões de projeto como o Strategy [Gamma 94].

    Quanto ao contexto de utilização do framework há uma classificação proposta em [Fayad 97],segundo a qual os frameworks são classificados em: "Framework de Infraestrutura deSistema", "Framework de Integração de Middleware" e "Framework de Aplicação".

    Frameworks de infraestrutura de sistema tratam de questões de projeto como sistemasoperacionais, comunicação, interfaces gráficas e linguagens de programação. O frameworkAWT seria classificado como um framework de infraestrutura de sistema.

    Frameworks de integração de middleware são responsáveis por integrar aplicaçõesdistribuídas e componentes em uma mesma arquitetura. Exemplos de frameworks demiddleware são os ORB (Object Request Broker) como o CORBA - Common ORBArchitecture, e o RMI - Remote Method Invocation.

    Frameworks de aplicação tratam de questões de projeto de domínios de aplicação, comotelecomunicações, finanças, produção e educação. O framework que se está desenvolvendoneste trabalho é um framework de aplicação.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    8/118

    Frameworks de Desenvolvimento

    Profissionais Envolvidos

     No processo de desenvolvimento de um framework deve-se produzir uma estrutura de classescom a capacidade de adaptar-se a um conjunto de aplicações diferentes.

    A principal característica buscada ao desenvolver um framework é a generalidade em relação

    aos conceitos e funcionalidades do domínio tratado. Além disso, é fundamental que aestrutura produzida seja flexível.

    Pode-se afirmar que o desenvolvimento de um framework é diferente do desenvolvimento deuma aplicação padrão. A distinção mais importante é que frameworks tem que cobrir todos osconceitos relevantes do domínio enquanto uma aplicação se preocupa somente com osconceitos mencionados nos requisitos da aplicação (Bosh, 1999).

    A complexidade em se desenvolver um framework deve-se aos seguintes fatores (Silva,2000):

    • Necessidade de considerar os requisitos de um conjunto significativo de aplicações de modoa torná-lo genérico.

    • Necessidade de ciclos de evolução voltados a dotar a estrutura de classes do framework dealterabilidade (capacidade de alterar suas funcionalidades sem conseqüências imprevistassobre o conjunto da estrutura) e extensibilidade (capacidade de ampliar a funcionalidade presente sem conseqüências imprevistas sobre o conjunto da estrutura).

    Em termos práticos, dotar um framework de generabilidade, alterabilidade e extensibilidaderequerem uma cuidadosa identificação das partes que devem ser flexíveis e a seleção desoluções de projetos de modo a produzir uma arquitetura bem estruturada. Isto conduz aobservação de princípios de projeto orientados a objetos.

    Em termos ideais, um framework deve abranger todos os conceitos gerais de um domínio deaplicação, deixando apenas aspectos particulares para serem definidos nas aplicaçõesespecíficas (Silva, 2000).

     No contexto de desenvolvimento, a existência do framework estará sempre relacionada àexistência de outros artefatos que são originadores do framework, originados a partir dele ouque exercem influência na definição das estruturas de classes.

    A figura mostra as várias fontes de informação que influem na definição da estrutura de umframework: artefatos de software existentes, artefatos de software produzidos a partir doframework e o conhecimento do desenvolvedor do framework (ou a equipe dedesenvolvimento). As setas representam o fluxo de informações que levam à produção daestrutura de classes do framework.

    Como um framework geralmente não consegue ser uma construção completa de um domínio,mas sim uma descrição aproximada, é possível que a construção de aplicações sob umframework leve à obtenção de novos conhecimentos do domínio tratado, que talvez nãoestivessem disponíveis durante a construção do framework. Estas novas informações podemlevar à necessidade de alterar o framework, causando a sua evolução como ilustra a figura:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    9/118

    Frameworks de Desenvolvimento

    Silva (2000) aborda que o desenvolvimento tradicional de aplicações envolve dois tipos deindivíduos: o desenvolvedor de aplicação e o usuário de aplicação (ambos podemcorresponder a grupos de indivíduos com diferentes funções).

    Desenvolvedores devem levantar os requisitos de uma aplicação, desenvolvê-la e entregá-laaos usuários, que por sua vez interagem com a aplicação apenas através de sua interface.

    O desenvolvimento de frameworks introduz outro indivíduo, a saber, o desenvolvedor deframework . Nesse contexto, o papel do usuário de aplicação é o mesmo descrito acima. O papel do desenvolvedor de aplicações difere do caso anterior pela inserção do framework no processo de desenvolvimento de aplicações. Com isto, o desenvolvedor de aplicações é umusuário de um framework que deve estender e adaptar a estrutura deste framework para a produção de aplicações.

    De forma genérica as atividades macros são descritas a seguir:

    • Análise de domínio - processo de identificar e organizar o conhecimento sobre algumaclasse de problemas –  o domínio do problema –  para dar suporte à descrição e solução destes

    (Arango e Prieto-Díaz, 1991).

    • Projeto de framework –  o objetivo ao realizar essa atividade é obter um framework flexível.A atividade é árdua já que é difícil encontrar as abstrações corretas e identificar as partesestáveis e variáveis do framework. Para aumentar a extensibilidade e flexibilidade doframework padrões de projeto podem ser usados (Mattsson, 2000).

    • Instanciação do framework –  a instanciação difere dependendo do tipo de framework: caixa branca (o usuário constrói classes a partir das classes disponíveis), caixa preta (o usuário temque escolher uma das classes fornecidas). Um framework pode ser instanciado uma ou maisvezes dentro da mesma aplicação ou instanciado em diferentes aplicações (Mattsson,2000).

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    10/118

    Frameworks de Desenvolvimento

    10 

    Benefícios e Desafios Decorrentes da Adoção de umFramework

    Os principais benefícios da utilização de frameworks de aplicação orientada a objetos são amodularidade, a reusabilidade, a extensibilidade e a inversão de controle que eles fornecemaos desenvolvedores (Fayad e outros, 1999):

    • Modularidade: frameworks promovem a modularidade por encapsular detalhes deimplementação volátil em interfaces estáveis. A modularidade ajuda a aumentar a qualidadedo software por localizar o impacto de mudanças no projeto e na implementação. Essalocalização reduz o esforço requerido para entender e manter o software existente.

    • Reusabilidade: as interfaces estáveis fornecidas pelo framework promovem a reusabilidade por definir um componente genérico que pode ser reaplicado para criar novas aplicações. Areusabilidade influencia no conhecimento do domínio e prioriza os esforços dedesenvolvedores experientes a fim de evitar recriação e revalidação de soluções comuns arequisitos recorrentes de aplicações e desafios de projeto de software.

    • Extensibilidade: um framework promove a extensibilidade por fornecer métodos adaptáveis(hook) explícitos (Pree, 1995). Permitindo as aplicações estenderem suas interfaces estáveis.A extensibilidade é essencial para assegurar a especialização de novos serviços da aplicação enovas características.

    • Inversão de controle: a arquitetura do framework é caracterizada por uma inversão decontrole. Isso permite ao framework (ao invés da aplicação) determinar que conjunto demétodos específicos da aplicação invocar em resposta a eventos externos.

    Frameworks são considerados de grande importância para o desenvolvimento de aplicações

    orientadas a objetos. Eles são considerados como uma das principais formas através da qualsistemas orientados a objetos podem alcançar a reusabilidade.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    11/118

    Frameworks de Desenvolvimento

    11 

    Unidade 2Plataforma de Desenvolvimento Java

    Plataforma Java é o nome dado ao ambiente computacional, ou plataforma, da empresa SunMicrosystems (agora Oracle).

    A plataforma permite desenvolver aplicativos utilizando qualquer uma das linguagens criadas para a plataforma Java, sendo a linguagem padrão a que leva seu próprio nome: LinguagemJava.

    Uma grande vantagem da plataforma é a de não estar presa a um único sistema operacional ouhardware, pois seus programas rodam através de uma máquina virtual que pode ser emulada

    em qualquer sistema que suporte a linguagem Java.

    O universo Java é um vasto conjunto de tecnologias, composto por três plataformas principaisque foram criadas para segmentos específicos de aplicações:

    - Java SE (Java Platform, Standard Edition). É a base da plataforma; inclui o ambiente deexecução e as bibliotecas comuns.

    - Java EE (Java Platform, Enterprise Edition). A edição voltada para o desenvolvimento deaplicações corporativas e para internet.

    - Java ME (Java Platform, Micro Edition). A edição para o desenvolvimento de aplicações para dispositivos móveis e embarcados.

    Além disso, podem-se destacar outras duas plataformas Java mais específicas:

    - Java Card. Voltada para dispositivos embarcados com limitações de processamento earmazenamento, como smart cards e o Java Ring.

    - JavaFX. Plataforma para desenvolvimento de aplicações multimídia em desktop/web(JavaFX Script) e dispositivos móveis (JavaFX Mobile).

    Tecnologias Java

    A plataforma Java é constituída de um grande número de tecnologias, cada uma provê uma porção distinta de todo o ambiente de desenvolvimento e execução de software. Os usuáriosfinais, tipicamente, interagem com a máquina virtual Java (Java Virtual Machine, ou JVM) eum conjunto padrão de bibliotecas de classe.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    12/118

    Frameworks de Desenvolvimento

    12 

    Existe um grande número de maneiras de se utilizar uma aplicação Java, incluíndo appletsembutidas em páginas web, aplicativos de uso geral em desktops, aplicativos em aparelhoscelulares e em servidores de aplicações para Internet.

    Os desenvolvedores de aplicações em Java utilizam um conjunto de ferramentas dedesenvolvimento, o JDK.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    13/118

    Frameworks de Desenvolvimento

    13 

    Ambiente Eclipse

    Eclipse é um IDE (ambiente de desenvolvimento integrado) de código aberto. Existe maisferramentas similares de código aberto disponíveis, mas o Eclipse IDE acabou tornando-seuma ótima alternativa em virtude da quantidade de “plug-ins” disponíveis para dar suporteaos diversos tipos de tecnologias que envolvem o desenvolvimento de softwares e sistemas.

    Sua instalação é muito simples, podemos baixá-lo de http://www.eclipse.org em forma dearquivo ZIP e só temos que descompactá-lo na pasta onde quisermos tê-lo instalado.

     No site oficial, há opções para download que sugerem um desenvolvimento mais focado parauma ou outra área. Isso se deve ao fato de que essas opções de download já trazem embutidosalguns plug-ins necessários para facilitar o desenvolvimento dos projetos focados em uma ououtra área.

    Para executá-lo basta acionar o arquivo “Eclipse.exe”. Uma vez iniciado abrirá uma telainicial solicitando onde queremos que o Eclipse vá salvando os projetos que criarmos:

    Obs.: Nessa apostila optamos por usar a versão “Eclipse IDE for Java EE Developers”, que játraz o suporte para o desenvolvimento de aplicações web.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    14/118

    Frameworks de Desenvolvimento

    14 

    Após escolher a área de trabalho (onde serão criados os diretórios - projetos –  com seuscódigos), abrirá a primeira tela da IDE, dando as “boas vindas”. 

    Essa página inicial pode ser fechada. Atrás dela está efetivamente o ambiente dedesenvolvimento.

    Caso seja de seu interesse, navegue pelas opções que aparecem nessa tela inicial para obtermaiores informações sobre a IDE.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    15/118

    Frameworks de Desenvolvimento

    15 

    A primeira tela realmente significativa do Eclipse IDE possui uma série de informaçõesorganizadas em painéis.

    O “Package Explorer”, que está no lado esquerdo da tela, é a área onde estarão dispostas asinformações básicas do seu projeto –  arquivos, diretórios, plugins, etc.

    Os outros painéis não são tão importantes e alguns podem até ser fechados de acordo com a preferência do desenvolvedor.

    Todos os painéis podem ser abertos/fechados através do menu “Window”, em “Show View”.  

    Outro painel interessante é o “Outline”, que fornece informações sobre as classes, métodos eoutros recursos usados no seu projeto.

    Para vermos esses painéis em pleno funcionamento, criaremos um exemplo básico “Olá

    Mundo”, como segue: 

    - Vá ao menu “File” e escolha “New” e dentro dessa opção “Java Project”.  

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    16/118

    Frameworks de Desenvolvimento

    16 

    - Defina um nome para seu projeto.

    - O Eclipse já encontra automaticamente o JDK instalado no seu computador, bastandoapenas avançar para a próxima etapa.

    - Nessa próxima tela (que é opcional) você pode configurar plugins e outros recursos. Se issonão for do seu interesse, apenas confirme e finalize essa etapa.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    17/118

    Frameworks de Desenvolvimento

    17 

    - Na etapa seguinte, você deverá criar um novo arquivo, vinculado ao projeto Java que vocêacabou de criar.

    - Dê um nome (Mundo) para esse novo arquivo (classe Java), escolha se você quer que essanova classe já venha com o código referente ao método “main” e construtores da superclasse(caso esteja herdando de outra classe).

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    18/118

    Frameworks de Desenvolvimento

    18 

    Como todo bom software de desenvolvimento, o Eclipse traz um auxílio ao desenvolvedorquando esse está escrevendo o código, que chamamos de “auto completar”. 

    Esse recurso permite que não seja necessário decorar todas as possibilidades de uso dasfunções e métodos disponíveis da linguagem.

    Após escrever o código, podemos visualizar o resultado no painel “Console” (nesse nossoexemplo) ou em um navegador (caso seja um projeto web) ou outro local conforme aconfiguração do projeto criado.

    Unidade 3Introdução ao Framework .NET

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    19/118

    Frameworks de Desenvolvimento

    19 

    Visão Geral

      O Framework .NET é um framework de desenvolvimento criado pela Microsoft para acriação de aplicações voltadas às plataformas Microsoft e outras. Entender ofuncionamento básico do Framework .NET é essencial pois todo o desenvolvimento deaplicações utilizando esse framework se resume na utilização das classes que compõem o

    mesmo.

       Nesse capítulo veremos os componentes chaves do Framework .NET, assim como o papelque cada um desempenha.

    O que é o Framework .NET

      O framework .NET possue dois componentes chaves:

      O Common Language Runtime

      A biblioteca de classes do .NET Framework

      O Common Language Runtime (CLR) é o agente que gerencia as aplicações .NET emtempo de execução. Ele fornece recursos chave como gerenciamento de memória, threads,e gerenciamento de recursos. As aplicações que rodam sobre o CLR são conhecidas comoaplicações de código gerenciado (managed code), todas as demais são conhecidas comoaplicações de código não gerenciado (unmanaged code).

      As bibliotecas do Framework .NET são um conjunto de classes reutilizáveis que fornecemtodas as funcionalidades que sua aplicação necessita. Essas bibliotecas permitem vocêdesenvolver tanto aplicações Windows como aplicações ASP.NET, ou mesmo aplicações

     para dispositivos móveis Windows Mobile.

     

    Common Language Runtime

      A Common Language Runtime (CLR) é a máquina virtual do Framework .NET. Ela rodaem sistemas operacionais Windows (XP, Vista, Server, etc), e sua função é executar asaplicações .NET compiladas em um formato bytecode denominado MSIL (MicrosoftIntermediate Language). Durante a execução, o CLR JIT (Just-in-time ) compila o bytecode em linguagem de máquina nativo e executa a aplicação. Ou ainda, o código

    MSIL pode já estar precompilado em código nativo, e nesse caso o JIT não é necessário, oque aumenta o desempenho da aplicação.

      O CLR oferece os seguinte serviços:

      Gerenciamento de memória e garbage collection

      Gerenciamento de thread

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    20/118

    Frameworks de Desenvolvimento

    20 

      Gerenciamento de exceções

      Segurança

      Os desenvolvedores .NET pode desenvolver aplicações usando qualquer linguagem .NETcomo C#, VB.NET, ou C++. O bytecode MSIL permite a criação de aplicações .NET portáveis para outras plataformas pelo fato de as mesmas só serem compiladas emlinguagem de máquina na hora de sua execução.

      As aplicações .NET não são aplicações Win32 propriamente ditas (apesar de executaremno ambiente Windows),razão pela qual o runtime Win32 não sabe como executá-las. OWin32, ao identificar uma aplicação .NET, dispara o runtime .NET que, a partir dessemomento, assume o controle da aplicação no sentido mais amplo da palavra, porque,dentre outras coisas, é ele quem vai cuidar do gerenciamento da memória via ummecanismo de gerenciamento de memória chamado Garbage Collector  (GC) ou coletorde lixo, acerca do qual falaremos mais tarde. Esse gerenciamento da memória torna os programas menos susceptíveis a erros. Mais ainda, o CLR como seu próprio nome o diz, écompartilhado e, portanto, não temos um runtime para VB.NET, outro para C# etc. É omesmo para todo mundo.

    Biblioteca de Classes do Framework .NET

      A biblioteca de classes do Framework .NET permite a você desenvolver:

      Aplicações console

      Aplicações windows

      Windows services

      Aplicações ASP.NET

      Web Services

      Aplicações Windows Communication Foundation (WCF)

      Aplicações Windows Presentation Foundation (WPF)

      Aplicações Windows Workflow Foundation (WF)

      As bibliotecas de classe são organizadas utilizando a hierarquia de namespaces. Porexemplo, todas as classes que executam operação de IO estão localizadas no namespaceSystem.IO, e as classes que executam expressões regulares estão localizadas sob onamespace System.Text.RegularExpressions.

      As bibliotecas do Framework .NET estão divididas em duas partes:

      Framework Class Library (FCL)

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    21/118

    Frameworks de Desenvolvimento

    21 

      Base Class Library (BCL)

    A BCL é um subconjunto é um subconjunto de toda a biblioteca e contém um conjunto declasses que fornecem funcionalidades básicas para suas aplicações. Algumas classes da BCL,estão guardadas na DLL mscorlib.dll, System.dll, e System.core.dll. A BCL está disponívelem todas as linguagens suportadas pelo Framework .NET e encapsula todas funções comunscomo manipulação de arquivos, acesso a banco de dados, manipulação de graficos, edocumentos XML.

    A FCL compõem toda a biblioteca e fornece as classes para desenvolver todos os diferentestipos de aplicações descritos acima.

    Dificuldades encontradas no desenvolvimento desistemas para Windows antes do .NET

    Algumas das dificuldades encontradas no desenvolvimento de sistemas Windows antes do.NET são:

    Complexidade associada a linguagens de programação de difícil sintaxe, e ainda as dores decabeça provocadas pelo gerenciamento da memória heap por parte do programador.

     Pouca integração e reaproveitamento de código entre linguagens de programação diferentes;ausência de implementação de mecanismo de herança entre linguagens diferentes.

    Diversidade com pouca integração na resolução de problemas complexos, dificultando acompreensão e o desenvolvimento dos sistemas.

    Falta de portabilidade de código executável entre plataformas diferentes.

    Vejamos a evolução histórica das ferramentas da Microsoft:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    22/118

    Frameworks de Desenvolvimento

    22 

    Apenas para ilustrar um pouco a situação atual, vamos apresentar um pequeno estudo de caso.Para simplificar o nosso problema, vamos considerar apenas as soluções Microsoft.Imaginemos uma situação hipotética na qual é solicitada uma solução de home banking queaceite requisições de um browser da Internet ou qualquer outro dispositivo como handheld,telefone celular etc.; vejamos qual seria a resposta imediata dos recursos de software que euiria precisar:

    1. Uma linguagem de programação para desenvolver as páginas dinâmicas: de cara, VBScriptou JScript.

    2. Precisamos desenvolver alguns objetos COM ou COM+ no servidor, mas por questões de performance e poder de linguagem, escolhemos a linguagem C++, e claro, o compilador C++do MS Visual Studio.

    3. Vamos precisar de alguns componentes para executar no MS Queue server ou então no MStransaction server, e escolhemos a linguagem Visual Basic porque temos pessoal que já fezesse tipo de trabalho usando VB.

    4. Bem, vamos falar o óbvio, mas precisamos também de Web designers com domínio deHTML, Flash, ferramentas de editoração gráfica etc.

    5. Ainda temos um problema para resolver, que é o fato de termos clientes heterogêneos quenão conseguem ler um formato padrão como uma Web page em HTML.

    Ok, agora é o momento de correr atrás do pessoal com todas essas competências, tentargerenciar essa salada de tecnologias e linguagens de programação e, de quebra, fazerfuncionar tudo direitinho.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    23/118

    Frameworks de Desenvolvimento

    23 

    E esta era uma situação bem comum no desenvolvimento de software até pouco tempo atrás:ter de costurar uma série de linguagens + ferramentas + tecnologias + modelos de objetos +linguagens de script vs. linguagens de programação completas + linguagens de marcação.

    Usando o .NET podemos proporcionar uma solução alternativa, de menor complexidade deimplementação, mais integrada:

    1. Uma linguagem de programação para desenvolver as páginas dinâmicas no servidor Web:C# usando o Visual Studio.

    2. Uma linguagem de programação para desenvolver objetos reusáveis, armazenados em umaDLL no servidor: C# usando o Visual Studio.

    3. Uma linguagem de marcação maleável o suficiente de sorte que permita mostrar oconteúdo em diversos dispositivos: XML, gerado pelo C# ou pré-montado para alguns casos.

    4. Todo o trabalho de formatação e transformação dos documentos XML gerados pelasolução de homebank será feito usando XSL para gerar a linguagem de marcação suportada

    no lado cliente. Ah! Com que linguagem vamos fazer estas transformações? Com C# é claro!

    Mas os nossos desenvolvedores têm um background muito forte em VB, de forma que nósdescartamos o C# como alternativa”. Não tem problema, tudo o que foi dito acima continuaválido, vamos mudar apenas a linguagem de C# para VB”. A plataforma .NET permite queusemos a linguagem de programação da qual mais temos domínio e mesmo assimcontinuamos a usufruir todo o seu potencial.

    O exemplo anterior foi apenas para ilustrar o contexto atual de desenvolvimento de sistemascomplexos, onde temos de realmente fazer uma ginástica muito grande integrar todas as partes constituintes da nossa solução. A boa notícia é que, como mostramos no exemplo, com.NET esta situação está, digamos assim, findando esse problema, porque, como você pode ter percebido, a sua solução caiu de três linguagens de programação para apenas uma, e o restodas tecnologias que usamos (COM+, por exemplo) se integra perfeitamente com o restante dasolução.

    Apenas falando no quesito da clareza e reutilização de código, algumas bibliotecas de classes,como MFC (Microsoft Foundation Class), surgem nesse ínterim, mas têm como foco alinguagem C/C++ e não podem ser usadas a partir do Power Builder, por exemplo, ou entãoDelphi, que tem a sua própria biblioteca de componentes reutilizáveis. O que equivale a dizerque essas bibliotecas não podem ser usadas a partir de qualquer linguagem de programação, oque torna o reaproveitamento de código ainda mais difícil.

    Mesmo tecnologias como COM e CORBA sempre apresentam os mesmos problemas dedificuldade de aprendizado por causa de sua complexidade; ou então, mesmo quandooferecem um modelo de objetos comum a ser usado por outras linguagens que não VB ouC++,acabam esbarrando no fato de que cada linguagem de programação implementa os tiposde uma forma diferente. E finalmente, quando achamos que conseguimos resolver os problemas dos tipos, somos barrados porque não conseguimos programar relações de herançaentre linguagens diferentes.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    24/118

    Frameworks de Desenvolvimento

    24 

    Paralelamente às iniciativas da Microsoft, em 1995 surge a linguagem JAVA (na verdade,mais que uma linguagem, é uma plataforma de desenvolvimento) e, apesar de oferecer hámais de dez anos a proposta de portabilidade de código executável, (leia-se, “compile umavez e rode em qualquer plataforma”), é “JAVA-cêntrica”, o que obriga o programador aaprender uma nova linguagem se realmente quiser usufruir os recursos que ela oferece. Masvocê pode perguntar: “e .NET não nos obriga a aprender C#?” A resposta é não e saberemosmais adiante como isso é feito.

    A abordagem .NET

    Citaremos a seguir algumas das características de .NET que visam a resolver os problemascitados acima:

     Independência de linguagem de programação: o que permite a implementação do mecanismode herança, controle de exceções e depuração entre linguagens de programação diferentes.

     Reutilização de código legado: o que implica em reaproveitamento de código escrito usandooutras tecnologias como COM, COM+,ATL, DLLs e outras bibliotecas existentes.

    Tempo de execução compartilhado: o “runtime” de .NET é compartilhado entre as diversaslinguagens que a suportam, o que quer dizer que não existe um runtime diferente para cadalinguagem que implementa .NET.

    Sistemas auto-explicativos e controle de versões: cada peça de código .NET contém em simesma a informação necessária e suficiente de forma que o runtime não precise procurar noregistro do Windows mais informações sobre o programa que está sendo executado. Oruntime encontra essas informações no próprio sistema em questão e sabe qual a versão a serexecutada, sem acusar aqueles velhos conflitos de incompatibilidade ao registrar DLLs noWindows.

    Simplicidade na resolução de problemas complexos.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    25/118

    Frameworks de Desenvolvimento

    25 

    Unidade 4A Arquitetura .NET

    Para melhor entendermos tudo o que temos dito até aqui, vamos falar um pouco da arquiteturade .NET e os seus principais componentes.

    CLR (Commom Language Runtime)

    O CLR, ou tempo de execução compartilhado, é o ambiente de execução das aplicações.NET. Como o leitor já deve ter atentado, as aplicações .NET não são aplicações Win32 propriamente ditas (apesar de executarem no ambiente Windows),razão pela qual o runtime

    Win32 não sabe como executá-las. O Win32, ao identificar uma aplicação .NET, dispara oruntime .NET que, a partir desse momento, assume o controle da aplicação no sentido maisamplo da palavra, porque, dentre outras coisas, é ele quem vai cuidar do gerenciamento damemória via um mecanismo de gerenciamento de memória chamado Garbage Collector  (GC)ou coletor de lixo, acerca do qual falaremos mais tarde. Esse gerenciamento da memória tornaos programas menos susceptíveis a erros. Mais ainda, o CLR como seu próprio nome o diz, écompartilhado e, portanto, não temos um runtime para VB.NET, outro para C# etc. É omesmo para todo mundo.

    CTS (Common Type System)

    O CTS, ou Sistema Comum de Tipos, que também faz parte do CLR, define os tipossuportados por .NET e as suas características. Cada linguagem que suporta .NET tem de,necessariamente, suportar esses tipos. Apesar de que a especificação não demanda que todosos tipos definidos no CTS sejam suportados pela linguagem, esses tipos podem ser umsubconjunto do CTS, ou ainda um superconjunto. No módulo dois falaremos mais a respeitodos diferentes tipos especificados no CTS. Um conjunto de classes básicas que define todosos tipos é implementado na CTS. Por exemplo: um tipo Enum deve derivar da classe System.Enum e todas as linguagens devem implementar o tipo Enum dessa forma. Todo tipo derivada classe Object, porque em .NET tudo é um objeto e, portanto, todos os tipos devem tercomo raiz essa classe. E é dessa forma que os diversos tipos nas diversas linguagens são

    implementados, obedecendo às regras definidas no CTS. Na .NET, e em C#conseqüentemente, todos os tipos derivam de uma raiz comum: a classe Object, o queequivale a dizer que todos os tipos são objetos, por definição.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    26/118

    Frameworks de Desenvolvimento

    26 

    CLS (Common Language Specification)

    O CLS, ou Especificação Comum da Linguagem, é um subconjunto do CTS, e define umconjunto de regras que qualquer linguagem que implemente a .NET deve seguir a fim de queo código gerado resultante da compilação de qualquer peça de software escrita na referidalinguagem seja perfeitamente entendido pelo runtime .NET. Seguir essas regras é um

    imperativo porque, caso contrário, um dos grandes ganhos do .NET, que é a independência dalinguagem de programação e a sua interoperabilidade, fica comprometido. A grosso modo,dizer que uma linguagem é compatível com o CLS significa dizer que mesmo quando esta ésintaticamente diferente de qualquer outra que implemente .NET, semanticamente ela é igual, porque na hora da compilação será gerado um código intermediário (e não código assemblydependente da arquitetura do processador) equivalente para duas peças de código iguais, porém escritas em linguagens diferentes. É importante entender esse conceito para não pensarque o código desenvolvido em C# não pode interagir com código desenvolvido em VB ououtras linguagens, porque mesmo estas sendo diferentes, todas são compatíveis com o CLS.

    BCL (Base Classe Library)

    Como era de se esperar, uma plataforma que promete facilitar o desenvolvimento de sistemas precisa ter uma biblioteca de classes básica que alavanque a simplicidade e a rapidez nodesenvolvimento de sistemas. É este o objetivo da BCL ( Biblioteca de Classes Base), oferecerao desenvolvedor uma biblioteca consistente de componentes de software reutilizáveis quenão apenas facilitem, mas também que acelerem o desenvolvimento de sistemas. Na BCLencontramos classes que contemplam desde um novo sistema de janelas a bibliotecas deentrada/saída, gráficos, sockets, gerenciamento da memória etc. Esta biblioteca de classes éorganizada hierarquicamente em uma estrutura conhecida como namespace. Ao desenvolverum componente de software reusável, este precisa ser estruturado em um namespace para que possa ser usado a partir de um outro programa externo. A seguir mostramos uma tabela com

    alguns dos principais namespaces que fazem parte da BCL:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    27/118

    Frameworks de Desenvolvimento

    27 

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    28/118

    Frameworks de Desenvolvimento

    28 

    Unidade 5Criando Aplicações com o

    Visual Studio

    O Visual Studio 2008 é um ambiente extremamente versátil e poderoso para odesenvolvimento de aplicações .NET.

    Técnicamente, é possível escrever aplicações .NET usando um editor de texto simples e umcompilador. Entretanto, o Visual Studio torna essa tarefa muito mais fácil e produtiva por possuir um ambiente totalmente integrado e voltado à produtividade. Ele tambémdisponibiliza um depurador e tem suporte a IntelliSense.

    Temos ainda a vantagem de trabalhar com todos os dados de forma integrada dentro de ummesmo projeto, com suporte a versionamento e compilação distintas para ambientes de produção e desenvolvimento, dando assim controle no gerenciamento do ciclo de vida daaplicação.

    Versões do Framework .NET e Visual Studio

    A seguinte tabela mostra a relação entre a versão do Visual Studio e a versão do Framework

    que contém o mesmo:

    Versão do Framework Versão Visual Studio

    1.0 Visual Studio .NET 2002

    1.1 Visual Studio .NET 2003

    2.0 Visual Studio 2005

    3.0 Disponibilizado com o Windows Vista

    3.5 Visual Studio 2008

     

    C om o Visual Studio 2008 é possível desenvolver para múltiplas versões do Framework.NET: 2.0, 3.0 e 3.5. Permitindo a continuidade e migração de aplicações desenvolvidas em

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    29/118

    Frameworks de Desenvolvimento

    29 

    versões anteriores. Sem a necessidade de migrar toda a aplicação de uma só vez. Você podetambém, criar uma nova aplicação voltada a uma versão anterior do Framework, bastando para isso indicar a versão desejada ao criar um novo projeto.

    Conhecendo a IDEAo iniciar o Visual Studio 2008, temos acesso a sua interface:

    Criando um Novo Projeto

    Para criar um novo projeto selecione File > New > Project

    Será exibida a caixa de diáligo New Project, que exibirá os templates de aplicações do VisualStudio.

    Um grande número de templates de projetos e itens de projeto já vem pré-instalados com oVisual Studio. Esses templates aparecem como tipos de projetos dentro do menu File > NewProject. Você pode utilizar qualquer um desses templates para criar um projeto básico quecriará para você um conjunto mínimo de itens que sua aplicação necessita como classes,

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    30/118

    Frameworks de Desenvolvimento

    30 

    controles, e referências a bibliotecas do framework. Você pode usar os templates tanto paracriar aplicações desktop Windows Forms, como aplicações Web.

    Os templates estão categorizados pela linguagem e pelo tipo de aplicação.Um nome de projeto default é apresentado (WindowsFormsApplication1) no campo Name etambém:

    Location: a pasta onde o projeto será salvo

    Solution Name: o nome da solução, que por default tem o mesmo nome do projeto.Entretanto, você pode modificar o nome da solução se você quiser que seja diferente.Lembre-se que uma solução pode ter mais de um projeto.

    Create directory for solution: se você desmarcar essa opção, uma solução não será criada para

    o seu projeto.

    Você também pode, no canto superior esquerdo, selecionar a versão do Framework para qualvocê está desenvolvendo a aplicação:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    31/118

    Frameworks de Desenvolvimento

    31 

    Selecione a linguagem Visual C#, nos templates “Windows Forms Application” e clique emOK. Um novo projeto vazio será criado.

    Componentes da IDE

    Menu

    A barra de menu contém os comandos do Visual Studio como o menu File, para criação denovos projetos, abertura de projetos existentes, opção de salvar projetos formulários, etc.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    32/118

    Frameworks de Desenvolvimento

    32 

    É possível de ser customizado em Tools > Customize.

    Toolbar (Barra de Ferramentas)

    Contém atalhos para muitos dos comandos mais utilizados. Assim como o menu também é

    customizavel, bastando para isso clicar com o botão direito em qualquer toolbar existente eabrirá uma lista de barras de ferramentas disponíveis, e ao final da lista, a opção decustomizar as mesmas.

    Toolbox

    A Toolbox contém todos os controles que você pode utilizar em suas aplicações. Você podearrastar os controles da toolbox para dentro do painel de design da sua aplicação.

    Cada aba da toolbox contém controles agrupados para fins específicos. Você pode criar sua própria tab para armazenar seus próprios controls. Para tanto basta clicar com o botão direitona Toolbox e selecionar Add Tab.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    33/118

    Frameworks de Desenvolvimento

    33 

    Para adicionar controles a Toolbox, clique com o botão direiton na aba em que você queradicioná-los e selecione a opção Choose Items. Abrirá a caixa de diálogo Choose ToolboxItens.

    Você pode adicionar os seguintes tipos de controles à Toolbox:

    Componentes do Framework .NET

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    34/118

    Frameworks de Desenvolvimento

    34 

    Componentes COM

    Componentes WPF

    Atividades de Workflow

    Você também pode clicar no botão Browse e procurar pela DLL que contém os controles quevocê quer adicionar a aplicação. Outra maneira de adicionar controles à Toolbox é arrastandoa DLL para dentro da Toolbox.

    Você pode reposicionar a Toolbox arrastando e colocando ela dentro de um dos pontos deancoramento que aparecerão na tela:

    Se você tiver problema de espaço em seu monitor, pode ainda, utilizar o botão Auto Hide paraganhar algum espaço na tela.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    35/118

    Frameworks de Desenvolvimento

    35 

    Solution Explorer

     Na aba Solution Explorer, temos todos os arquivos e recursos utilizados em nosso projeto. Asolução pode conter um ou mais projetos. Os botões diponíveis na barra de ferramentas dessaaba são:

    Properties

    Show All Files

    Refresh

    View Code

    View Designer

    View Class Diagram

    Esses botões são sensíveis ao contexto, ou seja, alguns deles podem não estar visíveisdependendo do ítem que estiver selecionado. Por exemplo, ao selecionar o nome do projeto,os botões View Code e View Designer não são mostrados.

    Para adicionar novos itens como Formulários ou Classes ao seu projeto, clique com o botãodireito sobre o nome do projeto no Solution Explorer, e selecione Add, e escolha o item a seradicionado:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    36/118

    Frameworks de Desenvolvimento

    36 

    Você também pode adicionar projetos novos em File>Add New Project ou existentes em File> Existing Project. Quando você tem mais de um projeto na aplicação, um dos projetos deveser marcado como StartUp Project. Que será o projeto que irá será depurado ao se pressionarF5. Para alterar o projeto inicial, clique com o botão direito sobre o projeto que você desejaque seja o inicial e selecione Set as Startup Project.

    Properties

    A janela de propriedades mostra as propriedades associadas ao diversos itens selecionados no projeto (Windows Forms, controles, projetos, soluções etc).

    A figura abaixo mostra a janela de propriedades de um objeto Windows Form. Por default as propriedades são listadas por categoria, mas você pode optar por visualizá-las em ordem

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    37/118

    Frameworks de Desenvolvimento

    37 

    alfabética. Alternativamente, você pode escolher exibir os eventos relacionados ao objetoselecionado.

    Todos os valores default são exibidos em fonte normal, enquanto os valores que você alterarsão exibidos em negrito. Isso é muito útil para identificar rapidamente quais atributos vocêmudou.

    Você também pode usar a Properties window para exibir eventos. Para cada evento você podeassociar uma função já existente no projeto para gerencia-lo, ou então criar uma,simplesmente dê um duplo clique na propriedade em que você quer criar o evento.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    38/118

    Frameworks de Desenvolvimento

    38 

    Janela de Design

    A janela de Design permite você visualizar e desenhar a interface da sua aplicação.Dependendo do tipo de projeto que você estiver desenvolvendo, um tipo diferente de janelaaparecerá para você arrastar controles para ela.

    Para alternar para o code-behind da aplicação, você pode tanto usar um duplo clique nainterface, ou usar um clique com o botão direito sobre o Solution Explorer e selecionar o itemView Code.

    Janela de Código  – Code View

    Permite você visualizar e escrever a lógica da sua aplicação. Você pode alternar entre o modode design e o código clicando nas tabs.

    Você pode organizar as tabs tanto horizontalmente como verticalmente, clicando com o botãodireito e selecionado New Horizontal Tab Group ou New Vertical Tab Group.

    Criando um Hello World

    Vamos criar nosso primeiro aplicativo Windows Form. Caso já se encontre no Visual Studio,feche o projeto atual, se houver algum aberto, em File > Close Project. Vamos criar uma novaaplicação Windows Form, vá em File > New Project, em Project Types, selecione Visual C#> Windows, no campo Templates selecione Windows Forms Application, no campo name dêo nome de HelloWorld e clique em Ok

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    39/118

    Frameworks de Desenvolvimento

    39 

     Na janela de Design, selecione o Form recém criado, e na janela Properties altere a propriedade Text para Hello World.

    Em seguida, altere a propriedade Name para frmHello.

     Na Toolbox, abra a aba Common Controls e arraste um controle Button para dentro do Form.Selecione o label recém criado, e na janela Properties altere a propriedade Text para “Clique

    aqui” e a propriedade Name para btnOla.

    Agora adicionaremos algumas funcionalidades ao Form. Na janela de Design, dê um duploclique sobre o botão recém criado. Abrirá a aba de edição do code-behind. Insira a seguintelinha de comando:

    MessageBox.Show("Hello world!");

    O código completo deve ficar como o a seguir:

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;

    namespace HelloWorld

    {public partial class frmHello : Form{

    public frmHello(){

    InitializeComponent();}

    private void btnOla_Click(object sender, EventArgs e){

    MessageBox.Show("Hello world!");

    }}}

    Seu formulário deve ficar como o a seguir:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    40/118

    Frameworks de Desenvolvimento

    40 

    Para executá-lo, vá em Debug > Start Debugging ou pressione F5 ou ainda, clique no botãoStart Debugging da barra de ferramentas do Visual Studio. A aplicação deve executar

    corretamente, se não hover erros, abrindo o formulário, e ao clicar no botão aparecerá aseguinte mensagem:

    Criando uma Calculadora

     Nesse exemplo vamos criar uma calculadora. Ela terá dois campos para a entrada dosnúmeros a serem operados, um label para apresentação do resultado, e 5 cinco botões paraexecução das operações de soma, subtração, multiplicação, adição e potênciação, e tambémum botão para limpar os campos e resultado e um botão para fechar a calculadora.

    Inicie o Visual Studio, se você já estiver como ele iniciado, salve o seu trabalho e feche o projeto atual em File > Close Project.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    41/118

    Frameworks de Desenvolvimento

    41 

    Crie um novo Projeto em File > New Project, em Project Types selecione Visual C# >Windows, e em Templates selecione Windows Forms Application. No campo nome escreva“Calculadora” e clique Ok. 

    Passo 1  – Ajustando o Formulário

    Selecione o formulário recém criado, e altere as propriedades do mesmo na janela Propertiesconforme a seguir:

    Text: Calculadora

     Name: frmCalculadora

    Passo 2  – Posicionando os Controles

    Arraste para o formulário apartir da Toolbox, aba Common Controls, os controles listadosabaixo alterando suas propriedades conforme a seguir:

    Controle Label

    Text: Primeiro Operador

     Name: lblOperador1

    Controle Textbox

     Name: txtOperador1

    Controle Label

    Text: Segundo Operador

     Name: lblOperador2

    Controle Texbox:

     Name: txtOperador2

    Controle Label

     Name: lblResultado

    Text: 0

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    42/118

    Frameworks de Desenvolvimento

    42 

    Controle Button:

    Text: +

     Name: btnSomar

    Controle Button:

    Text: -

     Name: btnSubtrair

    Controle Button

    Text: *

     Name: btnMultiplicar

    Controle Button

    Text: /

     Name: btnDividir

    Controle Button

    Text: Pot

     Name: btnPotenciacao

    Controle Button

    Text: Limpar

     Name: btnLimpar

    Controle Button

    Text: Sair

     Name: btnSair

    Ajuste a forma, disposição e tamanho de cada controle conforme for necessário e salve seu projeto.

    Seu formulário deve ficar parecido com o a seguir:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    43/118

    Frameworks de Desenvolvimento

    43 

    Passo 3  – Adicionando Funcionalidades

    Agora iremos adicionar algum código C# para adicionar as funcionalidades da nossacalculadora.

    Primeiro criaremos três variáveis auxiliares que receberão os valores dos Operadores 1 e 2, já

    convertidos de String para Double, e uma variável Double para armazenar o resultado daoperação. E finalmente uma função que fará a conversão dos valores nos campostxtOperador1 e txtOperador2 para double.

    Clique em uma área sem controles do formulário com o botão direito, e selecione View Code.

    Dentro do código C# do formulário, vamos inserir o código abaixo:

    Primeiro vamos adicionar o código para cáculo da soma. Clique duas vezes sobre o botão “+”e adicione o código abaixo ao evento Click do mesmo:

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    44/118

    Frameworks de Desenvolvimento

    44 

    using System.Linq;using System.Text;using System.Windows.Forms;

    namespace Calculadora{

    public partial class frmCalculadora : Form{

    double op1;double op2;double resultado;

    public void converteEntradas() {op1 = 0;op2 = 0;if (txtOperador1.Text != ""){

    Double.TryParse(txtOperador1.Text, out op1);

    }

    if (txtOperador2.Text != ""){

    Double.TryParse(txtOperador2.Text, out op2);}

    }

    public frmCalculadora(){

    InitializeComponent();

    }}

    }

    Agora adicionaremos o código ao evento click do botão somar. Para isso, alterne para a abaForm1.cs [Design] e clique duas vezes sobre o botão +, adicione o seguinte código:

    private void btnSomar_Click(object sender, EventArgse)

    {

    converteEntradas();resultado = op1 + op2;lblResultado.Text = resultado.ToString();

    }

    Alterne novamente para o modo de Design e dê um duplo clique no botão “-“: 

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    45/118

    Frameworks de Desenvolvimento

    45 

    private void btnSubtrair_Click(object sender,EventArgs e)

    {converteEntradas();resultado = op1 - op2;lblResultado.Text = resultado.ToString();

    }

    Observe que esse procedimento é necessário, pois ao fazer isso o Visual Studio,automaticamente liga a função sendo criada ao evento click do controle. O que pode ser

    verificado na janela de propriedades, ao se clicar no botão Events

    Da mesma forma para os demais botões com o código abaixo:

    private void btnMultiplicar_Click(object sender,EventArgs e)

    {converteEntradas();resultado = op1 * op2;lblResultado.Text = resultado.ToString();

    }

    private void btnDividir_Click(object sender, EventArgse){

    converteEntradas();resultado = op1 / op2;lblResultado.Text = resultado.ToString();

    }

    private void btnPotenciacao_Click(object sender,EventArgs e)

    {converteEntradas();resultado = Math.Pow(op1, op2);lblResultado.Text = resultado.ToString();

    }

    private void btnLimpar_Click(object sender, EventArgse)

    {txtOperador1.Text = "";

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    46/118

    Frameworks de Desenvolvimento

    46 

    txtOperador2.Text = "";}

    private void btnSair_Click(object sender, EventArgs e){

    Application.Exit();}

    Salve o projeto e execute a aplicação pressionando F5.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    47/118

    Frameworks de Desenvolvimento

    47 

    Unidade 6Programação Orientada a Objetos

    Introdução

    A programação orientada a objetos (OOP) veio para ficar, sem dúvida nenhuma. Ela permiteque sistemas complexos sejam desenvolvidos com mais facilidade, tanto na implementação

    inicial quanto na manutenção. O produto mais popular do Visual Studio até hoje tem sido oVisual Basic. Porém, reclamava-se muito da ausência de um suporte mais completo a todos osrequisitos que caracterizavam uma linguagem de programação orientada a objetos (OOP).Com a arquitetura .NET, a Microsoft parece ter resolvido atender ao clamor da comunidadede desenvolvedores atacando em todos os flancos. Vários melhoramentos foram feitos noVisual Basic, de forma que ele pode ser considerado agora como orientado a objetos; mas éem C#, sem dúvida alguma, que se terá acesso a uma linguagem de programação queimplementa, de maneira simples e direta (sem as complicações do C++), todos os requisitosde uma linguagem OOP em conjunto com uma forte tipagem de dados (um dos pontos fracosdo VB). Com isso, a programação torna-se mais sólida e muitos erros podem ser eliminadosainda em tempo de compilação.

    Por que OOP existe?

    Antes de continuarmos, vamos voltar um pouco no tempo e entender de onde vem a idéia portrás da programação orientada a objetos. O conceito predominante de programação antes deOOP era a chamada programação procedural. Consistia basicamente em dividir a tarefa de programação em pequenos blocos de código chamados de procedimentos (procedures, eminglês), também conhecidos na época como sub-rotinas. Em todos os casos, o que se fazia, basicamente, era escrever um trecho de código que manipulasse os valores de algumas

    variáveis e desse algum tipo de retorno.

    Exemplificando (código em português):

    x = 0

    Enquanto x < 10

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    48/118

    Frameworks de Desenvolvimento

    48 

    x = x + 1

    Fim Enquanto

    O exemplo acima é muito simples, mas bastante ilustrativo. Mostra que existem dados

    (variáveis) e códigos que manipulam esses dados (estruturas de controle). Qual oinconveniente disso? Supondo que x fosse um valor que tivesse de ser exibido na tela, serianecessário acrescentar algum código que fizesse isso. Ou seja, x não era “capaz” de se “auto-exibir” na tela. O código completo seria:

    x = 0

    Enquanto x < 10

    x = x + 1

    Fim Enquanto

    PosicionarCursor 0,0

    Imprimir x

    Se fosse feita outra alteração no valor de x, você teria de executar novamente os comandos deimpressão para que o valor fosse atualizado na tela. O ponto a que queremos chegar é que

    dados e códigos eram concebidos como elementos separados. Havia, inclusive, uma definiçãoque dizia: dados + código = programa.

    Com a OOP, uma das idéias básicas era eliminar essa distância entre dados e código e fazercom que ambos ficassem mais interligados. Ambos seriam capazes de interagir de forma maishomogênea e autônoma. Primeiramente, expandiu-se a idéia de procedimento para a idéia declasse. Uma classe permite que vários procedimentos e dados sejam armazenados dentro dela.Os procedimentos passaram a chamar-se métodos e os dados passaram a chamar-se propriedades. Mas não foi uma mera maquiagem e uma mudança de nome para a mesmacoisa. De fato, o conceito de classe mudou radicalmente a visão da programação. Uma classedefine como um objeto deve funcionar. Fazendo uma analogia clássica, é como o projeto deuma casa: estabelece como as coisas têm de ser. A partir dessa planta, podem ser construídasvárias casas idênticas. Isso é chamado de instância em OOP. Quando dizemos instanciar umaclasse, significa colocar “no ar” um objeto baseado na descrição da classe. Vamos usar o próprio Windows como referência. Uma das coisas mais comuns na interface do Windows é o botão OK. Você provavelmente o verá na grande maioria das janelas que abrir. Observe queao clicar com o mouse sobre aquele botão, ele produz um efeito de forma que parecerealmente ter sido pressionado.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    49/118

    Frameworks de Desenvolvimento

    49 

    Porém, não existem apenas botões OK. Você encontra botões dos mais variados tipos nasmais diversas janelas. Na figura anterior, você nota que existem três botões idênticos, cadaqual com um título diferente. Internamente, a propriedade que define o rótulo do botão échamada de Text. Assim como existe Text, existem diversas outras propriedades. Uma delas éColor, que define a cor do botão; outra define se o botão está pressionado ou não. Resumindo,existem propriedades que definem diversos aspectos do botão. O grande detalhe é que, aoalterar uma propriedade, obtém-se um efeito imediato.

    Exemplificando em forma de código (fictício):

    BotaoOk.Pressionado = Verdadeiro

    OuBotaoOk.Pressionar

    Ambos os códigos produzem um efeito imediato. Observe aqui duas coisas: primeiro, que a propriedade ou método vêm sempre atrelados a um objeto. Segundo, que se parece muito coma atribuição de uma variável no primeiro caso ou lembra meramente a execução de algum procedimento no segundo código. Você poderia também ter os códigos inversos:

    BotãoOk.Pressionado = Falso ou BotãoOk.Liberar

    A grande mágica em OOP é que propriedades podem disparar a execução de métodos emétodos podem alterar os valores de propriedades sem que você precise fazer nada para queisso aconteça ao manipular o objeto. Isso faz com que os objetos tenham vida própria. Osacadêmicos gostam de dizer que a OOP faz com que você programe “moldando” objetosmuito parecidos com a realidade. Bom, acho isso um exagero. Mas concordo que osresultados que você vê são mais concretos, embora a programação por trás seja ainda mais

    abstrata do que a procedural. Em relação a programação procedural e orientada a objetos, éimportante salientar que ambas não são inimigas e que a OOP não veio para aniquilarninguém. Pelo contrário, a OOP abraça e expande o conceito de programação procedural parahorizontes ainda mais amplos.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    50/118

    Frameworks de Desenvolvimento

    50 

    Conceitos de encapsulamento, herança epolimorfismo

    OK, objetos têm propriedades que podem ser manipuladas e gerar resultados visíveis e

    imediatos. Então vamos primeiramente entender a mecânica de funcionamento dos objetos.Como já dissemos, ao alterar o valor de uma propriedade, códigos são executados de forma a produzir um resultado visível. No exemplo do botão, qualquer modificação nas propriedadesColor ou Text produzirão efeitos imediatos. Porém, ao usar um objeto, você não “vê” ocódigo nem precisa conhecê-lo para criar um botão. Isto é chamado de encapsulamento.Oscódigos usados para alterar cores, títulos, forma e aspecto do botão ficam escondidos naimplementação da classe. Também era possível encapsular funcionalidade dentro da programação procedural através da criação das chamadas bibliotecas de funções. Mas emOOP, esse conceito vai um pouco além. Vamos entender por quê. Suponha que você não estásatisfeito e gostaria de criar botões redondos como os que você encontra no painel do MediaPlayer do Windows, por exemplo. Você precisa conhecer mais dois conceitos para poder

    atingir esse resultado:

    Herança e Polimorfismo.

    Herança significa partir de algo já pronto e modificá-lo com o propósito de deixá-lo maisadequado a determinada finalidade. Supondo que você tem uma classe botão com propriedades básicas; você pode herdar aquelas características básicas e adicionar ainda mais

    funcionalidade.O detalhe é que, ao “derivar” uma classe a partir de outra, você não precisaconhecer o código da classe anterior. A sua nova classe não trará os códigos da classe pai.Eles continuarão encapsulados lá e você poderá usá-los se quiser.O dado importante é quevocê não precisa manipular os códigos da classe pai.

    Como a intenção seria criar um botão com características de funcionamento diferentes, muitasdas propriedades anteriores passariam a funcionar de modo diferente. Observe à esquerda do painel do Media Player que existem botões com os títulos de “Now Playing”, “Media Guide”,“CD Audio” etc. É de se imaginar  que exista uma propriedade Text para aquele tipo de botãotambém. Ou seja, vamos assumir neste caso que existe a propriedade Text para todos os

     botões do Windows. Mas por que alguns Texts são diferentes dos outros? Isso se chama Polimorfismo. Ou seja, cada novo “descendente” de uma classe pode entender  a propriedadeText de uma forma diferente e aplicar seus próprios códigos de modo a redefinir seucomportamento. Resumindo, Herança, Polimorfismo e Encapsulamento são os trêsmecanismos básicos que uma linguagem deve comportar para ser considerada inteiramenteorientada a objetos.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    51/118

    Frameworks de Desenvolvimento

    51 

    Orientação a eventos

    Um tópico que não deve ser confundido com orientação a objetos é a orientação a eventos.Uma linguagem de programação pode ser orientada a objetos sem ser orientada a eventos evice-versa. A união desses dois conceitos, entretanto, produz resultados muito mais

    interessantes que os dois separadamente. Como o próprio nome sugere, uma linguagemorientada a eventos é uma linguagem capaz de responder a determinados “acontecimentos”dentro de um determinado ambiente. Os eventos podem ser muitos: o clique do mouse, umatecla pressionada, uma informação que chega pela placa de rede etc.

    Em ambientes gráficos, isso tem uma importância essencial. O mouse, sem dúvida alguma,foi o dispositivo que mais causou reviravolta no mundo da programação orientada a eventos. No tempo das telas de texto, muito comuns no ambiente DOS, mainframes e versões maisantigas de Unix, o principal dispositivo de entrada de dados era o teclado. Vejamos um

    exemplo de programa com interface de texto:

     Numa tela como essa, se o usuário quisesse pular de um campo para o outro, teria de usar oteclado e necessariamente passar pelos campos dentro de uma determinada seqüência.Como

    advento do mouse, passou a ser possível que o usuário se posicionasse em qualquer campo ehouve uma “quebra” de estratégia. Nos tempos da tela de texto, era o programador quem davaas cartas e estabelecia a seqüência de operação de um programa. Hoje as coisas são diferentes,o programa tem de estar preparado para responder a seqüência de eventos que o usuário acharmais conveniente. Os sistemas operacionais também se tornaram multitarefa e várias ações podem estar acontecendo ao mesmo tempo. Programar com orientação a objetos combinadacom orientação a eventos significa criar métodos que serão acionados quando determinadassituações ocorrerem. Geralmente, esses métodos têm nomes como Obj_Click (Obj_Clicar ),Obj_KeyPress (Obj_PressionarTecla), assim facilitando sua identificação. Resumindo, o que

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    52/118

    Frameworks de Desenvolvimento

    52 

    fazemos é posicionar estrategicamente um punhado de códigos de programação em pontos do programa que serão disparados em determinadas circunstâncias. A sensação que se tem é deque a programação ficou mais “solta” e mais “descontrolada”, mas ocorre exatamente ooposto.

    Implementação prática dos conceitos

    Vejamos agora, em termos de código, o que pode ser feito para criar classes em C#.Conforme já foi visto no módulo 2, C# é uma linguagem inteiramente orientada a objetos, deforma que tudo deve ser implementado dentro de classes. Não existem variáveis ou procedimentos “soltos”. Apenas para relembrar, o esqueleto básico de uma classe deverá termais ou menos o seguinte aspecto:

    escopo class NomeClasse

    {

    // Propriedades

    escopo tipo nome;

    escopo tipo nome;

    // Construtores

    escopo NomeClasse

    {

    // Especificações

    }

    // Métodos

    escopo tipo NomeMétodo

    {

    // Especificações

    }

    }

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    53/118

    Frameworks de Desenvolvimento

    53 

    Evidentemente, esse exemplo está muito simplificado, mas traz a idéia básica: você tem de planejar quais serão as propriedades, os métodos, os construtores, destrutores e seus escopos etipos.

    Exemplo:

    public class Cadastro

    {

    // Propriedades

    public string CPF;

    public string NomeCliente;

    // Construtores

    public Cadastro( )

    {

    MessageBox.Show( "Eu sou o construtor 'default'!" );

    }

    public Cadastro( string fCPF, string fNome )

    {

    // Comandos de inicialização

    this.CPF = fCPF;

    this.NomeCliente = fNome;

    MessageBox.Show( "Eu sou um construtor customizado

    e recebi " + fCPF + " e " + fNome + " como parâmetros." );

    }

    // Métodos 

    public bool Gravou( )

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    54/118

    Frameworks de Desenvolvimento

    54 

    {

    // Código para gravação

    return true;

    }

    }

    Em C#, a regra para definir um construtor é muito simples: basta criar um método cujo nomeseja idêntico ao da classe. Toda vez que uma instância da classe for criada, o construtor seráautomaticamente disparado. Observe também que, no exemplo anterior, foram criados doisconstrutores para a mesma classe. Isso, em OOP, é chamado de  sobrecarga (overload) demétodo. A palavra sobrecarga pode trazer a idéia de estresse ou excesso de trabalho, masnesse caso é um elemento que nos ajuda e muito! Quando um método é “sobrecarregado”, o

    editor do Visual Studio dá uma indicação clara disso. Vamos tomar como exemplo oMessageBox. Ao digitar  MessageBox.Show, o editor mostra que existem doze alternativasdiferentes  para o método Show:

    O que diferencia um do outro é a combinação do número de parâmetros, seus nomes e tipos.Isso é conhecido como assinatura do método. O compilador reconhecerá automaticamentequal assinatura você está usando. No caso da nossa classe, podemos escolher qual construtorserá usado fornecendo a assinatura correta:

    {

    // Construtor 'default' é chamado

    Cadastro Ficha1 = new Cadastro( );

    // Construtor otimizado é chamado

    Cadastro Ficha2 = new Cadastro( "123", "De Oliveira Quatro" );

    }

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    55/118

    Frameworks de Desenvolvimento

    55 

    Um detalhe importante é que criamos duas instâncias da mesma classe e ambas jamais semisturam. Outro detalhe é que o chamado construtor default , o qual não recebe nenhum parâmetro, existe em todas as classes. Porém, se você criar um novo construtor customizadocom parâmetros, o construtor default  é silenciosamente removido. No nosso exemplo, areescrita do construtor default se tornou obrigatória a partir do momento em que quisemosusar a inicialização padrão de uma classe.

    Vamos agora entender os escopos (visibilidade) de uma classe e de seus membros. Uma propriedade (ou campo) ou método podem ser public, protected , private ou internal . Em C#,eles são chamados de modificadores de acesso.

    Veja os significados:

    Quando você cria um objeto, muitos de seus elementos são visíveis e outros estão escondidos.Fazendo uma comparação com o mundo real, quando usamos um carro, muitos de seuselementos (ou propriedades) são facilmente acessíveis enquanto outros permanecem mais bem-guardados. A velocidade, o nível do combustível, o câmbio, todos esses elementos sãovisíveis externamente. Outros permanecem mais escondidos e são usados indiretamente: ainjeção eletrônica, as válvulas, os eixos de tração etc. Criar uma classe passa pela mesmaidéia. Na verdade, a criação de uma classe lida com dois alvos: existe uma parte pensada no programador que usará a classe em seu sistema e outra pensada no usuário, que normalmenteverá apenas a “superfície” do objeto criado. Veremos o uso desses modificadores comexemplos práticos e isso se tornará mais claro.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    56/118

    Frameworks de Desenvolvimento

    56 

    Herança e Agregação

    O trabalho de desenvolvimento de um único sistema pode resultar na criação e/ou utilizaçãode dezenas ou mesmo centenas de classes. Muitas dessas classes têm funcionalidades muito

    distintas, mas outras se cruzam e se complementam. Por causa desses eventuais“cruzamentos” de classes, é fundamentalmente necessário entender o modo como elas serelacionam. Assim como na vida real com as mais diversas pessoas, duas classes podem serelacionar baseada no “ser” e no “ter”. No caso do “ser”, diz -se que uma classe foi derivadade outra e ambas têm uma relação de parentesco. Pelo outro lado, o “ter” especifica que umaclasse incorporou outra e ambas têm uma relação de

    amizade. 

    Vamos tomar um exemplo da vida real: como se constrói um computador? Existem muitas peças que formam uma máquina “completa” hoje em dia: processador, HD, monitor etc.Observe que a Intel produz novos processadores a partir dos preexistentes. A partir disso,nota-se uma linha genealógica: 8086, 286, 386, 486, Pentium, Pentium II e por aí vai. Cadanovo processador herda as características da geração anterior e agrega novos recursos e mais potência. Então podemos dizer que temos uma classe onde cada novo processador é filho dageração anterior. Conclusão: todos eles SÃO processadores.O relacionamento entre eles é baseado em “ser”. Já um computador seria uma classe que agrega várias outras. Assim comoo exemplo do processador, HDs, Impressora e tantos outros periféricos também têm sua linhaevolutiva. A gente diz que um computador TEM memória, disco rígido etc. Ou seja, trata-sede uma classe que incorpora diversas outras.O relacionamento do computador com os demaiselementos é do tipo “ter”. Fácil de entender na teoria, não é? Pois vejamos agora um pouco de

    código:

    class Processador

    {

    public double Megahertz;

    public int AnoFabricacao;

    }

    class Intel386 : Processador

    {

    public Intel386( )

    {

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    57/118

    Frameworks de Desenvolvimento

    57 

    Megahertz = 33.3;

    AnoFabricacao = 1993;

    }

    }

    class DiscoRigido

    {

    public int CapacidadeGB;

    }

    class Computador

    {

    Intel386 MeuProcessador;

    DiscoRigido MeuHD;

    public Computador( )

    {

    MeuHD.CapacidadeGB = 70;

    }

    }

     No exemplo anterior, Intel386 é uma classe derivada a partir de Processador . DiscoRigido éuma classe independente e Computador também. Na classe Computador , são agregadas asclasses DiscoRigido e Processador .

    Criação de Propriedades

    Vamos explorar agora um pouco mais as possibilidades de criação de propriedades. Osexemplos anteriores foram muito simples. Uma propriedade, é preciso entender em primeirolugar, se parece muito com uma simples variável, mas é bem mais do que isso. Uma

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    58/118

    Frameworks de Desenvolvimento

    58 

     propriedade (também chamada de “atributo”, dependendo da forma como foi definida) é umvalor ao qual é associado um método.

    Toda vez que for lido ou gravado o valor da propriedade, métodos podem entrar em ação.Essas ações são definidas pelas palavras get e set.Na prática, pode- se dizer que uma propriedade é composta de três elementos: um campo (local onde armazena-se o valor,também chamado de atributo), um método de leitura (get) e um método de gravação (set).Veja o exemplo da nossa classe Cadastro reescrita dentro dessas premissas:

    class Cadastro2

    {

    protected string fCPF;

    public string CPF

    {

    set

    {

    fCPF = value;

    }

    get

    {

    return fCPF;

    }

    }

    }

    Como dissemos anteriormente, temos três elementos. As variáveis fCPF e fNome são os campos(fields) onde os valores são efetivamente armazenados. Observe que se trata de variáveis dotipo protected , o que significa que só serão vistas pelas classes descendentes (lembre-se doconceito de “ser”) e não serão manipuladas por outras classes (lembre-se do conceito de“ter”). O set e o get, como você pode notar, servem para recuperar e gravar novos valores. A palavra value é reservada no C# para receber o valor passado para a propriedade. Veja oexemplo:

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    59/118

    Frameworks de Desenvolvimento

    59 

    InstanciaCadastro2.CPF = "123"; // Dispara o "set"

    x = InstanciaCadastro2.CPF; // dispara o "get"

    Para testar este código, sugerimos que você crie um projeto de teste bem simples,

    apenas um formulário com um botão e escreva o código dentro do evento click desse botão.

    Talvez você esteja se perguntando agora quem foi o maluco que resolveu complicar tanto a programação. Mas o fato é que isso, acredite ou não, torna as coisas mais fáceis. Se vocêtivesse de fazer com que um CPF fosse imediatamente validado ao ser atribuído, porexemplo, ficaria muito mais fácil dessa forma. Ou seja, assim que o valor fosse informado, a própria classe seria capaz de identificá-lo como válido ou não. No nosso estudo de caso,desenvolveremos um exemplo

     baseado nessa idéia.Uma das coisas que você pode fazer com uma propriedade e nãoconsegue com uma variável, por exemplo, é torná-la somente leitura ou somente gravação. No caso de ter uma propriedade somente leitura, implemente apenas o método get. Seimplementar apenas o set, ela será apenas de escrita. No caso de não ser uma propriedade“full” e apenas um campo (atributo), a forma seria:  

    public readonly string CampoSomenteLeitura

    Métodos polimórficos

    Vamos criar uma classe pensando em um método cuja implementação seria diferente naclasse pai e na classe filha. Ou seja, a implementação da classe filha será ligeiramentediferente e melhorada em relação à versão pai. Nesse caso, toda vez que temos um métodoque se modifica da classe pai para filho, esse método é chamado de virtual .

    Em OOP, um método virtual se caracteriza pela capacidade do compilador de detectarmudanças de acordo com o contexto da classe e viabilizar o polimorfismo. Em bom português: é o método camaleão.

    Vejamos este trecho de código para clarear um pouco mais:

    class PrimeiraGeracao

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    60/118

    Frameworks de Desenvolvimento

    60 

    {

    public virtual void Mensagem( string msg )

    {

    msg += " Primeira Geração ";

    MessageBox.Show( msg );

    }

    }

    class SegundaGeracao : PrimeiraGeracao

    {

    public override void Mensagem( string msg )

    {

    msg += " Segunda Geração ";

    base.Mensagem( msg );

    }

    }

    class TerceiraGeracao : SegundaGeracao

    {

    public override void Mensagem( string msg )

    {

    msg += " Terceira Geração ";

    base.Mensagem( msg );

    }

    }

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    61/118

    Frameworks de Desenvolvimento

    61 

    Observe que na primeira geração, o método Mensagem é definido como virtual . Nas duasgerações posteriores, ele é definido como override. Dentro de cada método override, observe a presença da palavra-chave base. Ela é essencial para permitir que o polimorfismo aconteça.Sua finalidade é acionar a codificação escrita na classe pai (o nível imediatamente anterior).Apenas a Primeira Geração gera uma saída na tela. As outras classes apenas agregam maisinformação à

    mensagem final. A terceira passa para segunda, que passa para a primeira, que efetivamenteimprime. Exemplo de utilização:

    TerceiraGeracao teste = new TerceiraGeracao( );

    teste.Mensagem( "Mecanismo de Herança: " );

    A grande vantagem por trás disso tudo é que ao gerar uma nova versão do método, você não precisa necessariamente conhecer o código da classe pai para fazer a nova implementação. Sequiser, pode até mesmo descartar o que foi escrito anteriormente, basta não incluir a chamadaatravés da palavra- chave base. Existe também uma outra palavra-chave bastante importantenesse processo de herança e polimorfismo. Essa palavra é this. A palavra this refere-sesempre ao contexto atual. Na grande maioria dos casos, a palavra this pode ser omitida. Masquando existem coincidências entre nomes de variáveis ou parâmetros com campos ou propriedades de uma classe, é conveniente usar this:

    class ContextoPai

    {

    public string Nome; // this.Nome refere-se a este item

    public ContextoPai( string Nome )

    {

    this.Nome = Nome;

    }

    }

    Apenas para traçar um paralelo, o this em C# seria idêntico ao this em C++ e Java, idêntico aome em Visual Basic e idêntico ao self em Delphi.

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    62/118

    Frameworks de Desenvolvimento

    62 

    Um pouco de Concretismo e Abstracionismo

    Bom, vamos dar alguns exemplos mais avançados de como criar métodos em classes. Uma

    das coisas que mais massacram as almas dos programadores estabanados, quando eles sedeparam com OOP, é a necessidade primordial de planejamento. Muita gente simplesmentesenta na cadeira e começa a escrever, gerando um código que muitas vezes é complicado deentender e dar manutenção. Para quem vai desenvolver classes, um mínimo de planejamento éabsolutamente indispensável no início. É como jogar xadrez. Se você não consegue pensarnos lances seguintes, o xeque-mate (e neste caso o seu rei será o sacrificado) pode aparecer deuma hora para outra. Baseado nessas premissas, não é exagero dizer que a OOP requer umnível muito alto de abstração por parte do programador. Um nível de abstração tão alto queele pode simplesmente criar uma classe completamente vazia, oca, apenas para definir comoserá o seu formato final ou de seus descendentes. O C# suporta abstração em classes atravésde dois mecanismos: criação de classes e métodos abstratos e interfaces. Uma classe abstrata,

    como o próprio nome sugere, não traz uma implementação concreta. Ela serve para dar formaa um projeto de classe. Veja o código:

    abstract class EntradaDeDados

    {

    public abstract string Conteudo( );

    public abstract string Exibir( );

    }

     Normalmente, toda entrada de dados terá um conteúdo, o qual pode eventualmente serexibido. Isso é uma premissa. Criar uma classe abstrata significa definir premissas. Nada écodificado concretamente na primeira geração da classe. As classes filhas (através deoverride) é que definirão a funcionalidade de cada método ou propriedade. Se você tentarinstanciar uma classe abstrata, obterá um erro do compilador:

    EntradaDeDados x = new EntradaDeDados( ); _ Cannot create aninstance of the

    abstract class or interface 'EntradaDeDados'

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    63/118

    Frameworks de Desenvolvimento

    63 

    Na classe filha, você teria as implementações:

    class EntradaDeOcorrencias : EntradaDeDados

    {

    public override string Conteudo( ) 81

    {

    // Implementação

    return "";

    }

    public override string Exibir( )

    {

    // Implementação

    return "";

    }

    }

    Interfaces

    O recurso de criação de interfaces segue mais ou menos o mesmo princípio dos métodosabstratos: apenas define o formato de uma classe sem implementar seu código. Porém, háuma característica que torna as interfaces bastante diferentes de simples classes abstratas: elasfornecem subsídio para a criação de novas classes numa forma mais parecida com amontagem de um quebra-cabeça. O C# não suporta herança múltipla. Isso significa que umaclasse filha só pode ter um única classe como pai. Interfaces permitem criar algo parecido

    com herança múltipla em C++. Por definição, em OOP, Interfaces são coleções de métodosabstratos relacionados semanticamente. Em bom português: peças de um quebra-cabeça que podem ser encaixadas conforme a conveniência de quem estiver jogando... Observe que, paraefeito de padronização, é comum identificar os nomes das interfaces com I maiúsculo noinício. Vamos a um exemplo:

    public interface ICodigoBarras

  • 8/18/2019 15 Frameworks Eclipse e Visual Studio Da Microsoft - Alfamídia

    64/118

    Frameworks de Desenvolvimento

    64 

    {

    void LeituraPadrao3of9( ); // Implicitamente abstrato

    void LeituraPadraoEAN13( );

    void MetodoIdentico( );

    }

    public interface IControleArmazenamento

    {

    void Localizador( );

    void Categorizacao( );

    void MetodoIdentico( );

    }

    public class Produto : ICodigoBarras, IContro