Prévia do material em texto
PROGRAMAÇÃO APLICADA
MICROSOFT .NET USANDO C#
EDIÇÃO Nº 1 - 2007
LAÉRCIO DA CRUZ LOUREIRO
___________________________________________________________________
Apoio Gestão e Execução Conteúdo e Tecnologia
Programação Aplicada – Microsoft .NET usando C# 2
SOCIESC – Sociedade Educacional de Santa Catarina
Apresentação
Este livro didático contém a disciplina de Programação Aplicada com
Microsoft .NET.
O conteúdo apresentado oferece um amplo conjunto de informações sobre os
métodos de programação, que foram apresentados nos cursos anteriores, e agora
serão aplicados a uma tecnologia particular.
A programação para o sistema operacional Windows é favorecida com o uso
do Microsoft .NET (fala-se “dót net” ou “ponto net”) e o objetivo deste curso é
apresentar os conceitos disponíveis nesta plataforma de desenvolvimento,
permitindo ao aluno construir sistemas usando uma das principais linguagens
utilizadas em .NET: a C# (fala-se “cê charp”).
É um assunto extremamente atual, principalmente diante do grande volume
de empresas desenvolvedoras de software, que estão aderindo à plataforma .NET.
Por isso, procuramos manter um conteúdo alinhado com as necessidades do
mercado, seguindo informações que foram coletadas com empresas de mercado.
Além disso, o conteúdo segue as orientações e práticas que são sugeridas pela
Microsoft, através de seus sites, livros e artigos.
Diante disso, estamos apresentando uma abordagem adequada para os
desafios que o programador precisa superar, utilizando-se como apoio as
tecnologias envolvidas com a plataforma .NET, e também buscamos manter uma
linguagem acessível para programadores iniciantes e que precisam entender com
segurança os tópicos que compõem os assuntos tratados.
É importante ressaltar que o livro foi desenvolvido com o objetivo de oferecer
um aprendizado independente, inerente aos estudos do EAD, e o conteúdo foi
revisado com o intuito de oferecer uma linguagem simples, objetiva e estimulante.
Lembre-se de que a sua passagem por esta disciplina será também
acompanhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax,
telefone, e-mail ou Ambiente Virtual de Aprendizagem.
Programação Aplicada – Microsoft .NET usando C# 3
SOCIESC – Sociedade Educacional de Santa Catarina
Sempre entre em contato conosco quando surgir alguma dúvida ou
dificuldade.
Toda a equipe terá a maior alegria em atendê-lo, pois a sua aquisição de
conhecimento nessa jornada é o nosso maior objetivo.
Acredite no seu sucesso e bons momentos de estudo!
Equipe Tupy Virtual.
Programação Aplicada – Microsoft .NET usando C# 4
SOCIESC – Sociedade Educacional de Santa Catarina
SUMÁRIO
CARTA DO PROFESSOR......................................................................................... 5
CRONOGRAMA DE ESTUDOS ............................................................................... 7
PLANO DE ESTUDOS ............................................................................................. 8
AULA 1 - INTRODUÇÃO À PLATAFORMA .NET…………………………………….. 9
AULA 2 - VISUAL STUDIO EXPRESS………………………………………………… 26
AULA 3 - TRABALHANDO COM VARIÁVEIS EM C#............................................. 47
AULA 4 - CONTROLE DE FLUXO EM C#............................................................... 65
AULA 5 - PROGRAMAÇÃO ORIENTADA A OBJETOS EM C#............................. 76
AULA 6 - TÉCNICAS DE OOP USANDO C#........................................................... 88
AULA 7 - APLICAÇÕES WINDOWS FORMS……………………………………….. 104
AULA 8 - BANCO DE DADOS COM C# ……………………………………………... 132
Programação Aplicada – Microsoft .NET usando C# 5
SOCIESC – Sociedade Educacional de Santa Catarina
Carta do Professor
“A transição para a .NET é tão dramática quanto o movimento
de transição do MS-DOS para Windows. Os programadores são
fundamentais para este esforço, porque eles irão construir as
soluções que irão guiar os usuários para uma nova era da
verdadeira computação distribuída na Internet. ”
(Bill Gates no lançamento da Plataforma .NET, 2000).
Prezado aluno,
Em 2000, a Microsoft lançou uma iniciativa para a criação de uma nova
geração de sistemas, a qual iria unificar a computação com a comunicação de dados
através de um caminho revolucionário. Foi a divulgação de uma visão, como a
fabricante procura reforçar.
Na verdade, a Microsoft demorou para aderir à “onda” que a Internet na época
estava gerando, principalmente no impacto cultural que os usuários de
computadores estavam percebendo. Quando a Microsoft lançou o Windows 95 e o
Internet Explorer, sistema operacional e navegador respectivamente, foi o primeiro
passo no sentido de uma resposta direcionada para as empresas que, na época,
estavam liderando a “onda” da Internet. Naquele período, a Netscape era a grande
alavanca para uma nova experiência dos usuários no uso da Internet, e ela até hoje
é reconhecida como a precursora das tecnologias que usamos na atualidade.
Após esse período, a Internet nunca mais deixou de ser uma “arena” de
constantes inovações e grandes competições, onde os fabricantes de software
buscam cada vez mais determinar e conduzir as oportunidades de negócios que a
“grande rede” oferece.
O mundo atual é um lugar diferente do que há 10 anos atrás. Segundo
Friedman (2005), a partir do ano 2000, os fabricantes de software engendraram
plataformas com base nas quais o trabalho e o capital intelectuais poderiam ser
realizados de qualquer parte do globo. Tornou-se possível fragmentar projetos e
transmitir, distribuir, produzir e juntar de novo as suas peças, usando a mesma
Programação Aplicada – Microsoft .NET usando C# 6
SOCIESC – Sociedade Educacional de Santa Catarina
abordagem da componentização de processos industriais baseados nos modelos de
Ford e da Toyota.
É neste contexto que a plataforma .NET nasce. É a proposta da Microsoft
para suportar a dinâmica que os complexos processos de negócios estavam
empregando e exigindo um nível de componentização dos sistemas, completamente
baseados na Internet.
Nesta apostila, procuro apresentar-lhe os fundamentos desta iniciativa, com
ênfase no desenvolvimento de sistemas baseados em .NET usando a linguagem C#,
que também foi lançada pela Microsoft, em 2002, junto com a nova versão do
software para desenvolvedores, chamada Visual Studio .NET.
Cabe ressaltar que a linguagem C# também foi um movimento de resposta da
Microsoft que, utilizando-se de todas as propostas tecnológicas da plataforma .NET,
baseou-se na sintaxe da Linguagem C, da C++ e do Java, para competir com o
próprio Java, diante de sua ampla adesão pelos desenvolvedores. Ela também
oferece suporte completo à programação orientada a objetos e recursos para a
construção de sistemas para a Internet, de forma segura, rápida e poderosa.
Observe que é um assunto extenso. Este módulo tem por finalidade lhe
oferecer fundamentos para construir sistemas, sem contudo esgotar o assunto.
Leia. Pratique. Exercite. Reflita. Discuta com seus colegas. Corrija. E renove.
Mantenha estas atividades como parte de seus trabalhos neste curso. Permanece
aqui a recomendação de que a programação de computadores é uma tarefa que
exije dedicação e muita prática.
Finalmente, reitero minha expectativa em apoiar você em mais um passo de
seu conhecimento no desenvolvimento de software. Mantenha-se motivado a
continuar seus estudos, pois, à medida que os tópicos são revelados, um mundo
novo de oportunidades abre-se para você.
Desejo-lhe bons estudos e aproveite esta oportunidade.Professor Laércio da Cruz Loureiro
Programação Aplicada – Microsoft .NET usando C# 7
SOCIESC – Sociedade Educacional de Santa Catarina
Cronograma de Estudos
Acompanhe no cronograma abaixo os conteúdos das aulas, e atualize as
possíveis datas de realização de aprendizagem e avaliações.
Semana Carga horária Aula Data / Avaliação
1
20
Introdução à Plataforma
Microsoft .NET
_/_ a _/_
14
Visual Studio Express
_/_ a _/_
2
14
Trabalhando com Variáveis
em C#
_/_ a _/_
10
Controle de Fluxo em C#
_/_ a _/_
3
12
Introdução OOP usando C#
_/_ a _/_
12
Técnicas de OOP usando
C#
_/_ a _/_
4
22
Aplicações Windows Forms
_/_ a _/_
6
16
Banco de Dados com C#
_/_ a _/_
Programação Aplicada – Microsoft .NET usando C# 8
SOCIESC – Sociedade Educacional de Santa Catarina
Plano de Estudos
Ementa
Introdução à plataforma Microsoft .NET. Visual Studio Express. Orientação a
objetos usando C#. Sintaxe da linguagem C#. Desenvolvimento de sistemas usando
banco de dados. Soluções usando ASP.NET
Objetivo Geral
• Entender as vantagens do uso da plataforma Microsoft .NET e desenvolver
sistemas usando a linguagem C#.
Específicos
• Descrever os componentes da plataforma .NET;
• Construir programas orientados a objetos usando a linguagem C#;
• Conhecer e desenvolver programas usando a sintaxe de comandos da
linguagem C#;
• Utilizar recursos de banco de dados em sistemas .NET;
• Conhecer os elementos básicos para a construção de sistemas para a
Internet usando a plataforma .NET.
Carga Horária: 120 horas/aula.
Programação Aplicada – Microsoft .NET usando C# 9
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 1
INTRODUÇÃO À PLATAFORMA .NET
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Identificar os objetivos da plataforma .NET;
� Enumerar as vantagens na utilização da plataforma .NET;
� Descrever os componentes da plataforma .NET;
� Utilizar linguagens disponíveis baseadas em .NET.
Conteúdos da aula
Acompanhe os assuntos desta aula, se preferir, após o
seu término, assinale o conteúdo já estudado.
� A Internet e as aplicações distribuídas;
� A evolução tecnológica;
� Ilhas de informações;
� Reuso, OOP e Web Services;
� O que é a plataforma .NET?
� Componentes da plataforma;
� .NET Framework;
� As linguagens para .NET
Programação Aplicada – Microsoft .NET usando C# 10
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a)!
Muitos fatores influenciaram a criação da plataforma .NET. O mais
relevante, com certeza, foi a Internet. O uso cada vez maior da Internet
para realizar novas formas de negócios, bem como, a transformação de métodos
atuais de negócios, em outros métodos através da Internet, impulsionam inovações
no segmento de desenvolvimento de software.
Além disso, como segundo elemento forte que influenciou o surgimento do
.NET foi a convergência digital. Basicamente, esse tema refere-se à união do
telefone, do computador, da TV, do rádio, da música, do celular e outras tecnologias,
um único dispositivo. A convergência digital exige dos sistemas atuais recursos
como multiplataforma, escalabilidade, suporte a múltiplos idiomas, alta capacidade
de processamento de dados, etc., ou seja, as tecnologias devem suportar novas
formas para construir sistemas.
Nesta aula, você conhecerá os vários aspectos que envolvem a plataforma
.NET, incluindo seus componentes, aspectos de negócios que a influenciaram e
suas aplicações, além de compreender as várias alternativas disponíveis para seu
uso.
Boa Aula!
1 A INTERNET E AS APLICAÇÕES DISTRIBUÍDAS
Fatores como a globalização e as constantes mudanças nas regras de
negócios obrigaram as empresas modernas a se tornarem altamente distribuídas.
Como conseqüência, é crescente o número de escritórios remotos espalhados no
país ou no mundo. Por isso, proporcionalmente a novos modelos de negócios e
gestão, as empresas necessitam de informações e tecnologias que estejam
disponibilizadas aos seus funcionários em escritórios remotos, hotéis e residências,
e que às vezes estão conectados ou não, trabalhando em condições off-line.
As aplicações distribuídas oferecem os recursos necessários para atender às
demandas atuais das empresas, aderindo aos movimentos de descentralização e
reduzindo as possíveis dificuldades de comunicação que naturalmente podem
ocorrer.
Programação Aplicada – Microsoft .NET usando C# 11
SOCIESC – Sociedade Educacional de Santa Catarina
Quando falamos em aplicações distribuídas, precisamos considerar três
elementos essenciais: comunicação de dados, interface com o usuário e regras de
negócios flexíveis.
A comunicação de dados uniforme foi resolvida com a Internet,
considerando que, por um meio comum de comunicação, o protocolo TCP/IP,
usuários e empresas podem comunicar-se independente das particularidades de
seus dispositivos de hardware ou software (figura 1). Atualmente, a independência
de equipamentos físicos é ainda mais favorecida por padrões que estão suportando
a convergência digital, permitindo que um celular possua recursos para a execução
de um sistema, enquanto mantém seus princípios básicos.
Figura 1 – Exemplo de Comunicação de Dados baseada na Internet
A interface com o usuário também foi resolvida com a Internet, pois todo
usuário utiliza um mesmo software, o navegador. Além disso, o navegador possui
padrões de apresentação de dados que são aceitos mundialmente, o que também
permite uma mesma página ser visualizada independente de dispositivo físico ou
software. A HTML, as linguagens scripts, as imagens, etc. compõem a apresentação
de dados,e também permitem a interação com o usuário, através de formulários,
com possibilidade de preenchimento de dados. Confira na figura 2 o que acabamos
de explanar.
Programação Aplicada – Microsoft .NET usando C# 12
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 2 – Exemplo de formulário em HTML para a Internet
O que faltava na Internet era um modelo de programação de sistemas,
utilizando-se das tecnologias mais atuais disponíveis, com o objetivo de construir
sistemas flexíveis e robustos baseados na Internet, explorando os padrões que já
foram estabelecidos pela “grande rede”. Assim, surgiram os conceitos de Aplicações
Distribuídas baseadas na Internet, fazendo com que os sistemas sejam
“particionados” em várias camadas e cada camada seja processada de forma
distribuída entre vários elementos da solução. Além disso, a adoção de efetivas
técnicas de programação orientada a objetos (OOP), permitiu a construção de
sistemas flexíveis, com capacidade de adaptação dinâmica das regras de negócios
(figura 3).
Figura 3 – Exemplo de uma aplicação distribuída na Web
Programação Aplicada – Microsoft .NET usando C# 13
SOCIESC – Sociedade Educacional de Santa Catarina
2 A EVOLUÇÃO TECNOLÓGICA
Um outro conjunto de elementos deve ser considerado como parte da
necessidade que a plataforma .NET desejava atender em seu lançamento e
atualmente fornece as capacidades para sua realização.
Por exemplo, a evolução tecnológica dos microprocessadores e dos circuitos
de memória RAM, que estão cada vez mais poderosos e baratos, permitiram que
poderosas funcionalidades fossem construídas. Além disso,sua capacidade de
atendimento a grande volume de transações e dados, ao contrário do que podia se
esperar, não houve a necessidade de um alto investimento em hardware.
O aumento na disponibilidade da largura de banda nas conexões para a
Internet, com preços baixos, também viabilizou uma infra-estrutura que permite
maior riqueza nas aplicações distribuídas e mantém um nível de performance
necessário para os usuários. Como exemplo, podemos citar a popularização das
conexões com a Internet usando a tecnologia ADSL.
Os sistemas operacionais também fornecem recursos importantes para as
aplicações distribuídas, já que novos aplicativos transacionais, com recursos de
segurança integrados e otimizações para atender determinadas funcionalidades,
favorecem a uma performance e construção dos sistemas.
Finalmente, padrões tecnológicos como a linguagem XML, protocolos que
constituem os Web Services e novas versões da linguagem HTML, permitiram
aplicações distribuídas flexíveis, ricas e padronizadas.
3 ILHAS DE INFORMAÇÕES
A Microsoft percebeu que um grande volume de informações e usuários vive
de forma independente em uma empresa, criando “ilhas de informações”
corporativas e não interagem entre si, perdendo oportunidades para aumentar a
velocidade das transações do negócio ou para auxiliar na formação de uma
inteligência competitiva.
Diante disso, através da plataforma .NET e utilizando-se de padrões de
mercado, abordam-se os conceitos de integração de dados e interoperabilidade
de aplicações, ou seja, disponibilizam-se componentes programados que permitam
a sua integração e forneçam meios fáceis para um relacionamento interdependente.
Programação Aplicada – Microsoft .NET usando C# 14
SOCIESC – Sociedade Educacional de Santa Catarina
Podemos considerar nesse contexto, um exemplo clássico nas
aplicações em geral: o uso de listagem e verificação de CEP, para um
determinado cadastro. Na grande maioria dos sistemas administrativos,
temos um cadastro de clientes e, por padrão, temos um campo de armazenamento
de dados do CEP. A questão que o usuário apresenta: como posso validar a
existêcia do CEP digitado, para garantir que os envios de correspondências de
cobrança cheguem com sucesso ao seu destino?
No passado, a grande maioria dos programadores criava (ou ainda cria, por falta de
conhecimento, ou limite da tecnologia envolvida) um cadastro de CEP na sua
aplicação, para o usuário armazenar os endereçamentos de CEP disponíveis em
uma lista pública dos Correios Brasileiros. Problemas com esse tipo de solução:
• O usuário precisa realizar um grande esforço para armazenar todos os
endereços de CEP na aplicação;
• A dificuldade em manter o cadastro atualizado, devido a possíveis mudanças que
os Correios Brasileiros aplicam no Código de Endereçamento Postal.
Imagine, uma agência dos Correios possui a lista completa de endereços de CEP de
todo o Brasil e os recursos necessários para mantê-la 100% atualizada.
Temos então, nesse cenário, as ilhas de informações, onde uma empresa precisa
“duplicar” os dados de CEP para que se consiga atingir os requisitos de seu negócio.
Enquanto isso, as agências do Correios possuem todas as informações atualizadas.
Hoje, esse problema está resolvido, pois os Correios Brasileiros “publicaram” um
serviço que permite uma “aplicação” baseada em componentes distribuídos,
podendo coletar informações de CEP, de acordo com parâmetros documentados.
Esse serviço publicado na Internet, na forma de componente de aplicação, chama-se
Web Service.
4 OOP, REUSO E WEB SERVICES
Programação Aplicada – Microsoft .NET usando C# 15
SOCIESC – Sociedade Educacional de Santa Catarina
O uso da programação orientada a objetos, conforme você já aprendeu,
permite a reutilização de procedimentos e rotinas de um determinado sistema, de
forma elegante e segura, ou seja, podemos reutilizar código de programação como
parte de nosso esforço de construção do programa. Nesse conceito de reuso, surgiu
a tecnologia chamada de Web Service.
Um Web Service é uma solução para a integração de soluções de software,
utilizando-se de padrões estabelecidos mundialmente, cuja finalidade é sua
publicação na Internet para reuso. O formato dos dados que são trafegados entre os
Web Services, estão em XML (eXtensible Markup Language) e o protocolo de
comunicação entre os componentes de uma solução é o SOAP. Podemos então
resumir que um Web Service é um componente programável que pode ser acessado
através de protocolos padrões na Internet.
A plataforma .NET utiliza largamente os recursos de Web Services, como
base de sua arquitetura para suportar aplicações distribuídas.
Com base na tecnologia da Web Services, surgiu uma nova abordagem na
construção de software: o software orientado a serviços. Essa orientação é uma
forma de construção de sistemas, cujo principal objetivo é o reuso através de Web
Services internos e externos na empresa, mantendo padrões abertos para permitir a
integração de diferentes plataformas e tecnologias. A esse novo método de
engenharia de software aplicou-se o termo SOA (Service Oriented Architecture), em
português, Arquitetura Orientada a Serviços (figura 4).
Figura 4 – Exemplo da comunicação usando SOA
Conforme definiu Earl (2005), a orientação a serviços fornece uma visão ideal
do mundo, no qual os recursos são claramente particionados e consistentemente
representados. Quando aplicada em software, a orientação a serviços estabelece
um modelo universal no qual a automação da lógica e as regras de negócios estão
de acordo com essa visão.
Programação Aplicada – Microsoft .NET usando C# 16
SOCIESC – Sociedade Educacional de Santa Catarina
Para que você possa entender melhor esse conceito, vamos considerar
a construção de um sistema que possui um conjunto de sub-rotinas.
Como você já aprendeu, a modularização do código na programação
estruturada e o uso de classes na programação orientada a objetos fornecem o
meio para um programa “particionado”, com isso, permite um reuso de
funcionalidades. Cada função, sub-rotina ou classe, pode ser “traduzida” em um
Web Service e pode ser publicada para uso nas diversas aplicações que a utilizam.
A grande diferença é que você retira o código de programação do seu sistema e o
Web Service pode ter vida própria, com manutenções e melhorias independentes do
programa que a utiliza. Observe a figura 5.
Figura 5 – Possibilidades de conversão de rotinas orientadas a serviços
5 O QUE É A PLATAFORMA .NET?
FONTE: adaptado de Earl, 2005
Programação Aplicada – Microsoft .NET usando C# 17
SOCIESC – Sociedade Educacional de Santa Catarina
Os tópicos apresentados até o momento nos fornecem os elementos que
influenciaram a Microsoft na construção da plataforma .NET. Então, o que é a
plataforma .NET?
A .NET é uma iniciativa da Microsoft para suportar uma estratégia no uso de
Web Services usando um conjunto integrado de tecnologias e soluções, com o
objetivo de fornecer uma abordagem completa e coesa de disponibilização de
soluções para as empresas.
Segundo Platt (2003), a .NET é uma infra-estrutura pré-construída para
resolver problemas das aplicações para a Internet. O autor defende que é somente
um grande conjunto de tecnologias e nada mais. Porém, a Microsoft procura afirmar
que a .NET oferece um grande avanço na forma como as pessoas trabalham e por
isso, a fabricante de software acredita que há uma proposta de mudança no
paradigma de como os negócios são conduzidos usando .NET.
6 COMPONENTES DA PLATAFORMA
A Microsoft distribuiu as várias funcionalidades da plataforma .NET em
componentes. Cada componente possui características particulares,finalidades
específicas e total integração entre eles. Vamos conhecer cada um deles:
• Ambiente de execução de aplicações, .NET Framework: é um conjunto
de recursos instalados no computador, com o objetivo de permitir a
execução de programas construídos para .NET. Seu principal objetivo é
fornecer ao programador bibliotecas de classes para reuso, a execução
controlada e administrada de programas e facilidades para a
disponibilização da solução construída. Os programas e seus
componentes são executados sobre o .NET Framework;
• Conjunto de serviços utilizando uma infra-estrutura de software
servidores: a Microsoft reuniu todos os seus produtos utilizados como
software servidores e estabeleceu total compatibilidade dos serviços de
cada um desses produtos, com a plataforma .NET. A esse conjunto de
produtos batizou-se “Windows Server System”;
• .NET Building Blocks: são representados por um conjunto de serviços
pré-construídos para acelerar o processo de construção de sistemas. O
exemplo mais comum é o Microsoft Passport (agora também conhecido
Programação Aplicada – Microsoft .NET usando C# 18
SOCIESC – Sociedade Educacional de Santa Catarina
como Windows Live ID - figura 6), que fornece serviços de autenticação
de usuários e que pode ser utilizado na construção de sistemas, liberando
o programador do trabalho de construir uma rotina específica para a
autenticação de usuários;
Figura 6 – Página do Windows Live ID
• Visual Studio .NET: é a ferramenta fornecida pela Microsoft para a
construção de sistemas para a plataforma .NET. Com esse produto, o
programador cria seus programas e se utiliza de todas as potencialidades
do .NET.
Cada um dos componentes da plataforma .NET possui um grande conjunto
de tecnologias e subcomponentes e a cada um estão sendo aprimorados e
agregados novos recursos e funcionalidades. O componente principal da plataforma
é o .NET Framework, já que é por ele que todos os demais componentes interagem
e funcionam.
Outro aspecto relevante da plataforma é que todos os seus componentes
estão construídos para oferecer e consumir padrões de tecnologia baseados na
Internet, ou seja, todos os elementos influenciadores que vimos nos tópicos
Programação Aplicada – Microsoft .NET usando C# 19
SOCIESC – Sociedade Educacional de Santa Catarina
anteriores, foram implementados logicamente pela Microsoft. É a resposta da
Microsoft para o desenvolvimento de sistemas distribuídos baseados na Internet.
Para que você tenha uma visão mais clara dos componentes da plataforma,
observe a figura 7.
Figura 7 – Componentes da Plataforma .NET
7 .NET FRAMEWORK
Considerando sua importância na plataforma, o .NET Framework merece um
tópico particular para seu melhor entendimento. Ele, na verdade, é um software
“acoplado” ao sistema operacional, com o objetivo de executar aplicações para a
plataforma .NET.
Cabe aqui uma observação importante e polêmica: a compatibilidade do
.NET Framework com sistemas operacionais. Na prática, a Microsoft
criou o produto para ser “acoplado” apenas em seus sistemas
operacionais e suas versões (Windows XP, Windows 2000, Windows 2003 e etc.).
Dessa forma, os aplicativos construídos para .NET somente podem ser executados
em equipamentos que tenham instalado um sistema operacional da Microsoft. Esse
assunto é polêmico, porque a plataforma concorrente é o Java da Sun, que oferece
um completo suporte a vários sistemas operacionais de mercado, incluindo
FONTE: adaptado da Microsoft - MOC, 2001
Programação Aplicada – Microsoft .NET usando C# 20
SOCIESC – Sociedade Educacional de Santa Catarina
logicamente o Linux. Perceba então que temos aqui um aspecto de competição de
mercado entre os fabricantes de software: de um lado a Microsoft, procurando
fortalecer ainda mais sua base Windows instalada, do outro a Sun, oferecendo um
nível de flexilidade que permite ao programador escolher ou adaptar-se ao sistema
operacional de destino, sem amarras.
Mas existem iniciativas não patrocinadas oficialmente pela Microsoft, para a
execução de programas .NET em outros sistemas operacionais. O projeto MONO é
uma iniciativa da comunidade de desenvolvedores para a construção de uma versão
baseada em GNU/Linux, como software livre, da plataforma .NET.
Para maiores informações sobre o projeto, acesse o seguinte endereço na Internet:
http://www.mono-project.com/Main_Page.
O .NET Framework é organizado em subcomponentes (figura 8) que, juntos,
oferecem ampla camada de desenvolvimento e reuso de aplicações, utilizando-se de
conceitos de integração e interdepependência.
Figura 8 – Componentes da Plataforma .NET
7.1 Código Gerenciado
O principal subcomponente do .NET Framework é o conceito de código
gerenciado, construído pelo programador e executado em um ambiente chamado
Common Language Runtime (CLR) (figura 9). Esse ambiente interfere na
FONTE: adaptado da Microsoft - MOC, 2001
alison.veríssimo
Realce
Programação Aplicada – Microsoft .NET usando C# 21
SOCIESC – Sociedade Educacional de Santa Catarina
execução dos programas, permitindo que o .NET Framework garanta uma série de
aspectos válidos para o perfeito e seguro funcionamento tanto da aplicação como
também do sistema operacional.
Figura 9 – Common Language Runtime
É neste momento que percebemos uma das primeiras vantagens da
plataforma .NET, que oferece ao programador a capacidade de utilizar qualquer
linguagem de programação que suporte .NET, fazendo com que essa escolha
atenda seu conhecimento pré-existente em determinada linguagem (Java, Cobol,
Visual Basic, C# e etc.), aumentando, dessa forma, a produtividade na construção
de sistemas. Quando um programa é compilado para .NET, o compilador converte
a linguagem de programação utilizada para uma linguagem padrão da plataforma
.NET chamada Microsoft Intermediate Language (MSIL) (figura 10). Toda
linguagem gera o mesmo MSIL, cuja capacidade permite ao programador possuir
particularidades em determinada linguagem, mas o seu resultado será sempre o
mesmo.
Figura 10 – O processo de compilação e execução do MSIL
Programação Aplicada – Microsoft .NET usando C# 22
SOCIESC – Sociedade Educacional de Santa Catarina
O programa gerado em MSIL não pode ser executado diretamente pelo
sistema operacional. É necessário um programa para sua execução. É nesse
momento que um outro subcomponente do .NET Framework atua: o compilador
Just-in-time. Esse software basicamente lê o programa compilado em MSIL e
executa-o de acordo com a lógica empregada pelo programador, conforme
mostramos na figura 8.
7.2 Biblioteca de classes do .NET Framework
É um conjunto de programas, organizados em bibliotecas de código já
compilado, que fornece o conjunto de recursos que a plataforma .NET possui, para
que o programador construa o sistema utilizando-se das funcionalidades disponíveis.
Se o programador precisa abrir um arquivo, por exemplo, deve se utilizar das rotinas
de abertura de arquivos já disponíveis na plataforma, para que o seu programa seja
considerado “código gerenciado”.
As bibliotecas de classes ficam facilmente disponíveis através de ferramentas
de desenvolvimento, como é o caso do Visual Studio .NET, que permite ao
programador inserir uma determinada funcionalidade rapidamente.
As bibliotecas são organizadas de tal modo que o programador encontre
facilidade para uma funcionalidade específica e também organize as classes em
categorias e hierarquia, permitindo ainda o reuso entre as próprias classes. Cada
elemento ou funcionalidade dessa hierarquia de bibliotecas de classe, é chamado de
namespace. Na versão atual do .NETFramework, a bibloteca fornece centenas de
classes, para atender às mais diversas finalidades.
7.3 Acesso a dados na plataforma .NET
Quando falamos em acesso a dados, estamos nos referindo à funcionalidade
da aplicação que permite obter ou armazenar informações em um banco de dados.
Com o objetivo de facilitar o trabalho de construção de programas com acesso a
banco de dados, a platalaforma .NET oferece um conjunto de classes chamada
ADO.NET contendo recursos e funcionalidades para atender à grande maioria das
demandas para o desenvolvimento de sistemas com banco de dados.
Programação Aplicada – Microsoft .NET usando C# 23
SOCIESC – Sociedade Educacional de Santa Catarina
7.4 Desenvolvimento de Sistemas para a Web
O desenvolvimento de aplicações para Web é facilitado, também, por um
conjunto de classes chamado ASP.NET. Na verdade, o ASP.NET é a evolução de
um ambiente de execução de aplicações para a Web que a Microsoft lançou em
1997, chamado Active Server Pages (ASP). Basicamente, o ASP permite ao
programador trabalhar com o conceito de páginas dinâmicas no desenvolvimento de
aplicações para Web, recursos fundamentais para seu sucesso.
7.5 Formulários Windows
O termo formulário refere-se às janelas apresentadas do seu sistema. A
plataforma .NET oferece também um conjunto de classes e componentes para a
construção rápida de telas para a interface com o usuário do sistema. A esse
conjunto chamamos Windows Forms.
8 AS LINGUAGENS PARA .NET
Como vimos no tópico anterior, o .NET Framework permite que o
programador escolha a linguagem que deseja utilizar na construção de seu sistema.
Para isso, a linguagem também precisa suportar as regras da plataforma .NET.
Chamamos de linguagem para .NET a linguagem que gerar código gerenciado com
base nos padrões estabelecidos pela plataforma. Nem todas as linguagens
oferecem esse suporte.
Em particular, a linguagem C# foi lançada em conjunto com a plataforma
.NET. Seu principal objetivo é permitir ao programador o completo uso dos
benefícios da plataforma, mas utilizando-se de padrões de construção já
conhecidos. É a linguagem preferencial no desenvolvimento para .NET, já que está
estruturada com todos os aspectos que a Microsoft espera que um progamador
utilize em .NET.
Outras linguagens foram transportadas pela Microsoft para suportar a
plataforma .NET como o Visual Basic e o Visual J# (versão Java da Microsoft).
Linguagens de outros fabricantes também foram adequadas.
Programação Aplicada – Microsoft .NET usando C# 24
SOCIESC – Sociedade Educacional de Santa Catarina
• COBOL,
• SmallTalk,
• Delphi,
• Perl.
Síntese
Nesta aula você tomou conhecimento da plataforma .NET, sua importância e
seus componentes. Pudemos perceber que é um assunto extenso, mas
extremamente atual, considerando as tecnologias que a Microsoft empregou na
construção da plataforma. É importante concluirmos que, usando a .NET, o
programador trabalha em um outro nível de desenvolvimento de sistemas, com um
grande aumento de produtividade e no uso adequado de tecnologias necessárias
para o dinâmico mundo dos negócios de hoje.
Na próxima aula, vamos conhecer uma ferramenta para o desenvolvimento de
sistemas para a plataforma .NET, e estaremos iniciando nossos primeiros
programas.
Até lá.
Programação Aplicada – Microsoft .NET usando C# 25
SOCIESC – Sociedade Educacional de Santa Catarina
Exercícios Propostos
1) Cite dois motivos que favoreceram à criação da plataforma .NET. Explique
com as suas próprias palavras cada motivo.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) O que é a plataforma .NET?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) Quais são os componentes da plataforma .NET?
______________________________________________________________
______________________________________________________________
_____________________________________________________________
4) Associe a coluna da direita com a coluna da esquerda.
( ) Intermediate Language 1. Nome dado ao conjunto de classes fornecidas
pela plataforma .NET, com o objetivo de fornecer
uma estrutura hierárquica e organizada de
funções.
( ) Compilador Just-in-Time 2. Linguagem gerada após a compilação de um
programa desenvolvido para a plataforma .NET.
( ) Namespace 3. Biblioteca de classes que oferece suporte a banco
de dados na plataforma .NET.
( ) ADO.NET 4. Software utilizado para gerar código .NET
(Intermediate Language).
Programação Aplicada – Microsoft .NET usando C# 26
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 2
VISUAL STUDIO EXPRESS
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Descrever a ferramenta de desenvolvimento de sistemas
para .NET;
� Identificar os primeiros elementos de programação em
linguagem C#;
� Utilizar o compilador e executar um programa;
� Entender como distribuir um programa para o usuário.
Conteúdos da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� É necessário um produto para desenvolvimento em .NET?
� O que é o Visual Studio .NET?
� As versões do Visual Studio
� Instalado a versão Express
� Conhecendo o ambiente
� Criando um simples programa em C#
Programação Aplicada – Microsoft .NET usando C# 27
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
Bem-vindo(a) à nossa segunda aula. Você verá nesta aula como utilizar
uma ferramenta de desenvolvimento de sistemas para a plataforma
.NET. Essa ferramenta será utilizada durante todo o módulo, por isso, vamos entrar
em detalhes operacionais para que você tenha um excelente desempenho nas
atividades em aula. Também faremos uma provocação sobre a necessidade de
utilizarmos ou não uma ferramenta de desenvolvimento, para construir programas
.NET.
Boa aula!
1 É NECESSÁRIO UM PRODUTO PARA DESENVOLVIMENTO EM .NET?
Essa é a principal pergunta que o programador precisa responder quando
falamos do Visual Studio. Muitos profissionais de informática questionam a
obrigatoriedade no uso de determinada ferramenta, por sentirem um certo
direcionamento ou “amarração” dos fabricantes de software. Na verdade, quando
falamos em desenvolvimento de sistemas, nas condições atuais, estamos sempre
buscando meios de atingir maior produtividade e precisão na construção de
algoritmos.
Historicamente, as linguagens compiladas não exigem uma ferramenta para
construir programas, mas a sua adoção facilita o trabalho do programador e
aumenta a sua produtividade.
Essa afirmativa também se aplica à plataforma .NET. Não é necessário (ou
obrigatório) o uso do Visual Studio .NET para desenvolver sistemas para .NET, na
verdade, os programadores e as empresas desenvolvedores de software percebem
que o Visual Studio .NET acaba sendo a ferramenta ideal, considerando sua natural
aplicação dos conceitos e tecnologias envolvidas na .NET. Isso ainda é mais forte se
a opção de linguagem for da Microsoft, como é o caso do C#.
Outras ferramentas de desenvolvimento, também conhecidas como IDE
(Integrated Development Environment, ou Ambiente de DesenvolvimentoIntegrado),
existem no mercado, como o SharpDevelop e o Borland IDE, que possuem suas
características específicas e podem acabar atendendo a um público particular de
desenvolvedores.
Programação Aplicada – Microsoft .NET usando C# 28
SOCIESC – Sociedade Educacional de Santa Catarina
A Microsoft acabou inserindo no Visual Studio .NET um aspecto relevante: a
capacidade de se utilizar qualquer linguagem que suporte .NET e possua recursos
de integração com o ambiente do produto. Por exemplo, atualmente já é possível
desenvolver em COBOL para .NET, usando o Visual Studio da Microsoft (figura 11).
A ferramenta da Microsoft oferece um excelente suporte à extensão de suas
capacidades internas, permitindo a personalização, construção de recursos
específicos para determinada linguagem, o que está sendo explorado por
determinados fabricantes, que se sentem liberados para focar no potencial da
linguagem e não na ferramenta de desenvolvimento.
Figura 11 – Cobol no Visual Studio
Apesar de todos os argumentos vantajosos no uso do Visual Studio .NET ou
de ferramenta equivalente não influenciarem o programador mais resistente, há o
meio convencional de desenvolvimento de sistemas .NET sem uma IDE. Para isso,
basta que o progamador realize:
• O download do programa de instalação do .NET Framework para
desenvolvimento, que pode ser obtido no site da Microsoft;
Programação Aplicada – Microsoft .NET usando C# 29
SOCIESC – Sociedade Educacional de Santa Catarina
• Utilizar um editor de textos de sua escolha, como o Bloco de Notas, para
digitar o algoritmo de acordo com a sintaxe da linguagem desejada, por
exemplo C#;
• Abrir uma sessão do Prompt do MS-DOS e efetuar a compilação do
programa construído, usando o compilador fornecido pelo pacote de
instalação do .NET Framework;
• Executar o programa gerado pelo compilador.
A questão que fica aqui é: qual a produtividade do programador usando esse
método? O uso de uma ferramenta IDE é exatamente automatizar o processo acima
descrito, favorecendo outros recursos importantes como:
• a validação em tempo real;
• a conformidade entre a linha digitada e a sintaxe da linguagem;
• o uso de recursos de depuração do código para localizar um erro de
lógica;
• a execução do programa diretamente do ambiente da ferramenta, sem a
necessidade de digitar algum comando.
2 O QUE É O VISUAL STUDIO .NET?
É a nova geração das ferramentas de desenvolvimento de sistemas da
Microsoft, com o total suporte às tecnologias e recursos disponíveis na plataforma
.NET. Ela oferece ao programador o que há de mais atual nas práticas de
engenharia de software e fornece um conjunto de versões para atender às
particularidades de cada perfil de programador e da envergadura do projeto de
software a ser construído.
A próxima pergunta que o programador precisa responder é: com o Visual
Studio .NET, quais os tipos de aplicações que podemos construir? A versão atual,
2005, permite que o programador construa os seguintes tipos de aplicações:
• Windows Applications: este é o nome dado às aplicações .NET
desenvolvidas com Interface Gráfica e são utilizadas pelos usuários
Programação Aplicada – Microsoft .NET usando C# 30
SOCIESC – Sociedade Educacional de Santa Catarina
localmente nos computadores, ou por uma rede interna. Esse tipo de
aplicação é usada para soluções cliente-servidor e não se utiliza
primariamente dos recursos da Internet;
• Console Applications: são as aplicações que não possuem interface
gráfica, também conhecidas como aplicações de modo caractere
baseadas em MS-DOS e executadas em uma janela de comando do MS-
DOS em um sistema operacional Windows;
• Componentes reutilizáveis ou bibliotecas de classes: permitem a
construção de componentes a serem reutilizados por outras aplicações,
seguindo padrões de mercado para sistemas distribuídos;
• Web Applications: soluções baseadas em tecnologias da Internet, que
utilizam primariamente as tecnologias da Web, como HTML, Javascript,
http, etc. Além disso, também podem ser construídos Web Services, como
componentes a serem acessados pela Internet, também usando padrões
de mercado.
De acordo com a aplicação desejada, precisamos utilizar uma versão
específica do Visual Studio.
Algumas vantagens no uso do Visual Studio .NET:
• O Visual Studio automatiza os passos necessários para compilar um
código-fonte, mas fornece um controle completo sobre os parâmetros que
podem ser alterados para mudar o comportamento do processo de
compilação;
• O editor de textos foi desenvolvimento especificamente para as linguagens
suportadas pelo Visual Studio, principalmente o C#, permitindo que a
ferramenta possa, de forma simples e intuitiva, detectar erros e sugerir
códigos onde for adequado;
• Fornece um conjunto de modelos prontos para a construção de aplicações
específicas, acelerando o processo de construção do projeto;
• O Visual Studio (figura 12) fornece vários assistentes para “guiar” o
programador em tarefas mais complexas ou que exigem um nível de
cuidado, liberando o programador de detalhes necessários para a
construção de determinada funcionalidade.
Programação Aplicada – Microsoft .NET usando C# 31
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 12 – Ambiente do Visual Studio .NET Express
3 AS VERSÕES DO VISUAL STUDIO
O Visual Studio .NET, versão 2005, apresenta cinco opções para uso do
produto e cada uma direcionada para um perfil específico de profissional de TI, bem
como, de acordo com a finalidade do projeto de software.
A opção gratuita do produto é chamada linha “Express”, dividida nas
seguintes subversões:
• Web Developer: direcionada para a construção de aplicações para a Web
(chamadas Web Applications);
• Visual Basic: voltada para o desenvolvimento de soluções baseadas em
formulários, usando a linguagem Visual Basic;
• Visual C#: voltada para o desenvolvimento de soluções baseadas em
formulários, usando a linguagem C#;
• Visual C++: voltada para o desenvolvimento de soluções baseadas em
formulários, usando a linguagem C++;
• Visual J#: voltada para o desenvolvimento de soluções baseadas em
formulários, usando a linguagem Java;
Programação Aplicada – Microsoft .NET usando C# 32
SOCIESC – Sociedade Educacional de Santa Catarina
• SQL Express: para o desenvolvimento e gerenciamento de soluções a
serem armazenadas e executadas no banco de dados da Microsoft.
Também serve como base de dados para as demais versões da linha
Express.
Além das versões gratuitas do Visual Studio, também existem três versões
pagas do produto:
• Standard: das versões pagas, é a opção mais barata. Tem por objetivo o
desenvolvimento de pequenas soluções e apenas um programador
interage com o projeto;
• Professional: essa versão possui as mesmas características da Standard,
adicionando recursos mais robustos para projetos de médio tamanho e
com suporte amplicado a banco de dados SQL Server 2005;
• Tools for Office: para o desenvolvimento de componentes que serão
utilizados por produtos da plataforma Office System (Excel, Word e etc.).
Possui recursos limitados e suas capacidades estão totalmente
direcionadas para o uso apenas com os produtos Office;
• Visual Studio Team Sytem: possui todos os recursos das versões já
mencionadas, mas amplia sobremaneira a capacidade de recursos do
Visual Studio para trabalhar em equipes de projeto. O Team System
propõe-se a fornecer um conjunto completo de ferramentas para todo o
ciclo de desenvolvimento de soluções, incluindo documentações e a
gestão de testes do produto. É excelente para projetos de grande porte,
que envolvem um grande número de programadores.Nesse módulo utilizaemos o produto Visual C# 2005 Express Edition.
2.4 Instalando a versão Express
Para realizar a instalação da versão Express do Visual Studio, para o
desenvolvimento com C#, você precisa acessar o site da Microsoft no seguinte
endereço (infelizmente ainda não há versão em português do produto):
http://msdn2.microsoft.com/pt-br/vstudio/default.aspx
Programação Aplicada – Microsoft .NET usando C# 33
SOCIESC – Sociedade Educacional de Santa Catarina
Há duas formas para realizar a instalação dessa versão: on-line ou off-line. Na
versão on-line, você fará o download de um pequeno programa que, ao ser
inicializado, fará a conexão com o site da Microsoft e realizará a instalação após o
download dos componentes necessários. Para a versão off-line, você deverá efetuar
o download de um grande arquivo que, na verdade, é uma imagem de CD, gravá-lo
com o conteúdo da imagem e depois realizar a instalação a partir do CD gravado.
O método mais simples (mas a velocidade dependerá de sua conexão com a
Internet), é a instalação on-line. É importante ressaltar que a Microsoft exige o
registro do produto, apesar de não cobrar nenhum licenciamento.
Nesse cenário de instalação on-line, após o download do arquivo para
instalação, execute o programa e siga os passos do assistente de instalação,
habilitando ou desabilitando opções de acordo com a sua finalidade de
desenvolvimento. Para esse módulo, vamos considerar os passos a sequir descritos
e demonstrados na figura 13:
1. Efetue o download do arquivo vccsetup.exe;
2. Execute o programa. Será apresentada a tela de boas vindas do programa
de instalação;
3. Clique no botão Next;
4. Na janela de aceite da licença de uso (End-user License Agreement),
marque a frase I accept the terms of the License Agreement e depois,
clique no botão Next;
Figura 13 – Opção de aceite da Licença de Uso
5. Na próxima janela do assistente de instalação, não selecione nenhuma
opção e clique no botão Next. As duas opções apresentadas referem-se à:
Microsoft MSDN - é a documentação do produto; e Microsoft SQL
Programação Aplicada – Microsoft .NET usando C# 34
SOCIESC – Sociedade Educacional de Santa Catarina
Server 2005 Express - é o banco de dados que pode ser integrado ao
ambiente (figura 14). Escolha a opção do banco de dados (Microsoft SQL
Server), já que estaremos preparando o ambiente para o assunto de
banco de dados com C#;
Figura 14 – Opções para produtos adicionais ao C# Express
6. A próxima janela solicita o local de armazenamento do software, para a
instalação. Essa opção é importante, caso você não possua espaço
suficiente no disco rígido para a instalação do programa. Caso possua
espaço, mantenha a informação sugerida e clique no botão Next (figura
15).
Programação Aplicada – Microsoft .NET usando C# 35
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 15 – Informações sobre a pasta de destino do programa de instalação
7. O programa de instalação iniciará a cópia e a configuração do sistema
operacional para a execução do programa. Aguarde o término da
instalação (figura 16);
Figura 16 – Acompanhamento do processo de instalação
Observe o espaço
necessário para instalação
e o espaço disponível no
disco rígido de destino.
Programação Aplicada – Microsoft .NET usando C# 36
SOCIESC – Sociedade Educacional de Santa Catarina
8. Quando o programa de instalação terminar o passo anterior, a janela de
conclusão será apresentada, fornecendo um resumo da instalação e
instruções para registro do produto (figura 17);
Figura 17 – Tela final da instalação
9. Clique na frase sublinhada em azul “Register Now”, para que o programa
de instalação o (a) encaminhe diretamente para a página de registro do
produto na Internet;
10. Para efetuar o registro, você precisa de um Microsoft Passport. Na janela
apresentada, efetue o seu login;
11. Na próxima página do site de registro da Microsoft, informe os dados
solicitados no formulário (figura 18);
12. Finalmente, o site de registro apresentará uma janela contendo o número
de série para registro do produto;
Programação Aplicada – Microsoft .NET usando C# 37
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 18 – Janela de Registro
13. Copie o número de registro e execute o Visual C# 2005 Express (figura
19). Aguarde até que o programa de preparação da primeira execução
termine;
Figura 19 – Janela de preparação da primeira execução
14. No ambiente do programa, execute o comando Register product do
menu Help (figura 20);
Figura 20 – Menu Help
Programação Aplicada – Microsoft .NET usando C# 38
SOCIESC – Sociedade Educacional de Santa Catarina
15. Na janela apresentada, cole o número de registro no campo Registration
Key e clique no botão Complete Registration (que somente será
habilitado se houver um número digitado no campo) (figura 21);
Figura 21 – Janela de registro
16. O seu programa está pronto para ser utilizado.
5 CONHECENDO O AMBIENTE DO VISUAL C# 2005 EXPRESS
Quando você executa o programa pela primeira vez, ele apresenta um
conjunto de painéis vazios e um conteúdo central da janela, contendo informações
sobre novidades e informações atualizadas da Microsoft (que poderão estar
atualizadas se a conexão com a Internet existir). Para que os demais painéis
apresentem suas funcionalidades e informações, é necessário que um projeto seja
aberto ou criado.
Ao clicar na opção Create: Project... será apresentada uma nova janela,
contendo os modelos de aplicações que você poderá utilizar para construir o seu
Programação Aplicada – Microsoft .NET usando C# 39
SOCIESC – Sociedade Educacional de Santa Catarina
programa (figura 22). O modelo a ser selecionado, deverá ser correspondente à
finalidade da sua aplicação.
Figura 22 – Janela de modelos de aplicações
Em nosso módulo, os projetos que criaremos serão sempre Windows
Applications. Mas vamos conhecer os demais modelos disponíveis:
Modelo Descrição
Windows Application Voltado para o desenvolvimento de sistemas baseados
em Janelas/Formulários
Class Library Permite a construção de uma biblioteca de classes, para
reuso em outras aplicações
Console Application Para o desenvolvimento de soluções em modo
caractere, para o uso em janelas de Prompt do MS-DOS
Empty Project Modelo vazio, sem a inserção automática de qualquer
recurso. É útil quando desejamos construir um projeto do
zero, sem qualquer parâmetro já inicializado, como nos
outros modelos.
Starter Kits A Microsoft fornece vários Starter Kits para acelerar o
desenvolvimento de uma determinada aplicação. Por
padrão, o produto já vem instalado com dois kits: Screen
Saver e Movie Collection.
Programação Aplicada – Microsoft .NET usando C# 40
SOCIESC – Sociedade Educacional de Santa Catarina
Usando o ícone Search online templates...você pode procurar no site da
Microsoft outros modelos ou Starter kits. Após escolher o modelo desejado, informe
o nome do projeto no campo Name da janela.
Ao escolher a opção mais comum, Windows Application, a janela do
ambiente de desenvolvimento do Visual C# é tal qual a que mostramos na figura 23:
Figura 23 – Janela principal com um projeto aberto
Na janela principal, você pode verificar que existem várias janelas e
elementos visuais. Vamos conhecer rapidamente cada um deles. Na parte superior
da janela estão o menu e a barra de ferramentas, que seguem as mesmas regras de
qualquer programa para Windows. No lado esquerdo está o painel Toolbox (caixade ferramentas), que permite a inserção de objetos diretamente no formulário. No
lado direito da janela, dois painéis são apresentados: o painel superior é o Solution
Explorer e o painel inferior é a janela de Propriedades. Na parte central da janela
está um formulário vazio, pronto para ser personalizado, de acordo com as
necessidades de sua aplicação (figura 24).
Programação Aplicada – Microsoft .NET usando C# 41
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 24 – Janela principal e seus componentes
O desenvolvimento de soluções, usando essa ferramenta, segue as mesmas
orientações para as aplicações RAD (Rapid Application Development), ou seja, você
desenha a interface que deseja construir, altera as propriedades, insere objetos à
interface através do Toolbox e depois associa código de programação aos eventos
associados aos objetos. Além disso, também você poderá criar classes e subrotinas
para reuso dentro e fora da aplicação.
Se você efetuar um duplo clique no formulário vazio, no centro da janela, o
editor de código do Visual Studio será apresentado. Há, no editor de código, várias
particularidades importantes para o programador, exemplo: navegação no código,
Intellisense e marcas de revisão. De todos os detalhes do editor, o mais interessante
é o Intellisense, que fornece informações ao programador, de acordo com os
comandos digitados no ambiente do editor (figura 25). O ambiente do Visual Studio
apresenta opções de acordo com o comando envolvido.
Programação Aplicada – Microsoft .NET usando C# 42
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 25 – Janela do editor de código
O Intellisense fornece ao editor de código a capacidade de sugerir várias
opções no contexto do programa, à medida que você digita, uma cortina flutuante é
apresentada com os itens possíveis a serem utilizados na digitação, acelerando o
processo de construção do código.
Há também o Hot Compiler, que “destaca” no código as instruções que
apresentam erros de sintaxe, enquanto você digita o seu programa. Quando há um
erro, o texto é sublinhado e, ao passar com o mouse sobre o texto destacado, será
apresentada uma pequena janela com informações sobre o erro.
O Visual C# 2005 Express também fornece um compilador integrado e a
capacidade de executar o seu código diretamente do ambiente de programação. Ele
permite compilar um arquivo particular ou toda a solução (um grupo de arquivos que,
juntos, forma a aplicação). Uma vez compilada sua aplicação, você pode se utilizar
dos recursos de depuração de código (debug) do ambiente, para localizar possíveis
erros de lógica. Finalmente, após ter estabilizado todos os possíveis problemas de
Programação Aplicada – Microsoft .NET usando C# 43
SOCIESC – Sociedade Educacional de Santa Catarina
seu programa, você poderá gerar uma aplicação a ser distribuída em forma de
pacote de aplicação.
6 CRIANDO UM SIMPLES PROGRAMA EM C#
Nesse tópico vamos realizar os passos do ciclo de desenvolvimento de um
sistema simples, usando o Visual C# 2005 Express (figura 26). Basicamente, os
passos são mesmos já mencionados anteriormente:
• Desenhar a interface que deseja apresentar para o usuário, utilizando as
opções de objetos do Toolbox;
• Alterar as propriedades da janela e dos objetos para atender a uma
funcionalidade específica;
• Associar código de programação aos eventos dos objetos, com o objetivo
de fornecer funcionalidades ao usuário, de acordo com o evento envolvido
no progama;
• Testar o programa;
• Compilar e distribuir o programa.
Figura 26 – Ciclo de desenvolvimento RAD
1. Se você não executou o Visual C# 2005 Express, execute-o agora;
2. Na janela principal, clique no comando Create: Project...;
3. Na janela New project, selecione o modelo Windows Application, informe o
nome do projeto de “AulaPrática1” e clique no botão OK;
Programação Aplicada – Microsoft .NET usando C# 44
SOCIESC – Sociedade Educacional de Santa Catarina
4. Através do Toolbox, insira um botão ao formulário. Sua tela deverá se
apresentar conforme a figura 27;
Figura 27 – Botão inserido no formulário
5. Selecione o botão inserido no formulário e no painel de Propriedades, altere
a propriedade Text para “Mensagem”, conforme a figura 28;
Figura 28 – Painel de propriedades
6. Agora efetue um duplo clique sobre o botão. O painel de código será
apresentado (figura 29). Então digite o seguinte comando entre as chaves
abaixo do comando “private void button1_Click”;
MessageBox.Show (“Exemplo de primeiro programa em C#”);
Figura 29 – Janela de código com o comando inserido
7. O código de seu programa fica assim:
namespace AulaPrática1
{
public partial class Form1 : Form
{
Programação Aplicada – Microsoft .NET usando C# 45
SOCIESC – Sociedade Educacional de Santa Catarina
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Exemplo de primeiro programa em c#");
}
}
}
8. Para testar o programa, clique no botão Start Debugging, ou pressione a
tecla F5;
9. A janela do programa será apresentada. Clique no botão e veja o resultado;
10. Clique no botão Fechar da janela, com o objetivo de parar o programa;
11. Agora vamos compilar o programa para a distribuição. Execute o comando
Build Solution do menu Build, ou pressione a tecla F6;
12. Execute o comando Publish do menu Build. Na janela apresentada,
referente ao Assitente de Publicação, informe a pasta de destino para que o
programa seja disponibilizado. Essa janela permite que você envie o
programa gerado para o computador local, para um computador da rede, ou
um local de armazenamento na Internet. Informe o local ou utilize o botão
Browse para localizar uma pasta local em seu computador e clique no botão
Finish;
13. Localize a pasta de destino informada no passo 12 e verifique que serão
criados dois arquivos (um referente ao programa de instalação e outro que é o
próprio programa desenvolvido). Esse é o pacote de instalação de seu
programa, que poderá ser disponibilizado para os usuários do sistema.
Síntese
Nesta aula você estudou sobre a importância do uso de ferramentas IDE para o
desenvolvimento .NET e também conheceu as versões do Visual Studio,
entendendo qual a versão mais adequada para o tipo de projeto envolvido. Além
disso, você aprendeu como instalar o Visual Studio para iniciar os seus trabalhos,
Programação Aplicada – Microsoft .NET usando C# 46
SOCIESC – Sociedade Educacional de Santa Catarina
bem como obteve as informações básicas sobre o ambiente do produto. Finalmente,
como primeiro passo na incursão do desenvolvimento em C#, você executou o ciclo
de desenvolvimento RAD, usando um exemplo simples na linguagem C#.
Na próxima aula vamos iniciar nossa primeira incursão efetiva na linguagem
de programação C#. Vamos adiante, pois agora os assuntos vão começar a
apresentar resultados práticos.
Até a próxima aula.
Exercícios Propostos
1) Diante do que você aprendeu nesta aula, é obrigatório o uso do Visual Studio
para o desenvolvimento de aplicações .NET? Por quê?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) É possível utilizar outras linguagens de desenvolvimento, dentro do Visual
Studio, além do C#? Se positivo, cite alguns exemplos de linguagem.
____________________________________________________________________________________________________________________________
______________________________________________________________
3) O seu projeto tem por finalidade o desenvolvimento de uma aplicação média
para a Web. Qual a versão do Visual Studio que você deverá utilizar?
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 47
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 3
TRABALHANDO COM VARIÁVEIS
EM C#
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Identificar a reconhecer a sintaxe da linguagem C#;
� Utilizar os comandos no uso de variáveis e expressões.
Conteúdos da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� Conhecendo os elementos de um programa;
� Regras de sintaxe da linguagem C#;
� Trabalhando com variáveis;
� Recursos especiais com variáveis strings;
� Enumerações, estruturas e Arrays;
� Construindo expressões.
Programação Aplicada – Microsoft .NET usando C# 48
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
Bem-vindo(a) à nossa terceira aula. Conforme tratamos nas aulas
anteriores, a linguagem C# foi desenvolvida especificamente para a
plataforma .NET. Projetada por Anders Hejlsberg (criador do Delphi) e Scott
Wiltamuth, um de seus principais apelos é facilitar o processo de migração de
programadores para a nova plataforma, bem como, a adoção de novos
programadores. De fato o projeto do C# buscou os melhores recursos das
linguagens C, C++ e Java, mas com as facilidades do Visual Basic e do Delphi. É
orientada a eventos, completamente orientada a objetos, com uma abordagem de
construção visual que permite construir programas usando um IDE (conforme vimos
na aula anterior). O objetivo desta aula é lhe apresentar os recursos iniciais da
linguagem C#, fornecendo-lhe a incursão nos elementos da linguagem, porque que
cada elemento tem seu lugar, entender o objetivo de cada comando e conhecer as
regras sintáticas que a linguagem implementa.
Boa aula.
1 CONHECENDO OS ELEMENTOS DE UM PROGRAMA C#
Antes de você conhecer as regras sintáticas do C# é importante que tenha a
oportunidade de analisar um código existente na linguagem. A estrutura da
linguagem de programação precisa ser seguida para que o compilador interprete
corretamente o programa. O Visual Studio reforça as regras através de seus
recursos de validação de sintaxe, o que não permite a compilação de um programa
contendo erros. Vamos entender o código C# observando a figura 30:
Programação Aplicada – Microsoft .NET usando C# 49
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 30 – Análise de código C#
De forma geral, todo programa em C# possui 5 elementos principais: área de
declarações das classes, declaração da criação de namespace, bloco de declaração
da classe, ponto de inicialização e a área de comandos/instruções da linguagem.
1.1 Área de declarações das classes
As primeiras linhas do programa possuem a instrução sobre a(s) classe(s)
que está(ão) em uso na aplicação, através da palavra reservada using. De acordo
com o que você deseja fazer no programa, pode utilizar uma classe já existente no
.NET Framework e acelerar o processo de construção de seu programa. As palavras
que se referem à uma classe existente, seguem a documentação do .NET
Framework.
Você poderá ter um excelente desempenho no desenvolvimento de
sistemas .NET, se conhecer as principais blbiotecas de classes
existentes na plataforma. Além disso, se você estudar ainda mais as
potencialidades disponíveis na plataforma, estará preparando-se para outros
Programação Aplicada – Microsoft .NET usando C# 50
SOCIESC – Sociedade Educacional de Santa Catarina
desafios. A biblioteca de classes fornecida no .NET Framework é extremamente
grande, mas com experiência e lógica, facilmente poderá localizar e utilizar uma
classe específica para um determinada finalidade.
1.2 Declaração de criação da Namespace
Para evitar que ocorram colisões entre as classes do usuário e as classes do
.NET Framework, é possível a criação de um namespace diretamente no código de
programação. O principal objetivo dessa declaração é garantir a exclusividade do
nome da classe dentro da hierarquia de namespaces que o .NET oferece. Toda
aplicação e classe construída, por padrão, é armazenada no namespace global,
dessa forma, todo código criado pode ser acessado por outro código que esteja
nesse mesmo namespace, apenas utilizando-se o nome da classe. Então, o uso de
namespace garante que o código será qualificado, permitindo que o código possa
ser acessado fora do namespace global.
Essa declaração é o uso da palavra reservada namespace, acompanhada do
nome da namespace a ser criada, baseada no nome informado pelo programador,
que segue as mesmas regras de declaração de variáveis na linguagem. Além disso,
o bloco de declaração da namespace é acompanhado das chaves de abertura e
fechamento e todo o conjunto de instruções deve ficar entre essas chaves.
1.3 Bloco de declaração da classe
A declaração class Program é o início da construção da classe. A palavra
reservada classe é acompanhada pelo nome da classe, informada pelo
programador e que segue as regras de nomes da linguagem. Nesse caso, como um
namespace está sendo criado, já utilizando o nome informado pelo programador, a
palavra Program é o nome atribuído para a classe. Via de regra, o nome das classes
sempre começa com letra maiúscula.
Programação Aplicada – Microsoft .NET usando C# 51
SOCIESC – Sociedade Educacional de Santa Catarina
1.3 Ponto de inicialização da classe
Essa declaração é a criação de um método da classe Program. Nesse caso, o
método nomeado com a palavra Main tem um significado especial, determinando ao
compilador que o programa começa a partir desse ponto. O parênteses, após a
palavra Main, determina para o compilador que a declaração é um método. Toda
aplicação .NET deve possuir um método Main, senão a aplicação não será
executada.
A linha de instrução Main é fundamental para a construção de um
programa em C#. Recebe restrições importantes que precisam ser
seguidas para que o progama inicialize corretamente. A palavra
reservada Main precisa “sempre” ser iniciada com a letra maiúscula M. Além disso,
precisa ser declarada da seguinte forma: public static void Main. Em uma
aplicação C#, múltiplas classes podem existir, mas apenas uma deve conter o
método Main. Finalmente, quando o método Main é finalizado, a aplicação termina.
1.4 Área de instruções/Comandos da linguagem
Nesse bloco, o programador insere as instruções e a lógica do programa, que
deverão ser seguidos durante a execução do programa.
Nesse ponto, é importante você conhecer a lista de palavras reservadas
que não podem ser utilizadas para nomear uma variável ou para se
utilizar como parte de um programa, exceto para implementar o
comando, de acordo com as regras da linguagem C#.
1.5 Palavras reservadas da linguagem C#
As palavras abaixo são utilizadas pela linguagem C# e sempre são
apresentadas em letras minúsculas.
abstract as base bool break
byte case catch char checked
Programação Aplicada – Microsoft .NET usando C# 52
SOCIESC – Sociedade Educacional de Santa Catarina
class const continue decimal default
delegate do double else enum
event explicit extern false finallyfixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while
2 REGRAS DE SINTAXE DA LINGUAGEM C#
Conforme você verificou no tópico anterior, a programação C# segue regras
específicas. Considere as seguintes regras essenciais para que você possa construir
programas:
• O C# é sensível a letras maiúsculas e minúsculas, dessa forma, uma
variável declarada como “Exemplo” é diferente de “exemplo”;
• O uso de espaços em branco pode ser abundante, pois o compilador os
ignora para a geração do programa;
• Mantenha a distribuição do código implementada pelo ambiente do Visual
2005 C# Express. A indentação é fundamental para que o código seja de
fácil leitura e entendimento;
• Utilize comentários, sempre que necessário, usando barras comuns (//)
precedendo o texto que será o comentário. Em caso de comentários que
Programação Aplicada – Microsoft .NET usando C# 53
SOCIESC – Sociedade Educacional de Santa Catarina
ocupem mais de uma linha, utilize a combinação /* e */, veja exemplo na
figura 31.
Figura 31 – Exemplo de instruções de comentários em C#
3 TRABALHANDO COM VARIÁVEIS
Agora que você obteve conhecimentos sobre os elementos de programação
da linguagem C#, o armazenamento de dados é a primeira atividade que um
programador realiza para construir um algoritmo. Há, na linguagem C#, uma extensa
capacidade para o armazenamento de dados, usando variáveis. A sintaxe padrão
para a declaração de uma variável em C# é a que mostra a figura 32.
Figura 32 – Exemplos de declaração de variáveis
Então, a sintaxe para declaração de variáveis no C# é:
[modificadores] tipo declarações;
Programação Aplicada – Microsoft .NET usando C# 54
SOCIESC – Sociedade Educacional de Santa Catarina
• Modificadores (opcional): informação que determina a forma de
funcionamento da encapsulação da variável, por exemplo, public, que
permite o acesso público ou static que mantém o valor da variável;
• Tipo: nome de um dos tipos de dados suportados pela linguagem C#;
• Identificadores: lista de declarações de nomes de variáveis
(identificadores), separados por vírgula. Uma declaração pode também
conter a atribuição de valor à variável. Lembre-se de que o C# exige que
toda variável precisa ser inicializada antes de ser utilizada.
Para criar e utilizar uma variável, você precisa escolher um significado e um
nome apropriado para ela. Cada variável possui um nome que também pode ser
referenciado como identificador de variável.
3.1 Tipos de dados
A linguagem C# é fortemente baseada em tipos, então podemos dizer que é
uma linguagem tipada. Isso significa que todo objeto criado ou utilizado precisa,
obrigatoriamente, ser um tipo específico de dado, exemplo: um inteiro, ou uma
string.
Esse recurso é um aspecto importante dentro do processo de
desenvolvimento de sistemas, por impactar diretamente na performance do
programa e no grau de planejamento da aplicação. De acordo com o tipo de dados
aplicados em determinada situação, haverá perda ou ganho de performance durante
a operação, pois poderá gerar uma exceção no sistema, se o tipo de dado escolhido
armazenar uma informação que originalmente não havia sido planejada. A
linguagem C# possui duas grandes categorias de tipos de dados: intrínsecos e os
tipos definidos pelo usuário.
Os tipos intrínsecos são os tipos de dados pré-construídos na linguagem. No
caso do .NET, estão baseados na especificação CTS (Common Type System) da
plataforma. Alguns autores também se referem aos tipos intrínsecos como tipos
primitivos, considerando que o C# acessa diretamente as classes básicas do .NET e
os tipos de dados; por exemplo, o tipo de dados int do C# é um sinônimo para
System.Int32, um tipo de dado primitivo que define um número inteiro de 32-bits com
sinal.
Programação Aplicada – Microsoft .NET usando C# 55
SOCIESC – Sociedade Educacional de Santa Catarina
3.1.1 Tipos de dados intrínsecos- Inteiros
São oito tipos de dados inteiros, cuja variedade permite que você selecione o
tipo de dado com suporte suficiente para o intervalo de dados que será armazenado.
Tipo Implementação Tipo Primitivo
Byte
Inteiro de 1 byte sem sinal
(0 a 255)
Valor default: 0
System.Byte
Sbyte
Inteiro com sinal de 1 byte
(-127 a 128)
Valor default: 0
System.SByte
Short
Inteiro com sinal de 16 bits
(-32.768 a 32.767)
Valor default: 0
System.Int16
Ushort
Inteiro sem sinal de 16 bits
(0 a 65.535)
Valor default: 0
System.Uint16
Int
Inteiro de 32 bits com sinal
(-2.147.483.648 a 2.147.483.647)
Valor default: 0
System.Int32
Uint
Inteiro de 32 bits sem sinal
(0 a 4.294.967.295)
Valor default: 0
System.Uint32
Long
Inteiro com sinal de 64 bits
(-9.223.372.036.854.775.808 a
9.223.372.036.854.775.807)
Valor default: 0
System.Int64
Ulong
Inteiro sem sinal de 64 bits
(0 a 18.446.744.073.709.551.615)
Valor default: 0
System.Uint64
Programação Aplicada – Microsoft .NET usando C# 56
SOCIESC – Sociedade Educacional de Santa Catarina
3.1.2 Tipos de dados intrínsecos – Lógicos
Há um tipo de dado booleano utilizado para o trabalho com expressões que
precisa representar dado FALSO ou VERDADEIRO.
Tipo Implementação Tipo Primitivo
Bool
Pode ter os valores true e false. Não é compatível
com inteiro.
Valor default: false
System.Boolean
3.1.3 Tipos de dados intrínsecos – Caractere
Em C#, todos os caracteres (e strings) são armazenados no padrão Unicode
e usam 16 bits por caractere. O Unicode é um padrão mundial para representação
de caracteres e permite armazenar os caracteres de todas as línguas vivas (como
grego, japonês, chinês e coreano) e algumas mortas (como sânscrito).
Tipo Implementação Tipo Primitivo
Char
Um único caractere Unicode de 16 bits. Não é
compatível com inteiro.
Ou na terminologia do Unicode: U+0000 até U+ffff
Por exemplo, a letra A no Unicode é representada
como /U0041
Valor default: Caracter Unicode com o valor 0
System.Char
3.1.4 Tipos de dados intrínsecos – Ponto flutuante
A linguagem C# suporta dois tipos de variáveis para armazenar ponto
flutuante.
Programação Aplicada – Microsoft .NET usando C# 57
SOCIESC – Sociedade Educacional de Santa Catarina
Tipo Implementação Tipo Primitivo
Double
Ponto flutuante binário IEEE de 8 bytes
(±5,0 x 10-324 até ± 1,7 x 10308)
15 a 16 dígitos decimais de precisão
Valor default: 0.0
System.Double
Float
Ponto flutuante binário IEEE de 4 bytes
(±5,0 x 10-45 até ± 3,4 x 1038)
7 dígitos decimais de precisão
Valor default: 0.0
System.Single
As operações de ponto flutuante não geram erros:
• Uma operação que gera um resultado muito pequeno para ser
representado torna-se zero;
• Uma divisão por zero com números de ponto flutuante não gera erro,
produz resultado infinito. Você pode verificar se o valor é infinito positivo
ou negativo com o método Double.IsInfinity();
• Uma operação inválida gera como resultado NaN (não é um número);
• Se um dos operadores for NaN, o resultado é NaN.
3.1.4 Tipos de dados intrínsecos – Decimal
Esse tipo está bem menos sujeito a erros de arredondamentoque ocorrem
com os formatos binários. As contas são feitas na base 10.
Tipo Implementação Tipo Primitivo
decimal
Ponto flutuante decimal de 128 bits
(1,0 x 10-28 até 7,9 x 1028), 28 a 29 dígitos decimais
de precisão
Valor default: 0.0
System.Decimal
Programação Aplicada – Microsoft .NET usando C# 58
SOCIESC – Sociedade Educacional de Santa Catarina
3.1.5 Tipos de dados intrínsecos – String
Um dos tipos mais comuns em C# é o string, que também inclui algumas
características especiais, não comuns nas outras linguagens. As variáveis string são
alocadas dinamicamente e podem ter de zero a 1 Giga de caracteres.
Tipo Implementação Tipo Primitivo
String
String Unicode com até 1 giga de caracteres
System.String
3.1.6 Tipos de dados - Definidos pelo usuário
Como vimos, o .NET Framework fornece um grande conjunto de tipos de
dados pré-construídos, mas também há possibilidade de criar os próprios tipos de
dados. Os novos tipos são usados em qualquer situação onde normalmente você
usaria um tipo primitivo.
Tipo Descrição
Enum
Permite declarar uma seqüência de identificadores
associados, mas incompatíveis com inteiros e com outras
enumerações.
Struct
Permite declarar tipos que contêm vários valores, identificados
por um nome.
class
Permite declarar classes.
interface
Declara uma espécie de classe abstrata, que pode ser
implementada por outra classe.
Delegate
Declara um ponteiro para um método de uma classe.
Programação Aplicada – Microsoft .NET usando C# 59
SOCIESC – Sociedade Educacional de Santa Catarina
4 RECURSOS ESPECIAIS COM VARIÁVEIS STRINGS
O tipo de dados String possui algumas potencialidades. O primeiro aspecto é
a capacidade de inserir literais nas strings, para que sejam interpretadas. Na
verdade, são caracteres especiais, interpretados ou não, de acordo com sua
finalidade.
Finalmente, podemos utilizar operações pré-definidas e métodos para a
manipulação de dados, disponíveis na linguagem.
4.1 Literais (caracteres especiais)
Os caracteres especiais que podem ser implementados em strings, estão
listados abaixo. Para que desabilite a interpretação dos caracteres na string, o valor
de atribuição para a variável deve ser precedido do símbolo arroba (@).
Caracteres Propósito
\t Tabulação horizontal
\r Retorno de carro (carriage return)
\v Tabulação vertical
\f Avanço de página
\n Salto de linha
\x
Especifica um caractere especial padrão ASCII
usando dois dígitos hexadecimais (inserido
imediatamente ao lado do literal)
\u
Especifica um caractere especial padrão
Unicode usando quatro dígitos hexadecimais
(inserido imediatamente ao lado do literal)
\\ Barra invertida
\’ Apóstrofo
\” Aspas
\0 Zero binário ou nulo
\a Toca um alarme
Programação Aplicada – Microsoft .NET usando C# 60
SOCIESC – Sociedade Educacional de Santa Catarina
4.2 Operações com variáveis string
Existem diversas operações definidas para strings. As principais são:
Operação Propósito
==
Para comparar valores
+
Para concatenar
4.3 Métodos
A classe String que se refere ao tipo de dados, fornece um grande conjunto
de métodos para a manipulação de string.
Método Propósito
Compare
Comparar dois objetos string
Concat
Concatena uma ou mais strings
Copy
Copia a string corrente
5 ENUMERAÇÕES, ESTRUTURAS E ARRAYS
Enumerações são alternativas às constantes e fornecem um caminho para
agrupar constantes de forma lógica. O uso de enumerações é muito útil quando uma
variável pode conter apenas um conjunto específico de valores.
Para declarar uma enumeração, use a palavra-chave enum, acompanhada
do nome da variável e dos valores iniciais.
Enum Nome : TipodeDados
Programação Aplicada – Microsoft .NET usando C# 61
SOCIESC – Sociedade Educacional de Santa Catarina
{
varEnumerador1 = valor,
varEnumerador2 = valor
}
Estruturas em C# permitem a implementação de variáveis compostas
heterogêneas. São conhecidas também como structures, em inglês. A palavra
reservada struct é utilizada para a declaração de uma estrutura. A sintaxe de uma
estrutura é:
Struct nomedaestrutura
{
// Declarações das variáveis membro. Por exemplo
public TipodeDados NomeVariavel;
}
Assim como as enumerações representam um agrupamento lógico de
constantes, arrays são agrupamentos lógicos de variáveis. Basicamente, o uso de
arrays é aplicado para o armazenamento de valores a partir de um índice. Em C#,
um array é um tipo de dado por referência, desta forma, você pode criar um array
usando o operador new. A sintaxe para declaração de um array é:
TipodeDados[] identificador declaração;
6 CONSTRUINDO EXPRESSÕES
As expressões são construídas de operadores e operandos. Os operadores
de uma expressão indicam quais as operações aplicadas nos operandos. Exemplos
de operadores incluem adições e concatenações, subtração, multiplicação e divisão.
O C# tem mais ou menos os mesmos operadores da linguagem C. Observe a lista
abaixo, ordenada por precedência (do maior para o menor).
Tipo Operador
Primários
(x) x.y f(x) a[x] x++ x-- new typeof
sizeof checked unchecked
Programação Aplicada – Microsoft .NET usando C# 62
SOCIESC – Sociedade Educacional de Santa Catarina
Tipo Operador
Unários
+ - ! ~ ++x --x (T)x
Multiplicativos
* / %
Aditivos
+ -
Deslocamento
<< >>
Relacional
< > <= >= is
Igualdade
== !=
E Lógico
&
Ou exclusivo lógico
^
Ou Lógico
|
E Condicional
&&
Ou Condicional
||
Condicional
?:
Atribuição
= *= /= %= += -= <<= >>= &= ^= |=
Programação Aplicada – Microsoft .NET usando C# 63
SOCIESC – Sociedade Educacional de Santa Catarina
Síntese
Nesta aula fizemos nossa primeira incursão ao código de programação da
linguagem C#. Analisamos um código de programação básico, para que você tenha
o entendimento fundamental das regras de construção de programas na linguagem.
A mensagem principal desta aula foi lhe apresentar as regras e orientações
para trabalhar com variáveis e tipos de dados na linguagem.
A linguagem C# é completamente tipada, ou seja, você precisa determinar o
tipo de dados que deseja trabalhar, para obter otimização e resultados adequados
às suas soluções.
Vimos também um recurso relevante principalmente para a construção de
soluções Console (baseadas em caractere): o uso dos recursos de manipulação de
Strings. O tipo de dados String permite que você manipule o conteúdo da cadeia de
caracteres armazenada na variável, usando um grande número de métodos e
literais.
Na próxima aula daremos mais um passo na incursão da linguagem,
conhecendo as regras e orientações para a implementação de lógica, através dos
fluxos de controle.
Até lá.
Exercícios Propostos
1) Qual a palavra reservada do C# utilizada para informar ao compilador as
classes que deverão ser utilizadas na aplicação?
a.( ) System
b.( ) Namespace
c.( ) Using
d.( ) Class
2) Defina e apresente um exemplo de Modificador.
______________________________________________________________
______________________________________________________________
____________________________________________________________________________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 64
SOCIESC – Sociedade Educacional de Santa Catarina
3) Para que servem os tipos de dados definidos pelos usuários? Apresente um
exemplo.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
4) Avalie o código abaixo e marque as afirmativas corretas.
Console.WriteLine( "{0}\n{1}\n{2}", "Curso", "Microsoft", "C#" );
a.( ) A instrução apresenta um erro;
b.( ) Apresenta o texto em uma única linha “Curso Microsoft C#”
c.( ) Apresenta o texto em duas linhas da seguinte forma:
Curso
Microsoft C#
d.( ) Apresenta o texto em três linhas da seguinte forma:
Curso
Microsoft
C#
Programação Aplicada – Microsoft .NET usando C# 65
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 4
CONTROLE DE FLUXO EM C#
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Implementar lógica de programação em algoritmos
usando declarações de controle de fluxo dos dados.
Conteúdos da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� Blocos de Código;
� Operadores;
� Instruções de controle de fluxo;
� Instruções IF, IF...ELSE e Switch;
� Instruções While e Do/While;
� Instrução For.
Programação Aplicada – Microsoft .NET usando C# 66
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
Bem-vindo(a) à quarta aula do módulo de programação aplicada com C#.
Até o momento nos inteiramos das regras de sintaxe da linguagem e
implementamo o código convencional em algoritmos. Nesta aula, você irá aprender
como construir lógica condicional em seus programas, usando instruções de fluxo de
dados.
Boa aula!
1 BLOCOS DE CÓDIGO
Antes de iniciar a construção de um programa para resolver um problema, é
fundamental que se obtenha um entendimento claro do problema e se planeje a
forma como será resolvido. Os algoritmos criados para atender um plano de solução,
normalmente se utilizam de blocos de código para conduzir as informações dentro
das condições impostas pelo problema. Por isso, é muito comum o uso de lógica
booleana nos algoritmos, pois, usando instruções de controle de fluxo de dados,
podemos determinar as condições que serão avaliadas durante o processamento do
progama e qual o procedimento que deverá ser realizado, de acordo com o
resultado do teste lógico aplicado.
Cada conjunto de instruções para atender uma determinada condição da
lógica implementada no algoritmo é chamado de bloco de código. Normalmente,
para cada resultado esperado do teste lógico, há um conjunto de instruções que
serão executadas pelo programa.
2 OPERADORES
As expressões utilizadas em lógica condicional são construídas de
operadores e operandos. Os operadores de uma expressão indicam quais as
operações aplicadas nos operandos. Exemplos de operadores incluem adições e
concatenações, subtração, multiplicação e divisão. O C# tem mais ou menos os
mesmos operadores da linguagem C. Observe a tabela abaixo, ordenada por
precedência (do maior para o menor).
Programação Aplicada – Microsoft .NET usando C# 67
SOCIESC – Sociedade Educacional de Santa Catarina
Tipo Operador
Primários
(x) x.y f(x) a[x] x++ x-- new typeof
sizeof checked unchecked
Unários
+ - ! ~ ++x --x (T)x
Multiplicativos
* / %
Aditivos
+ -
Deslocamento
<< >>
Relacional
< > <= >= is
Igualdade
== !=
E Lógico
&
Ou exclusivo lógico
^
Ou Lógico
|
E Condicional
&&
Ou Condicional
||
Condicional
?:
Atribuição
= *= /= %= += -= <<= >>= &=
^= |=
Programação Aplicada – Microsoft .NET usando C# 68
SOCIESC – Sociedade Educacional de Santa Catarina
3 INSTRUÇÕES DE CONTROLE DE FLUXO
A linguagem C# oferece suporte às instruções convencionais para o controle
de fluxo de dados e os blocos de código a serem construídos.
3.1 Estruturas de seleção
As estruturas de seleção permitem determinar qual o bloco de código que
deverá ser executado, de acordo com o resultado de um teste o lógico. A linguagem
C# oferece três tipos de estruturas de seleção:
• a instrução IF: executa um determinado bloco de código, se uma
condição for verdadeira, caso contrário não executa o código;
• a declaração IF...ELSE: é uma extensão da instrução IF, pois permite que
um outro bloco de código possa ser executado, caso a condição seja falsa;
• a instrução SWITCH: permite que vários blocos de código estejam em
condição de execução, de acordo com o valor de uma expressão. Essa
instrução permite que você tenha várias condições lógicas e, de acordo
com o seu resultado, dispara a execução de um bloco específico para o
resultado obtido.
3.2 Instruções de repetição
A linguagem C# oferece quatro tipos de estruturas de repetição. O tipo de
instrução é utilizada quando o programador deseja executar determinado bloco de
código, de acordo com uma condição lógica e mantê-lo em execução até que a
condição lógica mude ou deixe de atender à condição estabelecida.
• While: executa o bloco de código enquanto uma condição for verdadeira.
O teste é executado ao INÍCIO;
• Do/While: executa o bloco de código enquanto uma condição for
verdadeira. O teste é executado ao FINAL;
• For: o bloco de código é executado determinado número de vezes,
especificado na condição da instrução e baseado em um contador interno.
Programação Aplicada – Microsoft .NET usando C# 69
SOCIESC – Sociedade Educacional de Santa Catarina
4 INSTRUÇÕES IF, IF...ELSE E SWITCH
A instrução if é de uso comum nas linguagens de desenvolvimento de
sistemas. Seu objetivo é executar condicionalmente algum código. Seguindo a teoria
de Estrutura de Dados, a declaração if muda a execução do programa de acordo
com um valor baseado em uma condição booleana. Sua sintaxe em C# é:
if (expressão)
comando1;
[else
Comando2;]
Detalhando a estrutura do comando:
• Expressão: uma expressão pode ser implicitamente convertida para um
valor do tipo bool. Se verdadeiro, o comando1 é executado, senão o
comando2 (caso esteja presente) será executado;
• Comando1: A declaração que deve ser executada caso a expressão
retornar verdadeira;
• Comando2: A declaração que deve ser executada caso a expressão
retornar falsa.
Observações:
• A expressão deve retornar um valor booleano. Os números inteiros
não podem ser utilizados como se fosse booleano, como no C/C++;
• A cláusula else é opcional e indica o que deve ser feito caso a
expressão seja falsa;
• Caso seja necessário utilizar vários comandos, use um bloco com
chaves { };
• Existe a sintaxe else if para encadear várias decisões. Observe que
o comando switch, descrito adiante, pode ser utilizado com strings e
pode ser uma alternativa quando os encadeamentos de IF são
muito complexos. A sintaxe do else if é:
if (condicao1)
comando1;
else if (condicao2)
comando2;
else if (condicao3)
Programação Aplicada – Microsoft .NET usando C# 70
SOCIESC – Sociedade Educacionalde Santa Catarina
comando3;
...
Else
comandoN;
A instrução switch é usada para comparar uma expressão a uma série de
constantes. É basicamente uma extensão da declaração if, considerando que pode:
controlar múltiplos testes em uma simples declaração, verificar uma expresão de
teste baseada em vários valores e executar código quando uma expressão de teste
atende a um dos valores que você deseja testar.
É importante observar que a sintaxe do switch em C# é diferente da sintaxe
no C++. Caso você deseje controlar o salto entre a validação do CASE1 para o
CASE2 no C#, o CASE1 não pode conter qualquer código executável no seu corpo.
O C++ não possui a capacidade de saltar entre um case e outro (por exemplo, uma
declaração goto). Sua sintaxe em C# é:
switch (expressão)
{
constante1;
comando1;
break;
constante2;
comando2;
break;
constanteN;
comandoN;
break;
[default:
comandoX;]
}
Observações:
• Você pode associar mais de uma constante a cada bloco de código;
• Os blocos de código devem ser mutuamente exclusivos, garantido pela
presença de uma cláusula break (ou goto);
• O bloco default é chamado caso nenhuma das opções seja tomada;
• Você pode usar qualquer tipo por valor ou string na expressão.
Programação Aplicada – Microsoft .NET usando C# 71
SOCIESC – Sociedade Educacional de Santa Catarina
Abaixo, um exemplo de código usando a declaração switch:
using System;
class ExemploSwitch
{
static void Main()
{
Console.Write("Adivinhe meu número (1-5): ");
int input = Convert.ToInt32(Console.ReadLine());
switch (input)
{
case 1:
Console.WriteLine("Errado!.\n");
break;
case 2:
case 3:
Console.WriteLine("Nem 2 nem 3 está correto.\n");
break;
case 4:
goto case 1;
case 5:
Console.WriteLine("CERTO!\n");
break;
default:
Console.WriteLine("Não é um valor válido!\n");
break;
}
}
}
Programação Aplicada – Microsoft .NET usando C# 72
SOCIESC – Sociedade Educacional de Santa Catarina
5 INSTRUÇÕES WHILE E DO/WHILE
Um tipo de loop em C# é o while, responsável por executar uma declaração
(ou um conjunto de declarações) até que uma especificada expressão retorne um
valor falso.
while (expressão) declaração
class ExemploWhile
{
static void Main()
{
System.Console.Write("Digite quit para sair: ");
string text = System.Console.ReadLine();
while (text != "quit")
{
System.Console.Write("Digite quit para sair: ");
text = System.Console.ReadLine();
}
}
}
A instrução do...while executa uma declaração (ou um conjunto de
declarações) repetidamente até que uma especificada expressão retorne um valor
false. Diferente do loop while, esse loop efetua o teste após a execução do corpo do
loop.
do declaração while (expressão)
class ExemploDoWhile
{
static void Main()
{
string text;
do
Programação Aplicada – Microsoft .NET usando C# 73
SOCIESC – Sociedade Educacional de Santa Catarina
{
System.Console.Write("Digite quit para sair: ");
text = System.Console.ReadLine();
} while (text != "quit");
}
}
6 INSTRUÇÃO FOR
É o loop mais básico e o favorito dos programadores. Simplesmente executa
uma declaração (ou um bloco de declarações) repetidamente até que a expressão
de teste retorne o resultado false.
for ([inicializadores]; [expressão]; [iterações]) declarações
class ExemploFor
{
static void Main()
{
System.Console.Write("Quantas tentativas você deseja?");
int Max = int.Parse(System.Console.ReadLine());
for (int loopIndex = 1; loopIndex <= Max; loopIndex++)
{
System.Console.WriteLine("Bom trabalho!");
}
}
}
Programação Aplicada – Microsoft .NET usando C# 74
SOCIESC – Sociedade Educacional de Santa Catarina
Síntese
Nesta aula você aprendeu como construir programas em C# usando lógica
condicional, aplicando o seu conhecimento sobre estruturas de programação. Saber
utilizar a condição corretamente e o laço ou repetição adequado para o problema, é
um dos grandes diferenciais de um programador.
Vimos como os blocos de código são separações lógicas importantes que
implementamos em um programa. Também foi apresentado o elemento chave no
trabalho com lógica condicional: os operadores. Este é outro aspecto relevante que
o progamador precisa conhecer, para que sua lógica apresente a performance e o
resultado esperado.
Finalmente, conhecemos cada uma das opções para lógica condicional, como
também as regras e orientações para a sua implementação na linguagem C#.
O assunto visto é o passo definitivo para que você possa construir algoritmos
usando C#. Na próxima aula, vamos iniciar um novo e fundamental assunto para o
desenvolvimento na plataforma .NET: a programação orientada a objetos.
Te vejo na próxima aula.
Exercícios Propostos
1) Cite os três tipos de instruções de repetição suportadas pela linguagem C#
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) Qual a diferença entre a instrução IF e SWITCH?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 75
SOCIESC – Sociedade Educacional de Santa Catarina
3) Qual a diferença entre as instruções DO e DO/WHILE?
______________________________________________________________
______________________________________________________________
______________________________________________________________
4) Dado dois inteiros armazenados nas variáveis Valor1 e Valor2, que teste
lógico podemos realizar para verificar se um ou outro (mas não ambos) é
menor que 10?
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 76
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 5
PROGRAMAÇÃO ORIENTADA A
OBJETOS EM C#
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Aplicar conceitos de programação orientada a objetos
(OOP), utilizando a plataforma .NET e a linguagem C#;
� Conhecer o .NET Framework Class Library;
� Entender como as técnicas de OOP são implementadas na
linguagem C#.
Conteúdo da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� Classes e objetos;
� Tudo em .NET é baseado em objetos;
� Campos e Propriedades;
� Métodos;
� Construtores e Destrutores;
� Construindo uma classe na prática.
Programação Aplicada – Microsoft .NET usando C# 77
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
Bem-vindo(a) à aula mais importante destemódulo. A programação
orientada a objetos foi, definitivamente, adotada pelos programadores e
tecnologias da atualidade. A plataforma Microsoft .NET possui internamente todo o
suporte a objetos e oferece amplo conjunto de recursos, para que o programador
possa explorar o que há de mais poderoso na plataforma, usando metodologia de
desenvolvimento orientada a objetos. Por isso considero esta aula importante.
O objetivo principal desta aula é fazê-lo (a) aplicar os conceitos da OOP na
plataforma .NET usando a linguagem C#. Vamos revisitar alguns conceitos, sob a
ótica da plataforma .NET e da linguagem C#. Veremos como o uso da OOP permite
o mais alto nível de construção no uso da .NET. Também pretendo desenvolver em
você a percepção de que a linguagem C# é a MELHOR opção para o
desenvolvimento .NET, já que ela nasceu com total orientação para o uso dos
recursos da plataforma, sem contudo, deixar de se utilizar das técnicas de
programação orientada a objetos.
É uma excelente oportunidade para que você veja, na prática, como a OOP é
realmente uma abordagem adequada para os desafios atuais de programação e
perceber como a plataforma .NET absorveu essas práticas.
Boa aula!
1 OBJETOS E CLASSES
Você já aprendeu que um objeto é um bloco de construção de um aplicativo
orientado a objetos. Reforço aqui a comparação entre o conceito de objetos da OOP
e os objetos da vida real. Na vida real, quando nos referimos a um objeto várias
“abstrações” podem vir a nossa mente:
Quando conversamos com alguém sobre o computador que temos em
casa, esse alguém, de imediato, recebe em sua mente a imagem de um computador
que “conhece”. Isto é abstração.
Você não especificou as características de seu computador,por isso, seu
interlocutor poderá imaginar um computador muito diferente daquele a que você está
se referindo. A experiência e o conhecimento foi usando um computador Macintosh
Programação Aplicada – Microsoft .NET usando C# 78
SOCIESC – Sociedade Educacional de Santa Catarina
em uma aula da faculdade e você possui um computador PC em casa, o que pode
gerar certas diferenças entre o que você fala e o que a outra pessoa está
entendendo.
A abstração é um ato natural do ser humano, conseqüência de informações
recebidas pelo contato com o mundo exterior. À medida que uma pessoa vive,
observa, ouve e experimenta “coisas” durante sua vida, cria mapas mentais,
enriquecendo seu conhecimento e capacidade de interagir com o meio em que vive.
Apesar desse assunto ser um tanto filosófico para o contexto, é fundamental
que você compreender a abstração, por ser ela a atividade fundamental para a
construção de programas orientados a objetos.
Podemos afirmar, diante do acima exposto, que a abstração não é apenas
atribuir um nome, um conceito. A abstração também inclui a noção de
comportamento associado ao conceito, sua aplicação e uso.
1.1 Objetos em C#
A criação de objetos, na linguagem C#, é comparada às estruturas de dados
que vimos na aula 3, já que um objeto contém membros de variáveis e tipos de
função específicos para o armazenamento e manipulação do objeto. As variáveis do
objeto armazenam as informações sobre suas propriedades e as funções contidas
no objeto fornecem funcionalidades e formas de como utilizá-lo, o que pode ser
chamado de método de uso do objeto.
Os objetos, na linguagem C#, são criados a partir de tipos de dados, da
mesma forma como trabalhos com variáveis. O tipo de um objeto é conhecido por
um nome especial na OOP, a sua classe. Uma classe é o bloco principal de
construção de sistemas orientados a objetos, desta forma, podemos considerá-la
como “uma expressão da programação para a abstração de um conceito”. Uma
classe serve para encapsular um conceito, mais especificamente define o estado
(propriedades) e o comportamento (métodos) relacionados ao conceito (figura 33).
Programação Aplicada – Microsoft .NET usando C# 79
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 33 – Diagrama UML de uma classe
As classes são modelos de objetos com o objetivo de servir como base para a
criação de objetos que, a partir de uma classe, em OOP chama-se instanciação, ou
seja, o objeto gerado é uma instância da classe que o originou (figura 34). “Instância
de uma classe” e “objeto” são a mesma coisa.
Figura 34 – Diagrama UML de um objeto
Um sistema orientado a objetos pode possuir dezenas de classes, por isso, é
extremamente comum o relacionamento entre uma classe e outra, dentro do
sistema. Devemos definir qual o papel (ou responsabilidade) de cada objeto em seus
relacionamentos, garantindo que a execução do programa se mantenha dentro do
esperado.
2 TUDO NA PLATAFORMA .NET É BASEADO EM OBJETOS
Apesar de já termos tratado bastante sobre a plataforma .NET na primeira
aula deste módulo, agora vamos dar maior ênfase a um elemento importante da
plataforma neste momento: a biblioteca de classes.
A plataforma .NET funciona completamente orientada a objetos e como uma
de suas grandes propostas é aumentar a produtividade na construção de sistemas,
a Microsoft inseriu uma biblioteca de classes, ampla e poderosa, para fornecer ao
Programação Aplicada – Microsoft .NET usando C# 80
SOCIESC – Sociedade Educacional de Santa Catarina
programador recursos reutilizáveis que não apenas facilitem, mas também acelerem
o desenvolvimento de sistemas.
A biblioteca foi batizada de “Biblioteca de Classes Base”, ou, em inglês,
“Base Class Library (BCL)”. Esta biblioteca oferece um grande conjunto de classes
que contemplam desde um sistema de janelas até classes para entrada e saída de
dados, permitindo trabalhar com elementos gráficos, sockets para a comunicação de
dados, gerenciamento de memória, acesso a banco de dados, etc. Faz parte da
arquitetura do Common Language Runtime da plataforma .NET, que fornece os
componentes fundamentais para a execução de aplicações .NET (figura 35).
A BCL foi organizada em namespaces e, por sua vez, possui um amplo
conjunto de classes.
Figura 35 – Organização dos componentes da BCL
Então, de acordo com a sua necessidade na construção de determinada
funcionalidade em seu sistema, a BCL pode oferecer uma classe específica para
suprir a necessidade. Na verdade, a expectativa é que ofereça tudo o que o
programador precisa na grande maioria das soluções:
Programação Aplicada – Microsoft .NET usando C# 81
SOCIESC – Sociedade Educacional de Santa Catarina
• Recursos para suporte aos tipos, conversão e formatação de dados;
• Facilidades para a manipulação de grande quantidade de dados na
memória, fazendo uso de coleções;
• Globalização: capacidades para suporte a múltiplos idiomas e
particularidades locais em sistemas globais;
• Entrada/Saída: suporte para a manipulação de arquivos armazenados no
sistema operacional, como arquivos do tipo texto e binário;
• Capacidades para suporte à comunicação usando redes de computadores
e, na Internet, protocolos comuns como o HTTP, TCP/IP Sockets, etc.;
• Várias funcionalidades de apoio para a implementação de segurança em
suas aplicações.
3 CAMPOS E PROPRIEDADES
O estado de um objeto é descrito por suas propriedades. Quando falamos
estado, é uma referências às condições em que se apresentam o objeto, como por
exemplo, sua cor, forma e aparência. Dessa forma, o conjunto dos atributos (ou
propriedades) do objeto determinam como é o seu estado.
Na linguagem C#, estas informações são armazenadas em variáveis dentro
da classe, também chamadas de campos. Quando um objeto “instancia” uma classe
que possui campos, o objeto recebe uma cópia de toda a estrutura da classe, mas
com áreas de armazenamento privativasdo objeto que está instanciando a classe.
Há aqui uma diferença importante: os campos permitem que o usuário
armazene ou acesse o valor contido na classe, por isso fornece seu campo para
todo objeto que instanciá-la. Já as propriedades permitem que o programador defina
se deseja ou não que seja utilizado, escondendo algumas particularidades da
classe. As propriedades permitem ao programador interferir na forma como elas
serão utilizadas e mantém maior controle sobre as atividades do objeto.
Alguns autores afirmam que, embora essa forma de implementação de
campos, quando públicos, esteja disponível, não é uma boa prática de programação,
Programação Aplicada – Microsoft .NET usando C# 82
SOCIESC – Sociedade Educacional de Santa Catarina
por estar permitindo o acesso direto aos dados da classe. Ao invés disso, sugerem o
uso de métodos ou propriedades.
4 MÉTODOS
Os métodos são funções construídas na classe e estão expostas para uso
pelo programador. Seu comportamento é o mesmo da implementação de uma
função convencional, permitindo o uso de parâmetros e retornando valores a partir
do processamento do método.
5 CONSTRUTORES E DESTRUTORES
Quando realizamos a instanciação de uma classe, um objeto é criado na
memória, a este processo chamamos de inicialização, pois não precisamos nos
preocupar em reservar memória para armazenar o objeto.
Em determinados momentos, precisamos interferir na inicialização de um
objeto, para que possamos manipular os membros de uma classe antes de
efetivamente o objeto ser inicializado. Para essa tarefa, usamos construtores, que
são chamados pela palavra reservada em C#, new. Quando definimos nenhum
construtor, o compilador C# define um construtor padrão. Uma classe pode conter
mais de um construtor, dessa forma, é possível realizar várias formas para inicializá-
la, além do padrão.
Já os destrutores são utilizados para realizar a liberação de memória e dos
recursos do sistema operacional, após a finalização dos trabalhos com determinado
objeto. A plataforma .NET fornece meios automáticos para a limpeza de memória,
isto significa que não precisamos nos preocupar em realizar essa tarefa. Assim
como os construtores, também podemos encontrar situações onde precisamos
interferir no momento que o objeto está sendo destruído, para que possamos realizar
alguma tarefa particular antes de o objetivo ser efetivamente destruído.
5.1 Garbage Collection
Existem várias formas de um objeto ficar na memória desnecessariamente,
seja pela manutenção do programa que o chamou e não destruiu a instância
Programação Aplicada – Microsoft .NET usando C# 83
SOCIESC – Sociedade Educacional de Santa Catarina
explicitamente,seja por causa de uma referência que o tenha deixado “órfão”. A esse
tipo de situação, na plataforma .NET é chamado de Lixo (Garbage).
A plataforma .NET possui um recurso interno chamado Garbage Collection,
responsável por realizar periodicamente uma avaliação nos objetos armazenados na
memória do computador. Os casos em que não há mais referências (ófãos), são
destruídos automaticamente, liberando a memória correspondente.
O principal objetivo da Microsoft na inserção desse recurso é facilitar o
trabalho do programador, desobrigando-o de algumas tarefas triviais na OOP, cujo
esquecimento é comum. A condição de risco mais comum para os programas que
armazenam dados na memória, de forma indefinida e sem a limpeza de dados
desnecessários, é chamada de memory leak (a tradução pode ser “transbordo de
memória”).
6 CONSTRUINDO UMA CLASSE NA PRÁTICA
Avalie o código seguinte:
// Classe utilizada para demonstrar os conceitos básicos de OOP
using System;
public class Computador
{
private string categoria; // variável interna da classe
// Propriedade para armazenar a categoria do computador
public string Categoria
{
get
{
return Categoria;
}
set
{
Categoria = value;
}
} // fim da definição da propriedade
public void ApresentaDados()
Programação Aplicada – Microsoft .NET usando C# 84
SOCIESC – Sociedade Educacional de Santa Catarina
{
Console.WriteLine( "A descrição para o computador é\n{0}!",
this.Categoria ); // Apresenta a descrição do computador
}
}
6.1 Construindo a classe usando o Visual C# 2005 Express
1. Execute o Visual C# 2005 Express, se já não estiver aberto;
2. Clique no comando Create: Project...;
3. Na janela New Project, selecione o item Console Application e, na caixa de
texto Name, digite “Exercicio3” e clique no botão OK;
4. No menu Project, execute o comando Add Class...;
5. Na janela Add New Item (figura 36), digite no campo Name “Computador” e
clique no botão OK;
Figura 36 – Janela para a inserção de uma classe
6. Abaixo do primeiro sinal de chaves dentro da classe, declare uma variável
String com o nome “descricao” (d minúsculo). Essa é a variável que fará o
armazenamento da categoria dentro da classe;
private string categoria;
Programação Aplicada – Microsoft .NET usando C# 85
SOCIESC – Sociedade Educacional de Santa Catarina
7. Abaixo desta declaração, vamos criar uma propriedade na classe com o nome
“Categoria”;
public string Categoria
{
get
{
return Categoria;
}
set
{
Categoria = value;
}
}
8. Abaixo do código da propriedade, vamos criar um método para a classe:
public void ApresentaDados()
{
Console.WriteLine( "A categoria do computador é\n{0}!",
this.Categoria ); // Apresenta a descrição do computador
}
9. Salve a solução.
6.2 Instanciando a classe e usando a propriedade e método
1. Abra a classe Program.cs;
2. Digite o seguinte conteúdo:
Computador meuComp = new Computador();
meuComp.Categoria = "PC";
meuComp.ApresentaDados();
3. Para ver o resultado da aplicação, execute o comando “Start without
Debugging” do menu Debug. O resultado deverá ser o mesmo que
mostramos na figura 37:
Programação Aplicada – Microsoft .NET usando C# 86
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 37 – Janela do console do Windows, resultado da aplicação
Síntese
Agora sim estamos vendo os conceitos da programação orientada a objetos
na prática. Estamos ainda no início dessa incursão prática, mas agora você está em
condições de entendimento do porquê de algumas definições conceituais e agora já
é possível concluir sobre as vantagens do método da OOP.
No início desta aula, fizemos uma leve associação entre os conceitos da OOP
e a plataforma .NET. Além disso, discutimos um pouco sobre como os elementos da
plataforma estão organizados e como podem ser utilizados. Na próxima aula
falaremos mais sobre isso.
Criamos uma classe que contém propriedades e métodos e entendemos
quando devemos utilizar cada uma das peças que compõem uma classe. Como
exercício prático, criamos uma classe e a instanciamos em um programa
desenvolvido em Visual C# 2005 Express.
Na próxima aula, vamos adiante sobre os conceitos da OOP e seu uso na
linguagem C#. As peças de seu conhecimento estarãoencaixando-se a cada nova
aula.
Vamos em frente!
Programação Aplicada – Microsoft .NET usando C# 87
SOCIESC – Sociedade Educacional de Santa Catarina
Exercícios Propostos
1) Descreva a função da Base Class Library da plataforma .NET.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
2) Uma instância de uma classe é a mesma definição de um objeto? Caso
afirmativo, por quê?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) É obrigatório o uso de destrutores para a programação de classes? Explique
por que.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 88
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 6
TÉCNICAS DE OOP USANDO C#
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Implementar os blocos de tratamento de erros em tempo de
execução;
� Ampliar os conhecimentos sobre métodos e parâmetros;
� Utilizar parâmetros para identificar sobrecarga de métodos;
� Implementar programas que se utilizem de Interfaces,
Herança e Polimorfismo.
Conteúdo da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� Trabalhando com exceções;
� Métodos e parâmetros;
� Sobrecarga de Métodos;
� Interfaces, Herança e Polimorfismo.
Programação Aplicada – Microsoft .NET usando C# 89
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
Como vimos até agora, você pode utilizar a linguagem C# para construir
programas muito similares aos de 1970, usando uma simples abordagem
de programação estruturada. Isso ainda é possível.
Mas a linguagem C# libera todo o seu potencial quando você utiliza as
técnicas de OOP e constrói programas que venham a se beneficiar desse método de
programação.
Nesta aula você construirá programas em C# usando os principais recursos
da OOP. Um assunto extremamente relevante e muito comum em seu uso é o
“tratamento de erros em tempo de execução”, pois permite ao programador controlar
melhor a previsibilidade do seu programa. Depois vamos tratar sobre métodos e
suas aplicações, conhecendo algumas particularidades e conceitos associados à
OOP. Finalmente, vamos conhecer e implementar código de programação com as
principais técnicas de OOP.
Veja que estamos em pleno período de conhecimento sobre a OOP e sua
implementação usando C#.
Boa aula!
1 TRABALHANDO COM EXCEÇÕES
Uma exceção ocorre quando um programa encontra qualquer problema não
esperado, por exemplo: tentativa de execução do programa fora de um bloco de
memória previamente utilizado, ou tentativa de ler um arquivo que não existe mais
no local de origem. Estes problemas não são necessariamente causados por erro de
programação, ocorrem com a violação de certas “expectativas” que você construiu
para o ambiente de execução do programa.
Quando seu programa é capaz de controlar as situações excepcionais e, se
possível, “de forma elegante” recuperar-se do problema sem gerar qualquer
desconforto ao usuário, este recurso chama-se tratamento de erros em tempo de
execução (termo em inglês é exception handling). Na maioria das linguagens atuais
há esse recurso e não poderia ser diferente no C#.
Programação Aplicada – Microsoft .NET usando C# 90
SOCIESC – Sociedade Educacional de Santa Catarina
Na verdade, a plataforma .NET oferece um conjunto de classes pré-definidas
para lhe ajudar a trabalhar com situações excepcionais em seus programas,
permitindo que você crie sua própria classe de tratamento de erro e e que
especifique mensagens de erros específicas para sua aplicação. Você pode fazer
isso derivando a classe ApplicationException do .NET.
A linguagem C# ajuda a disparar e controlar as exceções de seu programa
através das declarações try, catch, finally e throw.
1.1 A estrutura do bloco para tratamento de erros
A estrutura de um bloco de código, para realizar o controle de exceções, é
implementada por um bloco de código composto de três palavras reservadas do C#:
try, catch e finally. Dentro desse bloco, você pode colocar qualquer declaração de
comando do C#, que pode inclusive conter outros blocos try, ou chamar um método,
acionado dentro do bloco de tratamento de erros.
Em resumo, em tempo de execução você terá uma hierarquia de blocos try
que estarão um dentro de outro. Quando uma exceção ocorrer em qualquer um dos
pontos, ao invés de executar a linha de código corrente (que está com o erro), em
tempo de execução será procurado o primeiro bloco try mais próximo do código
dentro da hierarquia de blocos. Então o controle passará para o código que está
dentro do bloco catch (se houver algum) e o comando finally, associado ao bloco try
será executado. Um comando try não pode viver sozinho, precisa ser acompanhado
de um ou mais blocos catch e, se necessário, terminado com o bloco finally.
try
{
// Código a ser executado aqui. Pode ser qualquer comando C#
}
catch (System.Exception ex)
{
// Código para controlar a exceção aqui
}
finally
{
// Código a ser executado após a tentativa de execução
}
Programação Aplicada – Microsoft .NET usando C# 91
SOCIESC – Sociedade Educacional de Santa Catarina
Você pode ter vários blocos catch, imediatamente após o bloco try, e cada
bloco catch controla uma exceção de um tipo particular. Quando uma exceção
ocorre em uma declaração dentro do bloco try, em tempo de execução, o programa
procurará o bloco catch que controla aquele tipo de exceção.
O bloco finally contém o código que SEMPRE será executado, mesmo que
ocorra ou não uma exceção. Normalmente, nesse bloco, colocamos um código de
progarmação para realizar uma atividade após os trabalhos de exceção, como
limpeza da memória ou exclusão de um arquivo temporário. Essa é uma boa prática
de programação, pois mantém o ambiente de execução do sistema operacional
adequado para uso.
Não é obrigatório para um bloco try ter um bloco finally, porém, se você
o implementar, haverá somente um bloco finally e sempre deverá ser
declarado ao final do bloco try.
1.2 A declaração throw
A declaração throw gera explicitamente uma exceção em seu código. Você
poderá utilizá-la quando seu programa precisar “forçar” uma situação de exceção
para atender a uma necessidade específica do problema.
Para utilizar a declaração throw, é necessário ter a instância de uma exceção.
Para isso, utilize a palavra reservada new, conforme já vimos anteriormente sobre
instanciação de classes.
O Visual C# 2005 Express oferece uma janela para a visualização dos tipos
de exceção, que são listas por categoria e o namespace da biblioteca, e estão
disponíveis no .NET Framework. As exceções mais comuns estão na categoria
Common Language Runtime Exceptions (figura 38).
Para acessar a janela, execute o comando Exceptions, do menu Debug, ou
a combinação de teclas CTRL+ALT+E.Programação Aplicada – Microsoft .NET usando C# 92
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 38 – Janela de de visualização das exceções disponíveis no .NET
2 MÉTODOS E PARÂMETROS
Na construção de aplicações, você já aprendeu que a divisão da aplicação em
unidades funcionais é uma prática comum. Esse é o princípio fundamental que a
modelagem de uma aplicação precisa compor: a distribuição lógica das
funcionalidades do sistema, através de blocos de código interdependentes. Essa
prática, como você também já viu, permite capacidade para reuso de código de
programação, aumentando-lhe a facilidade para manutenção.
Na linguagem C#, considerando que é orientada a objetos, você pode
organizar sua aplicação em classes que contêm blocos de código, cuja
funcionalidade específica na classe é chamada método. Um método é considerado
membro da classe e executa uma determinada ação de acordo com sua utilização.
A figura 39 exemplifica uma classe com método.
Programação Aplicada – Microsoft .NET usando C# 93
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 39 – Exemplo de classe com métodos
Na prática, um método é um grupo de comandos em C# que trabalha em
conjunto para realizar determinada tarefa, assim como uma função na programação
estruturada. Todo método possui um identificador, nome que será utilizado para
“executar” o método. Como falamos anteriormente, a declaração Main, é o método
principal da aplicação C# e é o ponto de entrada do programa quando o usuário o
executa. Em C# todo método está associado a uma classe.
Sintaxe para criar um método na classe:
Static void NomedoMétodo()
{
Comandos do C# que compõem o método
}
Para utilizar um método contido em uma classe, que significa “chamar” um
método, utilizamos o comando em C#:
Objeto.Método()
using System;
class Exemplo
{
public static void TesteMetodo( )
Programação Aplicada – Microsoft .NET usando C# 94
SOCIESC – Sociedade Educacional de Santa Catarina
{
Console.WriteLine("Este é o método da classe exemplo");
}
}
class OutroExemplo
{
static void Main( )
{
Exemplo.TesteMedodo( );
}
}
Quando você utiliza um método dentro da própria classe que o contém, não
precisa especificar o nome da classe, basta informar o nome do método a ser
chamado (figura 40).
Figura 40 – Exemplo de declarações chamando métodos
O comando return pode ser utilizado dentro dos métodos, com o objetivo de
enviar o retorno do resultado do método, imediatamente, para o ponto de onde foi
chamado.
static void ExampleMethod( )
{
Console.WriteLine("Exemplo de Mensagem usando um método");
return;
Console.WriteLine("Mas este texto nunca será apresentado");
Programação Aplicada – Microsoft .NET usando C# 95
SOCIESC – Sociedade Educacional de Santa Catarina
}
No exemplo acima, o comando return pára o processamento do método e
retorna imediatamente para o ponto de código que o chamou, significando que o
segundo comando, WriteLine, nunca será executado.
2.1 Parâmetros
Parâmetros permitem que uma informação seja enviada para um método e
também permitem que uma informação do método seja enviada como retorno para o
ponto de código que o chamou. Quando criamos um método, podemos incluir em
nossa declaração os parâmetros que deverão ser informados quando o método for
utilizado. Esses parâmetros são informados dentro dos parentêses da declaração do
método.
Cada parâmetro possui um nome e um tipo, que deverá representar e atender
aos requisitos da informação, além de ser passada para o método.
public static void TesteMetodo(string Mensagem)
{
Console.WriteLine(Mensagem);
}
Quando o programador chamar o método, poderá enviar o conteúdo desejado
para o método a partir de seus parâmetros. veja o exemplo e a figura 41.
TesteMetodo(“Este é um exemplo de mensagem”);
Programação Aplicada – Microsoft .NET usando C# 96
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 41 – Processamento de um método
É importante observar que um método pode conter vários parâmetros. Por
isso, mantenha a mesma correlação entre os parâmetros enviados pela chamada do
método e a mesma ordem da declaração dos parâmetros no método.
Existem três fomas para a passagem de parâmetros:
1. Por valor: os dados são transferidos para o método e não poderão ser
encaminhados para fora do método. Na verdade, o conteúdo dos
parâmetros é uma cópia do argumento e não poderá ser modificado pelo
método;
2. Por referência: o argumento enviado para o método, através de seus
parâmetros, poderão ser alterados, permitindo que o conteúdo de entrada
no método possa ser diferente no conteúdo de saída. O parâmetro pode
ser considerado, nesse caso, apenas um apelido para o argumento;
3. Parâmetro do tipo out: existe a forma de passar um parâmetro usando a
palavra reservada out. Essa forma de passagem é útil quando desejamos
utilizar um parâmetro que necessariamente não corresponde ao tipo de
dado enviado pelo código que chamou o método.
Programação Aplicada – Microsoft .NET usando C# 97
SOCIESC – Sociedade Educacional de Santa Catarina
3 SOBRECARGA DE MÉTODOS
A sobrecarga de métodos ocorre quando há dois métodos em uma mesma
classe com o mesmo nome. O compilador do C# distingue os métodos
sobrecarregados comparando os parâmetros de cada um. Quando isso acontece, o
compilador C# seleciona o método apropriado, avaliando a quantidade, o tipo e a
ordem dos argumentos, entre os métodos envolvidos (figura 42).
Esse tipo de abordagem é muito útil quando se desejamos implementar
métodos que realizem a mesma tarefa, mas que ligeiramente permitem ter um
comportamento diferente, de acordo com certas condições.
Figura 42 – Chamada de um método que possui sobrecarga
4 INTERFACES, HERANÇA E POLIMORFISMO
4.1 Interfaces
Você define uma interface da mesma forma que constrói uma classe, apenas
substituindo a palavra reservada class para a palavra reservada interface (figura
43).
Figura 43 – Definição de Interface
Programação Aplicada – Microsoft .NET usando C# 98
SOCIESC – Sociedade Educacional de Santa Catarina
As interfaces são também conhecidas como contrato, que determinam regras
a serem aplicadas quando houver a instanciação de uma classe. De maneira geral,
quando uma classe é instanciada, a validação, se a implementação está correta,
pode ser realizada de duas formas:
1. Através do compilador, que fará a validação e não permitirá a compilação
se algo estiver errado;
2. Usando interfaces, que descrevem as regras para o uso de uma classe.
Na prática, uma classe pode conter várias interfaces, determinando a forma
como os membros serão validados em sua implementação. Os métodos das
interfaces são implicitamente públicos, ou seja, você não precisa (na verdade não
pode) utilizar a palavra reservada public, para permitir que determinado membro
esteja acessível fora da classe (figura 44).
Figura 44 – Exemplo de componentes de uma interface
Uma classe em .NET já recebe naturalmente algumas interfaces advindas da
própria plataforma, por exemplo: a IClonable, IDisposable e IList. Perceba também
que, por uma questão de documentação e orientação, todas as interfaces são
implementadas com o identificador, iniciando com a letra “I” maiúscula.
Para implementar uma interface usando uma classe (figura 45), os passos
são:
• Declare a interface usando a sintaxe class : interface;
• Defina o conteúdo da classe considerando as regrasda interface.
Programação Aplicada – Microsoft .NET usando C# 99
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 45 – Exemplo de implementação de uma classe baseada em uma
interface
4.2 Herança
Herança é o termo utilizado para definirmos as condições de relacionamento
que os objetos possuem, determinando como uma classe pode referenciar outra,
incluindo seus campos e propriedades. É através da herança que podemos
especializar objetos. Exemplo:, quando desejamos que um campo receba apenas
números. Para realizar essa atividade, você poderá criar uma caixa de texto a partir
de uma classe existente na plataforma e, automaticamente, essa nova instância
herdará todas as funcionalidades da classe padrão da caixa de texto, mas permitirá
que algumas propriedades possam ser manipuladas.
1. Inicie o Visual C# 2005 Express;
2. Clique no comando Project: Create;
3. Selecione o template Console Application;
4. Digite no campo Name: ExemploHeranca e clique no botão OK;
5. Execute o comando AddClass... do menu Project;
6. Na janela que será apresentada (figura 46), verifique se o item Class está
selecionado (caso contrário, selecione-o) e digite no campo Name: Carro.cs;
Programação Aplicada – Microsoft .NET usando C# 100
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 46 – Janela para criação de uma classe
7. Clique no botão Add;
8. Dentro da classe, digite o seguinte conjunto de comandos:
public void Dirigir()
{
Console.WriteLine("Dirigindo na estrada");
}
public void Parar()
{
Console.WriteLine("Parando o carro na estrada");
}
9. Salve a solução executando a combinação de teclas CTRL+SHIFT+S ou, no
menu File, o comando Save All;
10. Vamos agora adicionar uma nova classe. Execute o comando AddClass... do
menu Project;
11. Na janela que será apresentada (figura 47), verifique se o item Class está
selecionado (caso contrário, selecione-o) e digite no campo Name:
Caminhonete.cs;
12. Ao lado da declaração class Caminhonete, adicione o sinal de : (dois pontos)
e ao lado digite o nome da classe Carro;
Programação Aplicada – Microsoft .NET usando C# 101
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 47 – Exemplo da Classe Caminhonete
13. Volte para a classe principal, com o nome program.cs e digite o seguinte
código:
Caminhonete meuCaminhao = new Caminhonete();
meuCaminhao.Dirigir();
meuCaminhao.Parar();
Console.ReadLine();
14. Salve a solução usando a combinação de teclas CTRL+SHIFT+S ou, no
menu File, o comando Save All;
15. Execute o projeto através do comando Start Without Debugging e veja o
resultado. Perceba que a classe Caminhonete executou métodos Dirigir e
Parar, mas ela não possui tais classes. Na verdade, ela herdou a partir da
classe que suportou a instanciação (carro).
Avaliando o código criado no exemplo acima, perceba alguns pontos
importantes:
• A instanciação da classe carro ocorreu com a linha abaixo:
Caminhonete meuCaminhao = new Caminhonete();
• O relacionamento entre a classe Caminhonete e a classe Carro foi
estabelecida pela seguinte linha de comando:
Class Caminhonete : Carro
• Lembre-se de que, a partir desse relacionamento e da instanciação, a
classe Caminhonete herdará os métodos da classe Carro.
4.3 Polimorfismo
Embora a palavra polimorfismo nos leve a imaginar que estamos falando
sobre mutações genéticas, na OOP esse conceito é muito simples. Basicamente é a
Programação Aplicada – Microsoft .NET usando C# 102
SOCIESC – Sociedade Educacional de Santa Catarina
habilidade de uma referência à variável de uma classe derivada, pode ser tratada
como se fosse uma referência para a classe base.
É uma conseqüência natural da herança, já que nessa modalidade as classes
estão em condições de derivação de uma classe base, e cada uma pode conter
métodos e propriedades parecidos.
Essa abordagem permite obtermos dois benefícios:
• É possível agrupar vários objetos diferentes que possuam a mesma
classe base e tratá-los da mesma forma;
• O comportamento polimórfico permite que, em tempo de execução, o
compilador verifique o tipo de cada objeto e execute o método em seu
código específico (chamado de overridden).
Síntese
A programação orientada a objetos é um assunto extremamente rico e
poderoso. Nesta aula você estudou os elementos essenciais da OOP usando a
linguagem C# e pôde perceber as vantagens de seu uso na programação atual.
Agora você está pronto para realizar mais um passo no sentido da
programação em .NET: na próxima aula você estudará como criar aplicações
Windows ou, como a Microsoft procura divulgar, construção de Windows
Applications.
Até a próxima aula!
Exercícios Propostos
1) Como podemos definir o tratamento de erros em tempo de execução e qual a
sua importância para a programação na plataforma .NET?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 103
SOCIESC – Sociedade Educacional de Santa Catarina
2) Qual é a finalidade da declaração throw?
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
3) Qual a vantagem em utilizarmos herança em nossos programas?
______________________________________________________________
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 104
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 7
APLICAÇÕES WINDOWS FORMS
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Construir aplicações usando recursos baseados em
interfaces gráficas;
� Utilizar o Visual C# Express para a construção de programas
Windows Application;
� identificar o componente que deve ser utilizado para
determinada finalidade;
� Implementar programação orientada a eventos.
Conteúdos da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� Introdução
� Delegates
� Formulários e Tratamento de Eventos
� Controles, Propriedades e Layout
Programação Aplicada – Microsoft .NET usando C# 105
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
O desenvolvimento de sistemas usando a plataforma .NET e a linguagem
C# permite que você considere naturalmente a construção de soluções
baseadas em interfaces gráficas. Na verdade, a Microsoft fez um grande esforço
para que a plataforma .NET oferecesse uma grande riqueza de recursos visuais,
permitindo que o programador para Windows construa software rico e com muita
produtividade. Até o momento, nesse módulo, você programou aplicações chamadas
“Console”, que significa a criação de programas baseados em caracteres.
Dificilmente você utilizará esse tipo de projeto para atender necessidades de um
usuário final. Na atualidade, a grande demanda está em soluções visualmente ricas,
seja para Windows ou paraa Internet e a plataforma .NET dá um bom recado neste
sentido.
O objetivo desta aula é permitir que você aprenda a trabalhar com recursos
visuais em seus programas .NET e entenda como utilizar os principais componentes
para elaborar as telas de seus programas. Você também verá um método comum
para essa abordagem: a programação orientada a eventos, técnica aplicada em
todas as ferramentas utilizadas para o desenvolvimento de sistemas com interfaces
gráficas, também conhecidas como IDEs (Interface Development Environment).
Esse tipo de software é utilizado para acelerar o processo de desenvolvimento visual
de interfaces (GUI – Graphic User Interface), e existem várias opções no mercado
que atendem a diversas finalidades.
Nesta aula continuaremos usando o Visual C# 2005 Developer , para suportar
todas as atividades dos assuntos que serão tratados.
Desejo-lhe boa aula.
1 INTRODUÇÃO
Uma interface gráfica com o usuário (GUI) permite que o usuário realize uma
interação com o programa através de recursos visuais. É uma forma de construção
de sistemas, já que o programador primeiro “desenha” a interface com o usuário e
depois constrói os programas, associando-os a eventos disponíveis nos
componentes visuais utilizados.
Programação Aplicada – Microsoft .NET usando C# 106
SOCIESC – Sociedade Educacional de Santa Catarina
Um conhecimento fundamental para ter bom aproveitamento nesse tipo de
trabalho é o amplo domínio que o programador precisa ter sobre as orientações que
a Microsoft apresenta para a construção de aplicações Windows, chamadas de
“User Interface Design” ou, em português, “Desenho de Interfaces com o Usuário”.
O guia, disponível na Internet pela Microsoft, fornece um conjunto de informações e
orientações permeando as práticas que a fabricante espera que os programadores
Windows mantenham.
Segundo Cooper (2003), a interação com o usuário começa um pouco abaixo
da superfície dos sistemas, aplicações e hardware. Na verdade, quase todos os
problemas de desenho de interfaces gráficas vêm de pessoas bem intencionadas,
inteligentes e competentes, mas que mantinham o foco nas coisas erradas. O autor
recomenda que, ao invés de manter o foco em tecnologias e tarefas, uma boa
elaboração visual necessita que o foco se mantenha nas metas, para que os
usuários mantenham sua atenção e tenham motivos para executar determinada
tarefa.
O designer industrial Victor Papanek, descreve design como o esforço
consciente e intuitivo para impor uma ordem com significado.
Alguns autores apresentam definições com maiores detalhes:
• Entendimento das necessidades dos usuários, necessidades, motivações
e contextos;
• Entendimento dos requisitos e restrições de negócios, de técnicas e de
domínio;
• Tradução do conhecimento em planos para artefatos com suas formas,
conteúdo e comportamento que transmite utilidade, usabilidade e desejo,
desde que seja economicamente viável e tecnicamente adequado
(considerando limitações culturais e pessoais).
No centro dessas atividades de programação de sistemas com interfaces
gráficas, existe uma ferramenta chamada IDE. Neste módulo, estamos utilizando o
Microsoft Visual C# 2005 Express, versão mais simples de um produto mais
completo da Microsoft, chamado Visual Studio .NET.
Como você já teve oportunidade de ver neste curso, o Visual Studio faz parte
da estratégia da plataforma .NET da Microsoft e a versão Express dos produtos são
gratuitos e servem como uma opção para iniciantes que pretendem um dia migrar
para versões superiores. Além disso, também como já tratamos, a linguagem C# e o
Programação Aplicada – Microsoft .NET usando C# 107
SOCIESC – Sociedade Educacional de Santa Catarina
Visual Studio são as opções mais adequadas para o desenvolvimento na plataforma
.NET, pois foram criados ou adequados para usufruir toda a capacidade da
plataforma.
Veja algumas características comuns das interfaces gráficas no quadro
abaixo e analise-as depois, na figura 48.
Característica Descrição
Janelas Múltiplas janelas permitem que informações
diferentes sejam mostradas simultaneamente
na tela do usuário.
Ícones Representam tipos diferentes de informação.
Em alguns sistemas, ícones representam
arquivos.
Menus Comandos são selecionados de uma janela
especial conhecida como Menu, ao invés de
utilizar comandos digitados.
Apontador Um apontador, como o mouse, é usado para
seleção de opções de um menu ou para indicar
os itens de interesse em uma janela.
Gráficos Elementos gráficos podem ser misturados com
textos na mesma tela.
Programação Aplicada – Microsoft .NET usando C# 108
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 48 – Janela e seus compoentes gráficos
É importante você observar que a construção de interfaces gráficas segue as
bases características que vimos anteriormente e uma terminologia particular
associada aos elementos gráficos, também chamados de componentes.
Componente Descrição
Caixa de texto (TextBox) Permite que o usuário entre com informações
usando o teclado. Ele também pode
apresentar texto que pode ser editado ou não.
Etiqueta de Texto (Label) Apresenta imagem ou texto não editável (fixo).
Botão (Button) Dispara eventos quando há um clique do
mouse sobre ele.
Caixa de verificação
(CheckBox)
Especifica uma opção que pode ser
selecionada ou não selecionada. Muito útil
quando há um conjunto de opções para
selecionar uma ou mais opções ao mesmo
Programação Aplicada – Microsoft .NET usando C# 109
SOCIESC – Sociedade Educacional de Santa Catarina
tempo.
Caixa de combinação
(ComboBox)
Fornece uma lista associada a uma caixa de
texto, onde o usuário poderá selecionar um, e
apenas um, item da lista apresentada. O item
selecionado é apresentado na caixa de texto.
Caixa de lista (ListBox) Fornece uma lista de itens que o usuário pode
selecionar clicando sobre o item. É possível a
seleção de um ou mais itens ao mesmo
tempo.
As aplicações Windows em .NET são chamadas de Windows Applications.
A linguagem C# e a plataforma .NET fornecem suporte extensivo para a construção
de Windows Applications. Como falamos anteriormente, o ponto mais importante
sobre as aplicações Windows é a chamada “orientação a eventos”, que veremos
mais adiante nesta aula. Todas as aplicações dessa categoria apresentam uma
interface gráfica, para os usuários interagirem com a aplicação e também é a forma
como a aplicação responde às interações com o usuário. Esta interface gráfica com
o usuário é chamada de Windows Form, ou WinForm. Um Windows Form pode
conter componentes visuais como caixas de texto, etiquetas e botões. Como tudo
que está construído sobre a plataforma .NET é resumido a objetos, não seria
diferente com os Windows Forms. Todos os objetos visuais inseridos em um
formulário são representados por uma classe base do objeto, que estará
armazenada no namespace Windows.Forms.
Na verdade o namespace Windows.Forms é um conjunto de classes e
métodos para a criação de programas com interface gráfica.
2 DELEGATES
Para que você aprenda a trabalhar com Windows Forms, é necessário que
você aprenda primeiro a trabalhar com um recurso poderoso da linguagem C#:
Delegates.
Delegates é um tipo de referência utilizado para encapsular um método com
uma assinatura específica (já vimos este conceito anteriormente, em sobrecarga de
métodos) e um tipo de retorno. Você pode encapsular qualquer método em um
Programação Aplicada – Microsoft .NET usando C# 110
SOCIESC – Sociedade Educacional de Santa Catarina
delegate. Na verdade, é através deles que os eventos são controlados dentro de um
formulário C#, apesar de também serem utilizados paraimplementar recursos de
programação como callbacks e chamadas assíncronas.
Em resumo, um delegate nada mais é que um ponteiro de função. Ponteiros
são variáveis que, ao invés de armazenar um valor, armazenam o endereço de
memória em que o valor se encontra, permitindo que uma classe chame métodos de
outras classes, sem exigir que as outras classes sejam derivadas dentro da
hierarquia da classe atual.
Quando você está construindo formulários visuais em .NET, os eventos são
códigos de programação que se utilizam de delegates para realizar o seu trabalho.
Cada componente inserido no formulário possui seu conjunto de eventos, e cada
evento implementa recursos de delegates.
Os Delegates são muito utilizados em Windows.Forms, mas também podem
ser aplicados em qualquer caso onde o comportamento das variáveis é mais
importante que o valor delas. Se fôssemos utilizar uma implementação convencional
de herança, usaríamos interfaces (figura 49).
Figura 49 – Diagrama UML de Implementação sem Delegates
Com o uso de Delegates, é possível realizar um caminho alternativo (figura
50).
Programação Aplicada – Microsoft .NET usando C# 111
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 50 – Diagrama UML usando Delegates
3 FORMULÁRIOS E TRATAMENTO DE EVENTOS
Toda Windows Application deve possuir uma janela. O termo janela, cujo
termo é substituído para Formulário. Na verdade, um formulário nada mais é do que
uma janela de uma aplicação. É um elemento gráfico que aparece na Área de
Trabalho do usuário no Windows, mas um formulário pode ser uma caixa de diálogo
ou um tipo de formulário especial, chamado MDI Form. O MDI vem do acronismo de
Multiple Document Interface, que significa a capacidade de um formulário ser
apresentado dentro de outro formulário, criando um conceito simples de pai-filho. A
abordagem usando formulários MDI está caindo em desuso, já que o .NET e as
versões mais atuais do Windows permitem maior controle e navegação para a sua
aplicação.
Um formulário pode conter grande variedade de objetos e componentes em
seu conteúdo, por isso a importância do User Interface Design, pois é no momento
da criação de um formulário para aplicação, que o programador irá demonstrar sua
“visão” para apresentação do conteúdo.
Quando inserimos um formulário para ser apresentado em uma aplicação, na
verdade, a classe responsável pela apresentação do formulário, terá referência
através do comando using para o namespace Windows.Forms. Os componentes
inseridos no formulário, na verdade, são considerados instância de uma determinada
classe que implementa a interface IComponent, definindo o comportamento dos
componentes, por exemplo: a forma como deve ser usado para carregá-lo na
memória.
Programação Aplicada – Microsoft .NET usando C# 112
SOCIESC – Sociedade Educacional de Santa Catarina
O principal componente do Visual C# 2005 Express para os trabalhos de
construção de uma aplicação é o Form Editor, ponto central do produto. Usando a
caixa de ferramentas (ToolBox), apresentada ao lado esquerdo do Form Editor,
você poderá ver a lista de controles que podem ser inseridos no formulário.
O Visual C# 2005 Express, por ser uma ferramenta IDE, possui um amplo
conjunto de recursos para facilitar ao programador a tarefa de construção de
Windows Applications, conforme você aprendeu na segunda aula deste módulo.
Os controles e componentes são organizados por categorias no Toolbox e as
categorias representam uma funcionalidade em particular: banco de dados e menus,
por exemplo (figura 51).
Para utilizar um componente em particular que está disponível no Toolbox,
clique sobre o componente e, mantendo o botão do mouse pressionando, arraste-o
para dentro do formulário. Clicando apenas uma vez no componente e depois,
clicando direto no local de destino, também é possível inserir um componente no
formulário.
Figura 51 – Form Editor e Toolbox
Para cada componente inserido no formulário, há métodos, eventos e
propriedades que podem ser manipulados pelo programador. Para visualizar os
Programação Aplicada – Microsoft .NET usando C# 113
SOCIESC – Sociedade Educacional de Santa Catarina
métodos e os eventos de um objeto em particular, arraste-o para o formulário e
efetue um duplo clique sobre ele. Você acessará uma janela que representa a área
de código do formulário.
A lista de métodos e eventos é composta dos membros que fazem parte da
classe editada no momento. No caso de um formulário, você encontrará na lista, por
padrão, Form1( ) e InitializeComponent( ) (figura 52). Um formulário é um container
para os controles e componentes. Ao arrastar o controle para o formulário, o Visual
C# gera o código que instancia o objeto e define as propriedades básicas. O código
gerado é atualizado de acordo com os elementos visuais alterados, bem como, as
propriedades do objeto em questão.
Figura 52 – Janela de Editor de Código
Já a lista de propriedades do objeto que está selecionado, você pode ver que
é apresentada na caixa de propriedades. Normalmente aparece no canto inferior
direito do ambiente do Visual C# (figura 53). Perceba que, naturalmente, cada objeto
possui um conjunto particular de propriedades, apesar de algumas serem comuns a
todos os objetos, como a propriedade NAME do objeto, por exemplo.
Programação Aplicada – Microsoft .NET usando C# 114
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 53 – Propriedades do Objeto
4 CONTROLES, PROPRIEDADES E LAYOUT
Já que anteriormente falamos sobre controles, vamos partir da análise de
uma aplicação. Considere o seguinte formulário (figura 54), construído no Form
Editor:
Figura 54 – Formulário de Exemplo da Aplicação
Programação Aplicada – Microsoft .NET usando C# 115
SOCIESC – Sociedade Educacional de Santa Catarina
Observe que o formulário apresenta um título: “Exemplo de Formulário” (figura
55), texto apresentado a partir da alteração da propriedade Text do Formulário.
Figura 55 – Propriedade Text do formulário
Além disso, no formulário existem dois controles: um Button e um TextBox,
para que ao usuário, ao clicar sobre o botão, veja apresentada uma mensagem na
caixa de texto.
Para apresentar o texto dentro do controle Button, também foi alterada a
propriedade Text, na janela de Propriedades. Para implementar o evento clique do
botão, foi realizado um duplo clique sobre o botão e digitado a seguinte instrução em
C#:
textBox1.Text = "Botão pressionado!";
O código completo gerado pelo programa é o seguinte:
namespace FormControlEvent
{
partial class FrmControlEvent
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should�
be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
Programação Aplicada – Microsoft .NET usando C# 116
SOCIESC – Sociedade Educacional de Santa Catarina
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(15, 38);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Clique";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new �
System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(115,�
41);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(145, 20);
this.textBox1.TabIndex = 1;
//
// FrmControlEvent
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F,�
Programação Aplicada – Microsoft .NET usando C# 117
SOCIESC – Sociedade Educacional de Santa Catarina
13F);
this.AutoScaleMode = �
System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(286, 273);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "FrmControlEvent";
this.Text = "Exemplo Formulário";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
}
}
Para que você possa implementar um visual equilibrado, considerando que é
comum o uso de vários componentes no visual de sua aplicação, utilize o menu
Format do Visual C# (figura 56), para executar os ajustes necessários.
Figura 56 – Menu Format
Observe que existem várias opções nesse menu, oferecendo-lhe mecanismos
rápidos para um ajuste fino do visual do formulário. São eles:
Componente Descrição
Align Alinha os componentes selecionados de acordo com uma
definição de caminho padrão.
Programação Aplicada – Microsoft .NET usando C# 118
SOCIESC – Sociedade Educacional de Santa Catarina
Componente Descrição
Make same size Aplica o mesmo tamanho para os objetos selecionados.
Horizontal Spacing Define o espaçamento Horizontal entre os objetos selecionados,
com o objetivo de manter um padrão de distância entre os
objetos.
Vertical Spacing Define o espaçamento Vertical entre os objetos selecionados,
com o objetivo de manter um padrão de distância entre os
objetos.
Center in Form Centraliza o objeto ou o conjunto de objetos selecionados, no
centro do formulário.
Order Quando ocorrer sobreposição de objetos no formulário, com esse
comando você pode determinar qual objeto será apresentado
superposto e sobreposto.
Lock controls Comando importante para garantir que, após você ter realizado a
distribuição desejada, ao habilitá-lo, os controles ficarão
bloqueados e você não correrá o risco de acidentalmente alterar
o layout do formulário.
4.1 Aplicação Prática em Windows Forms
Vamos agora construir uma aplicação com vários controles e a manipulação
de várias propriedades e eventos.
1. Execute o Visual C# 2005 Express, se ainda não está em execução;
2. Clique em Create Project;
3. Na janela que será apresentada, escolha o modelo Windows Application,
digite na caixa Name, ComprarLivro e clique no botão OK;
4. Desenhe os componentes no formulário conforme mostra a figura 57;
Programação Aplicada – Microsoft .NET usando C# 119
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 57 – Formulário de Exemplo
5. Defina as propriedades do formulário para:
a. Size: 500,414
b. StartPosition: CenterScreen
c. Name: MeuExemplo
d. Text: Compra de Livros
6. Adicione um Label par ao formulário e defina as seguintes propriedades para
o componente:
a. Name: lblTitulo
b. Text: Comprar livro
c. Font: Negrito, Tamanho 16
7. Adicione um GroupBox ao formulário (figura 58). Caso o controle não esteja
aparecendo em seu Toolbox, verifique se o grupo Containers está expandido
na caixa de ferramentas;
Programação Aplicada – Microsoft .NET usando C# 120
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 58 – Controle GroupBox
8. Redimensione o tamanho dele para que acomode três caixas de verificação.
Defina as seguintes propriedades para o controle:
a. Text: Livros Disponíveis
b. Name: gpbLivrosDisponiveis
9. Adicione três CheckBox para dentro do GroupBox inserido no item 7. Altere
as propriedades de cada CheckBox, como segue:
Propriedades
Componente
Name Text
checkBox1 chkItem1 Introdução ao C#
checkBox2 chkItem2 C# para Iniciantes
checkBox3 chkItem3 Guia do Programador C#
10. Adicione mais um Label para o formulário e altere a propriedade Text para
“Selecione o(s) livro(s) para compra” e a propriedade Name para lblLivros.
Posicione o TextBox dentro do GroupBox;
11. Adicione mais um GroupBox para o formulário e defina as seguintes
propriedades:
a. Text: Opções de Pagamento
b. Name: gpbOpcoesCompra
c. Enabled: FALSE
Programação Aplicada – Microsoft .NET usando C# 121
SOCIESC – Sociedade Educacional de Santa Catarina
12. Adicione dois RadioButton para o formulário, dentro do GroupBox, inserido no
item 11. Defina as seguintes propriedades:
Propriedades
Componente
Name Text Checked
radioButton1 optCC Cartão de Crédito TRUE
radioButton2 oprDeposito Depósito Bancário FALSE
13. Adicione mais um Label para o formulário e altere a propriedade Text para
“Escolha o modo de pagamento” e a propriedade Name para lblPagto.
Posicione o TextBox dentro do GroupBox;
14. Adicione dois controles Button ao formulário, alterando as seguintes
propriedades:
Propriedades
Componente
Name Text Enabled
Button1 btnComprar Comprar FALSE
Button2 btnSair Sair TRUE
15. Adicione mais um Label para o formulário e altere a propriedade Text para
“Observações” e a propriedade Name para lblOBS;
16. Adicione um TextBox para o formulário e altere as propriedades:
Propriedades
Componente
Name Text Multiline
textBox1 txtObservacoes Deixe em branco TRUE
17. Salve o seu trabalho;
18. Vamos agora adicionar os códigos de programação aos eventos. Adicione o
seguinte código ao evento Click do botão btnSair:
private void btnSair_Click(object sender, EventArgs e)
{
Application.Exit();
}
19. Quando o usuário selecionar qualquer livro, o GroopBox Opções de
Pagamento e o botão Comprar, deverão ser habilitados, já que, inicialmente,
ficarão desativados. Eles também ficarão indisponíveis em caso de nenhum
Programação Aplicada – Microsoft .NET usando C# 122
SOCIESC – Sociedade Educacional de Santa Catarina
livro ter sido selecionado. Para realizar essa atividade, vamos adicionar
código para o evento CheckedChanged do checkbox chkItem1. Digite o
seguinte código para o evento:
if (chkItem1.Checked == false && chkItem2.Checked == false && �
chkItem3.Checked == false)
{
gpbOpcoesCompra.Enabled = false;
btnComprar.Enabled = false;
}
else
{
gpbOpcoesCompra.Enabled = true;
btnComprar.Enabled = true;
}
20. Copie o código para os outros CheckBox (chkItem2 e chkItem3);
21. Salve o programa e execute-o. Veja os resultados até o momento,
selecionandoos livros para compra;
22. Agora vamos inserir um código para o botão Comprar, que deverá apresentar
um resumo de compra, a partir dos livros selecionados. Digite o seguinte
código para o evento Click do botão;
private void btnComprar_Click(object sender, EventArgs e)
{
string message = "Você comprou:\r\n\t";
int Pedido = 0;
if(chkItem1.Checked)
{
Pedido+=20;
message+=chkItem1.Text + "\r\n\t";
}
if(chkItem2.Checked)
{
Pedido+=40;
message+=chkItem2.Text + "\r\n\t";
}
Programação Aplicada – Microsoft .NET usando C# 123
SOCIESC – Sociedade Educacional de Santa Catarina
if(chkItem3.Checked)
{
Pedido+=60;
message+=chkItem3.Text + "\r\n\t";
}
string ModoPagamento = "";
if (optCC.Checked)
{
ModoPagamento = optCC.Text;
}
else
{
ModoPagamento = optDeposito.Text;
}
message +="\r\nO pagamento será de R$ " + Pedido.ToString();
message +="\r\nO modo de pagamento selecionado foi " + ModoPagamento;
if (txtObservacoes.Text != "")
{
message+="\r\nSuas observações foram : " + txtObservacoes.Text;
}
MessageBox.Show(message, "Resumo");
}
23. Execute a sua aplicação (figura 59) e veja os resultados.
Programação Aplicada – Microsoft .NET usando C# 124
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 59 – Resultado do sistema
Algumas dicas importantes na construção de Windows Forms:
• Crie o layout de seu formulário para que se apresente de forma simples e
fácil de entender. É importante que o usuário de sua aplicação sinta-se
familiar com o ambiente do produto. O uso deve ser conforme o esperado,
sem surpresas;
• Não esqueça de utilizar o menu Format para obter um resultado melhor
sobre a distribuição dos componentes;
• Quase todos os controles possuem propriedades comuns como Location,
Size, Enabled, Visible e etc. Uma das propriedades mais importantes, a
TabIndex, descreve a seqüência que o foco do Windows deverá seguir,
quando o usuário pressionar a tecla TAB;
• Os controles devem possuir nomes de acordo com sua finalidade, para
que sejam fáceis de reconhecer quando o programador for realizar alguma
manutenção;
• Embora seja apenas uma prática de programação, adicionar três
caracteres iniciais ao nome do controle, representando o tipo de controle a
que o nome se refere, pode ser muito útil.
Programação Aplicada – Microsoft .NET usando C# 125
SOCIESC – Sociedade Educacional de Santa Catarina
4.2 Estabelecendo o formulário de inicialização
É comum você inserir vários formulários em uma aplicação Windows Forms.
Nessa condição, é necessário determinar qual o formulário de início que a aplicação
irá apresentar quando for executada.
Existem duas formas para determinar o objeto a ser inicializado e informar o
formulário que será disparado quando a aplicação for inicializada. A primeira forma é
pelas propriedades do projeto (figura 60), no campo Startup Object.
Figura 60 – Janela de propriedades do projeto
Uma outra forma é acessar o método Main( ) da aplicação e alterar o código
C# (figura 61), referente à inicialização do projeto.
Figura 61 – Código C# de inicialização
Programação Aplicada – Microsoft .NET usando C# 126
SOCIESC – Sociedade Educacional de Santa Catarina
4.4 Menus
Menu é um recurso visual que fornece um grupo de comandos relacionados
nas aplicações Windows. Os itens que compõem os menus (figura 62) variam
conforme a aplicação, mas seu uso é parte integral da implementação visual em C#
e muito comum na navegação das funcionalidades disponíveis em um sistema.
Figura 62 – Terminologia no uso de menus
A letra sublinhada no título do item de menu é a chamada “Letra de Atalho”,
acionada no menu principal pela combinação de teclas ALT+Letra. Já nos submenus
e itens de menus, simplesmente digitando a letra associada ao comando.
Para criar um menu em Windows Forms, abra a caixa de ferramentas e
arraste o controle MenuStrip no formulário. Essa ação criará uma barra na parte
superior do formulário, abaixo da barra de título, e apresentará um ícone na área de
componentes do Visual C# (figura 63).
A área de inserção de menus no formulário é muito simples para operação.
Você pode digitar diretamente o menu que deseja apresentar ao usuário, à medida
que os itens são inseridos, as opções de menu e submenus são apresentados.
Programação Aplicada – Microsoft .NET usando C# 127
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 63 – Ambiente de edição de menus no Visual C#
A inserção dos itens de menus é realizada com a digitação nos campos
disponíveis pelo Editor de Menu e as propriedades de cada menu também devem
ser manipuladas na janela de propriedades do Visual C# (figura 64). É pelas
propriedades que você pode determinar as teclas de atalho para execução do item.
Figura 64 – Criação de menu
Para inserir uma barra separadora no menu, simplesmente digite o “hífen” na
caixa de texto referente ao item de menu. A propriedade Enabled do item de menu
determina se o item está disponível para execução ou não.
Programação Aplicada – Microsoft .NET usando C# 128
SOCIESC – Sociedade Educacional de Santa Catarina
Depois que você criou o seu menu, o próximo passo é a inserção de código
C# aos itens que desejamos que realize determinada tarefa. Na verdade, o editor de
menus facilita o processo de construção “visual” do menu, mas somente após a
inserção do código associado é que o menu recebe a capacidade de execução. O
código é criado em um evento associado ao item de menu (figura 65).
Para criar um evento, efetue duplo clique no item de menu desejado. Essa
operação apresentará o editor de código do Visual C#, com a estrutura mínima para
a composição do evento.
Figura 65 – Código associado ao evento
Visão completa do código gerado em C#:
namespace Menu
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources
/// should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
Programação Aplicada – Microsoft .NET usando C# 129
SOCIESC – Sociedade Educacional de Santa Catarina
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new �
System.Windows.Forms.ToolStripMenuItem();
this.abrirToolStripMenuItem = new �
System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();this.SuspendLayout();
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new �
System.Windows.Forms.ToolStripItem[] { �
this.fileToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(292, 24);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new �
System.Windows.Forms.ToolStripItem[] {
this.abrirToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new �
System.Drawing.Size(56, 20);
this.fileToolStripMenuItem.Text = "&Arquivo";
//
// abrirToolStripMenuItem
//
this.abrirToolStripMenuItem.Name = "abrirToolStripMenuItem";
this.abrirToolStripMenuItem.Size = new �
System.Drawing.Size(152, 22);
this.abrirToolStripMenuItem.Text = "&Abrir";
Programação Aplicada – Microsoft .NET usando C# 130
SOCIESC – Sociedade Educacional de Santa Catarina
this.abrirToolStripMenuItem.Click += �
new System.EventHandler �
(this.abrirToolStripMenuItem_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.menuStrip1);
this.MainMenuStrip = this.menuStrip1;
this.Name = "Form1";
this.Text = "Form1";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip menuStrip1;
private
System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; �
private System.Windows.Forms.ToolStripMenuItem �
abrirToolStripMenuItem;
}
}
Síntese
Nesta aula você se envolveu com uma das atividades mais ricas em termos
visuais, na programação .NET: a construção de Windows Forms. É um trabalho
simples de ser realizado, exigindo apenas a aplicação de boas práticas de User
Interface Design, assunto que também abordamos nesta aula.
Finalmente, você estudou como é a abordagem da programação orientada a
eventos, o que é um evento e seu uso na construção de programas usando um
Programação Aplicada – Microsoft .NET usando C# 131
SOCIESC – Sociedade Educacional de Santa Catarina
ambiente IDE. Espero que você tenha percebido as vantagens deste método de
trabalho para programação.
Na próxima aula, vamos aprender como trabalhar com banco de dados no
C#.
Até lá!
EXERCÍCIOS PROPOSTOS
1) Qual a namespace responsável pela construção de janelas na plataforma
.NET?
______________________________________________________________
______________________________________________________________
2) Descreva três recursos importantes do Editor de Código do ambiente do
Visual C# 2005 Express.
______________________________________________________________
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 132
SOCIESC – Sociedade Educacional de Santa Catarina
Aula 8
BANCO DE DADOS COM C#
Objetivos da aula
Ao final desta aula, você deverá ser capaz de:
� Identificar os elementos básicos de banco de dados
relacionais;
� Entender como a linguagem SQL colabora no processo de
construção de programas com bancos de dados;
� Utilizar as ferramentas do Visual C# e do SQL Express para
manter um banco de dados para a aplicação;
� Definir as opções de uso de banco de dados em uma
aplicação C#.
Conteúdos da aula
Acompanhe os assuntos desta aula, se preferir, ao
terminar, assinale o conteúdo já estudado.
� Introdução à banco de dados relacionais?
� Linguagem SQL
� Microsoft SQL Express
� Data Controls e ADO.NET
Programação Aplicada – Microsoft .NET usando C# 133
SOCIESC – Sociedade Educacional de Santa Catarina
Prezado(a) aluno(a),
No desenvolvimento atual de aplicações, o banco de dados é uma
tecnologia muito comum. A grande maioria das aplicações utiliza alguma
forma de armazenamento de dados persistentes, nesse caso, a tecnologia de banco
de dados é mais adequada para as mais diversas finalidades. Nesta aula você
aprenderá os conceitos principais sobre a tecnologia de banco de dados e como
implementar projetos em C# que se utiliza de banco de dados.
Você já teve uma leve abordagem sobre os conceitos de banco de dados e
aqui estaremos revisitando algumas das informações essenciais para integrar a
tecnologia com o desenvolvimento de uma aplicação em C#.
Boa aula.
1 INTRODUÇÃO A BANCO DE DADOS RELACIONAIS
Um banco de dados é uma coleção organizada de dados e os sistemas
gerenciadores de banco de dados (SGBD) fornecem os mecanismos para organizar,
armazenar, recuperar e modificar os dados pelo usuário.
Em um Banco de Dados relacional temos uma série de tabelas que têm um
conjunto de linhas e colunas. As colunas representam as informações pertinentes a
uma linha. Dessa forma, as linhas devem ser identificadas univocamente por uma
chave primária, para que as informações possam ser recuperadas posteriormente.
A chave primária pode ser uma coluna que nunca terá seus dados repetidos ou um
conjunto de colunas que, juntas, nunca serão repetidas.
Coluna 1 Coluna 2 Coluna 3
CPF Nome DataNascimento
4594545 Júnior da Silva 24-08-2005
9454001 Armort de Souza 31-05-2005
9345400 Tianak da Costa 12-02-2004
Vários autores apresentam as vantagens no uso de um SGBD:
Programação Aplicada – Microsoft .NET usando C# 134
SOCIESC – Sociedade Educacional de Santa Catarina
Vantagem Descrição
Eliminação da
inconsistência dos dados
Nos sistemas de arquivos, os dados ficavam
armazenados em locais isolados e só acessados pela
linguagem que lhes deu origem, com isso tínhamos a
mesma informação repetida em locais diferentes. Com a
chegada dos SGDBs, os dados puderam ser
centralizados, evitando a duplicação e,
conseqüentemente, a inconsistência.
Facilidade de acesso aos
dados
Devido à centralização dos dados, facilmente puderam ser
acessados por qualquer ponto da rede.
Provê eficiente segurança
aos dados
Usando critérios de permissões definidos pelo
administrador, podemos informar ao servidor quem pode
acessar o que e quais operações pode realizar.
Provê restrições de
integridade
Nos SGDBs você pode definir regras de integridade sobre
os campos de uma tabela, com isso, qualquer valor
inserido na coluna deverá respeitar essa regra.
Provê ferramentas
eficientes para backup e
restore
Um dos aspectos importantes no uso de SGBDs é a
manutenção dos dados. Utilitários para cópia de
segurança e restauração de dados são fundamentais para
a administração dos dados do SGBD.
Um Sistema Gerenciador de Base de Dados (SGBD) é uma coleção de
programas que permiteaos usuários criarem e manipularem uma base de dados.
Um SGBD é, assim, um sistema de software de propósito geral que facilita o
processo de definir, construir e manipular bases de dados de diversas aplicações
(figura 66).
• Definir uma base de dados envolve a especificação de tipos de dados a
serem armazenados na base de dados;
• Construir uma base de dados é o processo de armazenar os dados em
algum meio que seja controlado pelo SGBD;
• Manipular uma base de dados indica a utilização de funções como a de
consulta, para recuperar dados específicos, modificação da base de dados
para refletir mudanças no mini-mundo (inserções, atualizações e
remoções), e geração de relatórios.
Programação Aplicada – Microsoft .NET usando C# 135
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 66 – Aplicação acessando banco de dados
2 LINGUAGEM SQL
Na história do desenvolvimento dos Bancos de Dados Relacionais, há o
momento em que foi necessário o desenvolvimento de linguagens destinadas à sua
manipulação. Então o Departamento de Pesquisas da IBM desenvolveu a SQL
(Search and Query Language) como forma de interface para o SGBD denominado
SYSTEM R no início dos anos 70. Somente em 1986 o American National Standard
Institute ( ANSI ), publicou um padrão SQL (Structured Query Language), que se
estabeleceu como linguagem padrão de Banco de Dados Relacional.
A SQL pode ser dividida em dois tipos de comandos:
• A DDL (Data Definition Language) - apresenta uma série de comandos
que permite a definição dos dados. É composta, entre outros, pelos
comandos Create, destinado à criação do Banco de Dados, das Tabelas
que o compõem, além das relações existentes entre as tabelas.
• Create, Alter e Drop.
Programação Aplicada – Microsoft .NET usando C# 136
SOCIESC – Sociedade Educacional de Santa Catarina
Os comandos da série DML (Data Manipulation Language) - destinados às
consultas, inserções, exclusões e alterações em um ou mais registros de uma
ou mais tabelas de maneira simultânea.
Select, Insert, Update e Delete.
A linguagem SQL é um grande padrão de banco de dados, devido à
simplicidade e facilidade de uso. Opõe-se a outras linguagens, visto que uma
consulta SQL especifica a forma e não o caminho para chegar ao resultado. É uma
linguagem declarativa, em oposição a outras linguagens procedurais, reduzindo o
ciclo de aprendizado daqueles que se iniciam na linguagem.
Após estabelecer a comunicação de sua aplicação C# com um SGBD, a
forma de armazenamento, alteração e exclusão dos dados se dará com o uso da
linguagem SQL. Esse modelo de aplicação é conhecido, hoje, como arquitetura
cliente/servidor, pois as atividades de interface com o usuário (camada de aplicação)
e SGBD (camada de dados) estão fisicamente separados em uma rede de
computadores. À medida que o modelo evoluiu, novas camadas foram inseridas,
com o objetivo de aumentar a capacidade de processamento simultâneo que a
aplicação pode atender. Dessa forma, as arquiteturas 3-Camadas e N-Camadas,
foram batizadas com uma camada adicional chamada “aplicação”, ou seja, as
classes, métodos e funções de uma aplicação, responsáveis pela lógica do sistema,
podem ficar armazenadas também em um servidor separado. O conceito de N-
Camadas surgiu com o objetivo de representar a capacidade dos sistemas
corporativos poderem “escalar horizontalmente”, ou seja, para cada camada
podemos ter um ou vários computadores.
O processamento de consulta de dados de uma aplicação até o banco de
dados, envolve uma série de passos, os quais envolvem software, tecnologia e
informações. Veja os detalhes na figura 67.
Programação Aplicada – Microsoft .NET usando C# 137
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 67 – O processo de consulta ao banco de dados usando SQL
Comandos DDL:
Comando Descrição
CREATE Permite a criação de tabelas no banco de dados
ou mesmo de sua criação.
DROP Elimina a definição da tabela, seus dados e
referências.
ALTER Permite inserir/eliminar atributos nas tabelas já
existentes
Comandos DML:
Comando Descrição
SELECT Realiza a consulta em um banco de dados
INSERT Insere dados em uma tabela específica
DELETE Exclui dados de uma tabela segundo um critério
UPDATE Atualiza os dados em uma tabela
Programação Aplicada – Microsoft .NET usando C# 138
SOCIESC – Sociedade Educacional de Santa Catarina
3 MICROSOFT SQL EXPRESS
O SQL Server Express é um conjunto de ferramentas para ajudar você no
gerenciamento de bancos de dados, envolvidos no desenvolvimento de pequenos
projetos. Além disso, o próprio Visual C# oferece ferramentas para acessar dados a
partir do ambiente de desenvolvimento, permitindo maior produtividade na
construção de programas que acessam banco de dados.
Há alguns anos o produto SQL Server já existe com a marca da Microsoft.
Vem de uma longa história e, originalmente, foi baseado em um produto chamado
Sybase. Seu principal mercado é atender projetos de grande volume de dados –
principal diferencial do SQL Server para o Access – dentro do portfolio da Microsoft.
Se havia pouca necessidade – um ou poucos usuários – com um volume
transacional simples e baixo, era recomendado o Access, se o projeto exigia alto
volume de dados – com grande número de usuários simultâneos – incluindo
segurança, e com nível médio de complexidade dos dados, o SQL Server era
recomendado. Havia, contudo, um detalhe: o conhecimento prático e operacional
adquiridos com o Access era, na sua maioria, perdido quando ocorria a migração
para o SQL Server, exigindo do profissional aprender mais sobre as ferramentas de
gerenciamento do segundo produto.
Desde as primeiras versões do Access, existem ferramentas e meios para a
migração de um banco de dados Access para um SQL Server, as chamadas
upsizing. Nas últimas versões do Access, já era possível a criação nativa de bancos
de dados em formato SQL Server, permitindo que as ferramentas dos dois produtos
pudessem compartilhar da mesma base de dados. Mas, quando ocorria a migração
de uma base para a outra, a aplicação que utilizava o banco de dados migrado
(chamada front-end) precisava receber uma série de alterações, para absorver as
novas funcionalidades da plataforma superior e também adequar-se a certas regras
que na plataforma anterior eram mais “leves”.
A criação de um banco de dados usando SQL Server Express é muito simples
e sua migração para as demais versões superiores do produto é também
extremamente simples. Além disso, na versão mais simples, as regras e condições
das versões superiores, são mantidas e NADA precisa ser corrigido em uma
aplicação para adequar-se à migração para uma versão superior.
Programação Aplicada – Microsoft .NET usando C# 139
SOCIESC – Sociedade Educacional de Santa Catarina
Uma das ferramentas do produto é o SQL Server Configuration Manager
(figura 68), que oferece todas as ações necessárias para o gerenciamento de
bancos de dados, bem como determina as condições e parâmetros do produto.
Figura 68 – Gerenciador de Configurações do SQL Express
Com essa ferramenta, você configura as condições como a sua aplicação
pode comunicar-se com o servidor de banco de dados. Detalhes como protocolos
ativos, portas de comunicação e serviços disponíveis são elementos de
parametrização usando a ferramenta.
Para acessar a ferramenta:
1. Clique no botão Iniciar;
2. Aponte para Todos os Programas;
3. Aponte para o item de menu Microsoft SQL Server 2005;
4. Aponte para o subitem Configuration Tools;
5. Clique no ícone SQL Server Configuration Manager.
Conforme já tratamos neste tópico, a construçãode aplicações usando C# e
SQL Server é facilitada com as ferramentas visuais disponibilizadas pela Microsoft.
O Visual C# 2005 Express inclui várias ferramentas para apoiar o processo de
desenvolvimento de aplicações usando banco de dados. O principal objetivo dessa
integração é fazer com que o programador não precise alternar de uma aplicação
para outra, provocando qualquer perda de produtividade.
Programação Aplicada – Microsoft .NET usando C# 140
SOCIESC – Sociedade Educacional de Santa Catarina
O Database Explorer é o elemento essencial para trabalhar com bancos de
dados através do Visual C#. A ferramenta permite estabelecer conexão do projeto
atual com um banco de dados a ser criado ou existente. Para acessar a janela do
Database Explorer, clique no menu View e execute o comando Database Explorer
(caso esse item não se apresente, aponte para o item de menu Other Views e no
submenu apresentado, clique sobre o Database Explorer).
3.1 Datasources
Datasources são os parâmetros necessários para realizar a conexão com um
banco de dados. Em uma aplicação desenvolvida em C#, você pode estabelecer um
Datasource para manter conexão da aplicação com um banco de dados em
particular.
Para configurar um Datasource, você pode utilizar o Data Explorer e seguir as
orientações fornecidas pela ferramenta para parametrizar uma conexão (figura 69).
Clique com o botão direito do mouse sobre o item Data Connections, do Data
Explorer e, no menu suspenso que será apresentado, clique sobre o item Add
Connection.
Figura 69 – Menu para adicionar uma conexão com banco de dados
No ambiente do Visual C# 2005 Express, também há uma alternativa, o
Assistente de configuração de um Datasource. O objetivo desse assistente é facilitar
o processo de parametrização de uma conexão com banco de dados, apresentando
um conjunto de janelas orientativas e que lhe solicitam informações para a
composição final da conexão.
Programação Aplicada – Microsoft .NET usando C# 141
SOCIESC – Sociedade Educacional de Santa Catarina
Para acessar o Assistente, clique no menu Data (figura 70) e execute o item
de menu Add New Data Source...
Figura 70 – Data Source Configuration Wizard
Após estabelecer conexão com o banco de dados, você poderá utilizar-se das
ferramentas integradas de banco de dados, no Visual C# (figura 71), para trabalhar
com os objetos contidos no banco de dados, como: efetuar consultas às tabelas e
alterar algum atributo de uma tabela.
Figura 71 – Visualizando dados do banco de dados
Programação Aplicada – Microsoft .NET usando C# 142
SOCIESC – Sociedade Educacional de Santa Catarina
Através do Visual C# e do DataSource, você pode realizar as seguintes
operações no banco de dados conectado (aqui as principais listadas);
• Realizar manutenções nas tabelas existentes;
• Criar e excluir uma tabela;
• Efetuar consultas em SQL para visualizar os dados contidos nas tabelas;
• Criar Views com o objetivo de acelerar o uso de dados/consultas e criar
Stored Procedures para elaborar programas que ficarão associados a
determinados eventos ou pré-programados a serem executados a partir de
código C#.
4 DATA CONTROLS E ADO.NET
Existem várias formas para trabalhar com banco de dados nas aplicações em
C#. Cada método atende a uma determinada finalidade e fornece ao programador
meios mais rápidos ou mais difíceis para completar sua operação. Você pode
trabalhar com dois métodos para acessar dados em sua aplicação:
• Usando componentes visuais/controles que aceleram o processo de
composição da aplicação;
• Usando a biblioteca de classes da plataforma .NET para as operações de
banco de dados.
O meio mais simples para implementar um programa com banco de dados em
Visual C# é usando o Asssitente de Datasources (figura 72). Após estabelecer
conexão pela ferramenta, você pode arrastar o objeto que possua dados, como uma
tabela ou uma visão, e soltar para um formulário existente na sua aplicação.
Programação Aplicada – Microsoft .NET usando C# 143
SOCIESC – Sociedade Educacional de Santa Catarina
Figura 72 – Formulário com uma tabela inserida
Executado o procedimento, todos os componentes necessários para realizar a
operação, foram inseridos no formulário, além disso, todo código de programação
necessário foi gerado automaticamente no seu projeto.
4.1 Data Controls
O processo de composição de um formulário com banco de dados, pôde ser
avaliado no tópico anterior. O principal componente gerado no formulário foi um
“DataGridView”, mas, além dele, outros foram inseridos. Vejamos a descrição de
cada um deles no quadro abaixo e na figura 73:
Controle Descrição
Dataset Utilizado para representar os dados na memória
DataGridView Apresenta os dados em formato de planilha
BindingSource Realiza a conexão dos controles inseridos no formulário e o
Datasource
BindingNavigator Insere uma barra de navegação padrão no formulário,
Programação Aplicada – Microsoft .NET usando C# 144
SOCIESC – Sociedade Educacional de Santa Catarina
contendo as operações básicas de banco de dados
Figura 73 – Componentes inseridos no formulário
4.2 O que é ADO.NET?
O ADO.NET é um conjunto de bibliotecas de classes da plataforma .NET que
o programador pode utilizar para construir programas com acesso a banco de dados.
Na prática, é a forma alternativa de construção de uma aplicação, em que o
programador precisa realizar praticamente toda atividade de conexão com banco de
dados e manipulação das informações recuperadas. Vantagem desse método de
trabalho: o programador possui total controle do que está acontecendo entre a
aplicação e o banco de dados; em contrapartida exige maior volume de trabalho e
verificação do código gerado, ações que são superadas usando as ferramentas
visuais do Visual C#.
A história de modelos de programação para banco de dados em produtos
Microsoft é longa. Existem grandes variações e versões de tecnologias para atender
necessidades específicas de uma determinada aplicação.
Programação Aplicada – Microsoft .NET usando C# 145
SOCIESC – Sociedade Educacional de Santa Catarina
O ADO.NET traz o que há de melhor nas experiências anteriores da Microsoft
com o acesso a banco de dados, além de agregar funcionalidades importantes como
suporte nativo e otimizado à Internet para trabalhar de forma off-line.
O modelo de objetos do ADO.NET está baseado em três componentes
principais:
• DataSet: é o componente principal da arquitetura do ADO.NET,
principalmente para arquiteturas desconectadas, já que realiza um cache
local na estação do usuário. É destinado para acesso a dados a partir de
origens de dados independentes. Um DataSet possui um ou mais objetos
DataTable, onde estão os dados armazenados;
• DataView: é a classe responsável pela comunicação entre os
componentes visuais da aplicação e o DataSet;
• DataProvider: é o componente responsável em manter a comunicação
dos demais componentes e o banco de dados. Seus objetos são
connection, command, dataadaptor e datareader.
Síntese
Nesta aula você aprendeu como trabalhar com banco de dados em suas
aplicações .NET, entender como a implementação pode ser realizada e quais as
opções utilizadas para executar comandos e estabelecer as conexões de banco de
dados e seus formulários.
Você também aprendeu como trabalhar com o SQL 2005 Express, que é o
produto mais simples da família de servidores de bancos de dados da Microsoft. Viu
que, com este produto, pode realizar praticamente todas as funções essenciais para
construir soluções usando banco de dados.
Com esta aula, terminamos o módulode Elementos de Programação
usando C#. Espero que você tenha obtido resultados satisfatórios com o conteúdo
apresentado e que possa realizar os seus trabalhos de forma rápida e rica,
elementos que fazem parte da filosofia da Microsoft para a construção de
aplicações.
Programação Aplicada – Microsoft .NET usando C# 146
SOCIESC – Sociedade Educacional de Santa Catarina
Desejo-lhe boa sorte e não pare seus estudos em .NET, pois é um “mundo de
oportunidades” que está em constante crescimento e hoje, está permitindo aos
profissionais realizar cada vez melhor o seu trabalho.
Um grande abraço!
Exercícios Propostos
1) Qual a biblioteca da plataforma .NET que fornece a capacidade de
implementação de banco de dados nas aplicações em C#?
______________________________________________________________
______________________________________________________________
2) Descreva qual o papel do Datasource na implementação de banco de dados
com C#?
______________________________________________________________
______________________________________________________________
______________________________________________________________
Programação Aplicada – Microsoft .NET usando C# 147
SOCIESC – Sociedade Educacional de Santa Catarina
REFERÊNCIAS
GUNNERSON, E.; Introdução à Programação em C#. Ciência Moderna, 2001.
LIBERTY J.; Programando C#. Alta Books, 2006.
MSDN Academic Alliance. http://msdn.microsoft.com/academic/. Acessado em 14
de abril de 2007.
ROBINSON et al.; Profissional C#: Programando. Makron Books, 2004.
TURTSCHI , A. , WERRY, J. , HACK G.; C# .NET: Guia do Desenvolvedor:
Curso Completo. Alta Books, 2005.