Você está na página 1de 28

FACULDADE CENECISTA DE VARGINHA CURSO DE BACHAREL EM SISTEMAS DE INFORMAO RENAN ROBERTO OLIVEIRA DESENVOLVIMENTO DE UM E-COMMERCE EM ASP.

NET Varginha 2010 RENAN ROBERTO OLIVEIRA DESENVOLVIMENTO DE UM E-COMMERCE EM ASP.NET Trabalho de concluso de curso apresentado Faculdade Cenecista de Varginha como parte dos requisitos para obteno do grau de Bacharel em Sistemas de Informao.

Varginha 2010 RENAN ROBERTO OLIVEIRA DESENVOLVIMENTO DE UM E-COMMERCE EM ASP.NET Trabalho apresentado ao Curso de Bacharel em Sistemas de Informao da Faculdade Cenecista de Varginha como parte dos requisitos para concluso do curso. Submetida aprovao da banca examinadora composta pelos seguintes membros. _____________________________________ Prof. Rafael Rodrigues de Sousa - Orientador _____________________________________ Membro _____________________________________ Membro Varginha, 23 de Novembro de 2010 Primeiramente agradeo a Deus pela ddiva da vida. Agradeo tambm minha famlia pela compreenso e apoio ao longo deste curso. minha noiva pelo carinho. Aos meus colegas de curso. Agradeo tambm aos professores pelo apoio e esclarecimento das dvidas ao longo do curso. A arte de programar consiste em organizar e dominar a complexidade. " Edsger W. Dijkstra RESUMO Esta monografia tem por finalidade o desenvolvimento de um sistema de e-commerce usando a linguagem de programao c#, a plataforma ASP.NET com desenvolvimento em N camadas e o software Visual Studio 2010. O banco de dados utilizado nesta aplicao ser o SQLServer 2005, onde ser mostrado a criao e os relacionamentos das tabelas. Contudo, vamos explicar os seguintes conceitos: internet, e-commerce, ASP.NET e demais recursos utilizados para a criao da aplicao. Sero analisadas as funcionalidades

e a agilidade no desenvolvimento da aplicao das tecnologias utilizadas e tambm a facilidade de utilizao e manuteno do sistema. Desta maneira ser implementado um e-commerce com uma rea administrativa, onde ser gerenciada a incluso, excluso e edio de produtos, clientes, categorias, fabricantes e as vendas da loja virtual. O e-commerce ser realizado com o sistema de pagamento pronto para o PagSeguro, uma soluo completa para pagamentos online. Palavras-chave: E-commerce, ASP.NET, Aplicaes WEB. ABSTRACT This monograph aims to develop a e-commerce system using the C# programming language, the ASP.NET platform with N Layers development and Visual Studio 2010 software. The database used in this application is the SQLServer 2005, where it will show the creation of tables and relationships. However, we will explain the following concepts: Internet, e-commerce, ASP.NET and other resources used to create the application. You will analyze the functionality and flexibility in application development technologies used and also the ease of use and maintenance. Thus will be implemented an e-commerce with an administrative area, which will be managed the addition, deletion and editing products, customers, categories, manufacturers and sales shop. The e-commerce will be realized with the payment system ready for PagSeguro, a complete solution for online payments. Keywords: E-commerce, ASP.NET, WEB applications. SUMRIO 1. Introduo 10 2. Internet 11 2.1. O que internet? 11 2.2. Qual a origem da Internet? 12 2.3. Futuro da Internet 12 3. E-Commerce 14 3.1. Introduo 14 3.2. Vantagens e desvantagens do e-commerce 15 3.3. Por que investir num Comrcio Eletrnico ou e-commerce? 16 3.4. Por que comprar e vender pela internet? 18 4. ASP.NET e Conceito de Recursos utilizados 19 4.1. Introduo 19 4.2. Arquitetura da Plataforma .NET, Vantagens e Caractersticas 20 4.3. ASP.NET, HTML e C# 24 4.4. Vantagens do ASP.NET 26 4.5. Arquitetura n camadas 26 4.6. Entity Framework 28 4.7. Mtodos CRUD 32 4.8. Generics 33 4.9. Interface 34 4.10. Expresses Lambda 36 4.11. Herana 37 4.12. Programao Orientada a Objeto 38 4.13. Master Page 39 4.14. WebForms 40 4.15. Principais controles utilizados 41 4.16. SQL Server 43 5. A Aplicao e os recursos utilizados 46 5.1. Introduo sobre o sistema 46 5.2. Banco de Dados 46 5.3. Iniciando o Projeto no Visual Studio 48 5.4. Classes 50 5.5. Layout da Aplicao e Camada WEB 56 5.6. Camada Admin 61 5.7. Front-end e back-end do sistema 62

6. Consideraes Finais 67 7. Referncias Bibliogrficas 68 8. Anexos 69 Introduo Em todo o mundo, as empresas buscam novas formas de otimizar a produo, comercializao e distribuio dos seus bens e servios, de forma a garantir ganhos de produtividade e a reduo de custos, para competir no mercado globalizado. Com a globalizao da economia, outro fenmeno vem conquistando espaos em vrios pases, inclusive no Brasil: o Comrcio Eletrnico, uma forma de fazer negcios atravs do computador. As facilidades cada vez crescentes de acesso das diversas naes Rede Mundial de Computadores (Internet) tendem a transformar o Comrcio Eletrnico em uma das mais significativas portas de negcios. Portanto, esta monografia apresenta alguns conceitos sobre e-commerce e o desenvolvimento da aplicao na plataforma ASP.NET utilizando o desenvolvimento em N camadas, utilizando a linguagem C# e o Visual Studio 2010. Ser apresentado vrias ferramentas e recursos utilizadas no Visual Studio 2010 para a implementao do sistema. Internet 1. 2. O que internet? Segundo Ferreira (2000) a Internet tem revolucionado o mundo dos computadores e das comunicaes como nenhuma inveno foi capaz de fazer antes. A inveno do telgrafo, telefone, rdio e computador prepararam o terreno para esta nunca antes havida integrao de capacidades. A Internet , de uma vez e ao mesmo tempo, um mecanismo de disseminao da informao e divulgao mundial e um meio para colaborao e interao entre indivduos e seus computadores, independentemente de suas localizaes geogrficas. A Internet representa um dos mais bem sucedidos exemplos dos benefcios da manuteno do investimento e do compromisso com a pesquisa e o desenvolvimento de uma infra-estrutura para a informao. Comeando com as primeiras pesquisas em trocas de pacotes, o governo, a indstria e o meio acadmico tem sido parceiros na evoluo e uso desta excitante nova tecnologia. Hoje, termos como nome@nomedeempresa.com (ou nome@nomedeempresa.com.br, no caso do Brasil) e http://www.nomedeempresa.com (ou http://www.nomedeempresa.com.br, no caso do Brasil) so usados diariamente por milhes de pessoas. Nesta anlise, muitos de ns envolvidos com o desenvolvimento e a evoluo da Internet do suas vises sobre as origens e a histria da Internet. A histria envolve quatro aspectos distintos: * a evoluo tecnolgica que comeou com as primeiras pesquisas sobre trocas de pacotes e a ARPANET e suas tecnologias, e onde pesquisa atual continua a expandir os horizontes da infraestrutura em vrias dimenses como escala, desempenho e funcionalidade de mais alto nvel; * os aspectos operacionais e gerenciais de uma infra-estrutura operacional complexa e global; * o aspecto social que resultou numa larga comunidade de internautas trabalhando juntos para criar e evoluir com a tecnologia; * e o aspecto de comercializao que resulta numa transio extremamente efetiva da pesquisa numa infra-estrutura de informao disponvel e utilizvel. A histria da Internet complexa e envolve muitos aspectos - tecnolgicos, organizacionais e comunitrios. E sua influncia atinge no somente os campos tcnicos das comunicaes via computadores mas toda a sociedade, na medida em que usamos cada vez mais ferramentas online para fazer comrcio eletrnico, adquirir informao e operar em comunidade. Qual a origem da Internet? Segundo Ferreira (2000), no final dos anos sessenta uma diviso do Departamento de Defesa dos Estados Unidos (a Advanced Research Projects Administration - ARPA) desenvolveu a ARPANET, uma rede que uniu universidades e empreendedores de contratos de defesa de alta tecnologia. No

mbito desta rede foi desenvolvida a tecnologia TCP-IP para fornecer um protocolo padro para comunicaes na ARPANET. Nos anos oitenta a National Science Foundation - NSF criou a NSFNET para prover conectividade (atravs de redes de alta velocidade) para seus centros de supercomputao, bem como outros servios. A NSFNET adotou o protocolo TCP-IP e passou a prover um backbone (espinha dorsal ou alicerce) para desenvolver a INTERNET. Futuro da Internet Segundo Favaretto (2008), o correio eletrnico ou e-mail foi a primeira aplicao da Internet e continua com um valor inestimvel. O e-mail permite a comunicao entre duas ou mais pessoas de uma forma extremamente fcil. Pelo e-mail, podemos nos contactar com especialistas ou amigos em qualquer parte do mundo apenas com um clique do mouse. A web (ambiente multimdia da Internet) outra grande aplicao. Ela mudou a forma de fazer marketing, a forma de atender aos clientes, a forma de fazer negcios, a forma de educar, a forma de aprender. Isso fantstico! E a telefonia pela Internet diminui os custos das ligaes telefnicas absurdamente. Falando em ligaes telefnicas, a evoluo da Internet possibilita a telefonia pela Internet, a televiso e o cinema pela Internet. Uma nova gerao de tecnologias bsicas de rede que atenda s necessidades de acesso de alta velocidade surgir. "Novos modos de acesso e novas formas de servio geraro novas aplicaes que, por sua vez, expandiro ainda mais a Internet". Atendimento online com visualizao online, vdeo de alta qualidade, traduo de contedo para outros idiomas, pronturio eletrnico de pacientes com acesso descentralizado pela Internet, nfase na educao distncia em nvel de treinamento de cargos ou tutoriais de classes, pesquisas e eleies interativas, so exemplos de servios que encontraremos na Internet. Agora existem os ASP - Application Solution Providers, que so empresas especializadas no desenvolvimento de aplicaes para a Internet. O nmero de possveis aplicaes na Internet absolutamente infinito. Veja o sucesso no Brasil da entrega do Imposto de Renda pela Internet, tanto em termos de comodidade para a populao como em termos de reduo de custos para, no caso, o Governo. || Uma aplicao que temos grande interesse como cidados e internautas a votao eletrnica. J existe um projeto em andamento nos Estados Unidos que permitir que a populao vote em eleies pblicas de sua casa, pelo telefone ou pela Internet. Estique mais um pouco este conceito e veja que qualquer consulta poder um dia ser feita diretamente populao (isso demandar centros comunitrios com acesso Internet para as classes sociais menos favorecidas, sim!). Mas, claro, isso demandar infra-estrutura de telefonia, TV a cabo, rdio, eletricidade ou satlite. preciso que as empresas comerciais ligadas a estes segmentos invistam na infra-estrutura da Internet agora pensando num mercado futuro lucrativo. Ainda mais antecipando que os internautas esto cada vez mais trocando os seus modems de discagem para o provedor de acesso por alguma forma de conectividade permanente ou acesso dedicado, como modem a cabo, ADSL, satlite ou outros. E-Commerce 3. Introduo Shapiro e Varian (1999) falam que nas ltimas dcadas, a evoluo das tecnologias de informao e de transmisso de dados e a criao da internet marcaram uma nova fase do processo de globalizao da economia. Nesse novo cenrio aparece como grande inovao no mundo econmico, o comrcio eletrnico, possibilitando a realizao de operaes comerciais sem a definio exata do local de origem e destino. O Comrcio Eletrnico (CE) a realizao de toda a cadeia de valor dos processos de negcio num ambiente eletrnico, por meio da aplicao intensa das tecnologias de comunicao e de informao, atendendo aos objetivos de negcio. Os processos podem ser realizados de forma completa ou parcial, incluindo as transaes negcio-a-negcio, negcio-a-consumidor e intra-organizacional, numa infraestrutura predominantemente pblica de fcil e livre acesso e baixo custo. O CE tambm pode ser definido como a compra e a venda de informaes, produtos e servios por meio de redes de computadores. O conceito de CE engloba a realizao de toda a cadeia de valor dos processos de negcio num ambiente eletrnico, no se restringindo simplesmente realizao de transaes comerciais de compra e venda de produtos e servios. Algumas vezes, esta abrangncia no reconhecida e acaba-se tendo uma viso errnea e restrita de todo o potencial deste novo ambiente.

(Albertin, 2000). O e-commerce est mudando a forma de concorrer, a velocidade da atuao e a natureza da liderana, devido facilitao das interaes, dos produtos e dos pagamentos dos clientes para as empresas e das empresas para os fornecedores. O e-commerce, que chegou ao Brasil no ano de 2000, tornou-se um mercado prspero que cresce 40% a 50% ao ano. Os editores da revista acrescentam: O e -commerce, que em seu incio vendia livros e CDs, mudou nos ltimos anos. A cesta de produtos se expandiu e hoje as vendas esto muito ligadas sazonalidade. Vantagens e desvantagens do e-commerce Shapiro e Varian (1999, p. 68) apresentam algumas vantagens em trabalhar esse segmento de comrcio: * Em primeiro lugar, o aumento da competitividade e qualidade de servio, pois o acesso no restrito ao pblico local, e traz comodidade aos consumidores que podem acessar o sistema a qualquer hora e em vrios lugares. * Em segundo lugar, est a customizao em massa de produtos e servios personalizados, j que as empresas esto concentradas em obter as informaes necessrias de cada consumidor; * Em terceiro lugar, a economia substancial de custos e reduo de preos, ou seja, qualquer negociao envolvendo interaes rotineiras entre pessoas oferece a oportunidade de reduo nos custos, a qual pode ser repassada para os clientes. * Em quarto lugar, o comrcio eletrnico tambm oferece a oportunidade para produtos e servios inteiramente novos. Alm que, hoje em dia cada vez mais pessoas esto conectadas internet, assim os internautas esto comprando mais on-line, os consumidores esto aumentando sua freqncia de compras. De acordo com Shapiro e Varian (1999, p. 69) existem sete problemas referentes ao comrcio eletrnico: * O primeiro trata-se da globalizao, conforme os autores, as empresas podem negociar com clientes de todo o Mundo com uma enorme facilidade. Porm, a falta de informao pode dificultar a negociao. * O segundo aponta as questes tributrias. Considerando que o comrcio eletrnico pode ser um sistema gerador de novos negcios, ele ainda no possui uma legislao adequada, onde determinada uma tributao de impostos justa. * O terceiro trata da prioridade para os bens, que podem ser distribudos eletronicamente, e rapidamente copiados. * O quarto problema se refere privacidade e segurana. O comrcio eletrnico pode estar presente em redes abertas, onde o sistema pode no ser confivel. As principais preocupaes dos clientes em realizar transaes on-line so: fraude no carto de crdito; pagar por informaes antes gratuitas; falta de privacidade; intangibilidade e invisibilidade das empresas vendedoras. * O quinto trata da unificao dos provedores de acesso. Para alcanar o potencial mximo do comrcio eletrnico os provedores precisam estar unificados, desta maneira os usurios tero acesso universal a todos os produtos e servios disponibilizados na Internet. * O sexto aponta a falta de habilidade no uso do comrcio eletrnico. O conhecimento do sistema um fator essencial para o seu crescimento. E por fim, o stimo trata da logstica. Os autores ressaltam que, cabe a logstica observar as dificuldades nas operaes para que no ocorram falhas nos processos. Segundo OBrien (2001), existem vrios fatores que consolidam e ampliam o comrcio eletrnico. O autor afirma que cada empresa deve procurar formas e mtodos de atrair os seus clientes de modo online. Principalmente no desempenho e na eficincia do atendimento, da personalizao e na socializao. Ele ainda ressalta que para obter o sucesso, esses sites devem apresentar alguns diferenciais, como: * Qualidade e rapidez nos servios oferecidos; * Demonstrar aos clientes a sua importncia para a empresa; * Os sites devem ser atrativos e funcionais; * Os sites devem apresentar promoes, descontos ou cupons, que acabam atraindo os clientes a comprarem pela Internet; * Transmitir segurana e confiabilidade, para o cliente efetivar a compra pela Internet. Por que investir num Comrcio Eletrnico ou e-commerce?

Segundo Almeida (2007), a venda de produtos via Web uma maneira de ganhar dinheiro. Para as empresas que vendem produtos ou prestam de servios interessante investir no e-commerce para expandir os negcios da empresa? * O internauta brasileiro vem perdendo o medo de comprar pela Internet. E, por isso mesmo, este um bom momento para quem quer investir no comrcio online. Em 2004, foram gastos em lojas virtuais mais de 700 milhes, de acordo com o instituto. A promessa que esse mercado continue crescendo nos prximos anos e que as vendas de produtos e servios sejam a maior fonte de renda de 90% dos sites em dez anos, isto foi o que previu Elliot Maxwell, especialista e m e-commerce do Departamento do Comrcio dos Estados Unidos. Esses nmeros como podem ver j aumentou bastante, por exemplo a camara-e.net e a e-bit avaliam que o faturamento tenha alcanado R$ 585 milhes no perodo de 28 de setembro a 11 de outubro de 2010. A cifra representa aumento de 30% nas vendas para a data sazonal infantil. O tquete mdio das compras de R$ 350, impulsionada pela aquisio de videogames, mquinas digitais, computadores e notebooks. * Segundo o Relatrio WebShoppers elaborado pela e-bit o faturamento para o setor no primeiro semestre de 2010 foi de R$ 6,7 bilhes. Esse valor representa um aumento nominal de 40% em relao ao primeiro semestre de 2009, quando registrou R$ 4,8 bilhes. Como podem ver, em apenas seis meses de 2010, o valor de compras aumentou 10 vezes mais do que em 2004. * O ndice de Confiana do e-Consumidor atingiu, nos meses de julho e agosto, o ndice de 87,29%, o melhor desempenho desde fevereiro de 2009, quando comeou a ser divulgado, repetindo o recorde atingido em agosto do ano passado. O faturamento do comrcio eletrnico deve fechar 2010 com R$ 15 bilhes, contra R$ 10,8 bilhes, em 2009, e R$ 850 milhes, em 2001. * As categorias de produtos mais vendidas no 1 semestre do e-Commerce em 2010 que compuseram o Top Five foram: 1) Livros e assinaturas de revistas e jornais 2) Eletrodomsticos 3) Sade, beleza e medicamentos 4) Informtica 5) Eletrnicos J o Tquete Mdio referente s compras Online foi de R$ 379,00. 10 bons motivos para investir em uma loja virtual: 1. Baixo investimento 2. Alcance mundial ou 3. Comodidade - a loja nunca fecha trabalha de 4. Especialistas indicam que ser uma das principais fontes de dinheiro da Web. 5. As chances de calote so mnimas. 6. A fidelizao grande: se o cliente for bem atendido, voltar sempre. 7. Segurana clientes escolhem, compram, e recebem produtos sem sair de casa. 8. Facilidades - clientes encontram, rpida e intuitivamente, tudo que procuram. 9. Pagamento e financiamento pela integrao das lojas com o ambiente bancrio. 10. Baixo custo de manuteno. Por que comprar e vender pela internet? Segundo Junior (2007), o fato de a Internet ser uma ferramenta sem fronteiras territoriais, permite que um usurio qualquer, sentado diante da telinha de seu computador numa cidadezinha perdida no interior do Brasil, tenha acesso a sites localizados em qualquer outra parte do mundo sem sair de sua cadeira. Quando esses sites oferecem produtos e servios a preos acessveis ento, a Internet passa a ser um poderoso instrumento de compras. Alm de saber que existe uma infinidade de produtos disponveis com os quais aquele nosso usurio do interior antes s poderia sonhar, ele passa a t-los ao alcance das mos e, melhor, sem precisar se levantar daquela cadeira em frente ao computador, a no ser para abrir a porta para receblos! Resumindo, o comrcio on-line apresenta duas grandes vantagens como: a possibilidade de acesso a produtos antes difceis de serem encontrados, e a comodidade de adquiri-los sem sair de casa. Outra grande vantagem das lojas virtuais que elas no necessitam de espao fsico e funcionrios, diminuindo custos. Alm disso, esto abertas 24 horas por dia e oferecem servios personalizados de acordo com o perfil do consumidor. Elas tambm podem existir como servio complementar de uma rede de lojas ou servios j existentes ou somente na Internet.

ASP.NET e Conceito de Recursos utilizados 4. Introduo Segundo Payne (2001), ASP.NET (Active Server Pages.NET) compe a forma de se criar pginas da Internet utilizando-se a plataforma .NET. Esta plataforma prov uma srie de servios, atravs de classes existentes no Microsoft .NET Framework. Com ele, possvel a construo no apenas de pginas Web, mas tambm, de aplicativos desktop, aplicativos para dispositivos mveis, objetos de negcios, web services, etc. Pode-se dizer que a plataforma .NET similar plataforma Java, que tambm oferece diversos servios. Dentre suas principais diferenas, destacam-se as seguintes caractersticas: a plataforma Java utiliza a linguagem de programao Java e seus aplicativos so hbridos (compilados e interpretados, caracterstica que permite que os aplicativos sejam multi-plataforma); enquanto que em .NET, pode-se utilizar Visual Basic.NET, C++, JScript.NET ou C# (que estar sendo utilizada neste curso), e os aplicativos gerados so compilados em uma linguagem chamada MSIL (Microsoft Intermediate Language). No caso das pginas ASP.NET, sua compilao realizada no momento em que elas so chamadas pela primeira vez atravs do browser, que apresenta o contedo final em HTML (Hypertext Markup Language). A execuo de pginas ASP.NET requer a utilizao do IIS (Internet Information Server), alm da instalao do .NET Framework SDK. As pginas ASP.NET podem ser escritas utilizando-se editores de textos planos, tal como Bloco de Notas e Vi. Porm, existem vrias ferramentas que auxiliam o desenvolvimento de pginas ASP.NET. Algumas das ferramentas de maior destaque so: * Microsoft ASP.NET Web Matrix - um software especfico para construo de aplicativos para a Web que utilizam a plataforma .NET. bastante leve (1,3 Mb), apesar de prover muitos recursos de desenvolvimento. uma ferramenta gratuita, podendo ser baixada em http://www.asp.net/webmatrix/. * Macromedia Dreamweaver MX seguindo a tradio de suas verses anteriores, este software suporta vrias tecnologias (ASP, ASP.NET, JSP, PHP, CSS, Java, XML, entre outras). Uma verso para teste pode ser encontrada em http://www.dreamweaver.com. * Microsoft Visual Studio .NET considerado pela Microsoft, o seu principal ambiente de desenvolvimento, suportando a criao de solues baseadas na plataforma .NET, incluindo-se aplicativos desktop, ASP.NET, web services, classes, aplicativos para dispositivos mveis, entre outros. Sua pgina na Internet http://msdn.microsoft.com/vstudio/. Arquitetura da Plataforma .NET, Vantagens e Caractersticas A Figura 1 mostra a arquitetura da plataforma .NET, mais precisamente o .NET Framework. Basicamente segundo Payne (2001), as famlias de linguagens .NET so compiladas em uma linguagem intermediria chamada Intermediate Language (IL), de acordo com a Common Language Specification (CLS). Os dois principais tipos de desenvolvimento de aplicao so Winforms (aplicaes Windows) e WebForms (Aplicaes Web). O Visual Studio .NET no necessrio para desenvolver aplicaes .NET, embora o VS.NET oferea uma extensiva arquitetura que o torna ideal para o desenvolvimento de aplicaes .NET. Figura 1 Arquitetura da plataforma .NET Fonte: Elaborada pelo prprio autor Essa arquitetura oferece inmeras vantagens, sendo a maior delas uma API (Application Programming Interface ou Interface de Programao de Aplicaes) consistente. Escrevendo para o CLR(Common Language Runtime) e usando a BCL(Base Class Library), todos os servios de aplicao esto disponveis atravs de um modelo comum de programao, orientado a objetos. Hoje, algumas funes do sistema operacional so acessadas por meio de chamadas DLL usando a API baseada em C e outros recursos so acessados atravs de objetos COM, permitindo que o desenvolvedor construa a base necessria para fazer tudo funcionar de maneira harmoniosa. De conceito similar ao Java Virtual Machine, o CLR um ambiente de runtime que executa cdigo IL. Diferentemente do ambiente Java, que o conceito de linguagens para todos os efeitos, a plataforma .NET suporta mltiplas linguagens de programao. Todo cdigo visando a plataforma .NET

chamado de cdigo gerenciado. Isso significa simplesmente que a execuo do cdigo e o seu gerenciamento so gerenciados pelo CLR. A BCL uma rica biblioteca de classes que permite ao desenvolvedor extrair todos os recursos da plataforma .NET em tempo de execuo. As classes contidas na BCL esto organizadas em namespaces. Um namespace contem classes bases e fundamentais que definem tipos de dados por valor, tipos de dados por referncia, eventos, interfaces, atributos e processamento de excees. Outras classes oferecem suporte a converso de tipos de dados, mtodos para a manipulao de parmetros, mtodos para a manipulao de operaes matemtica, entre outras. Esse novo modelo de programao simplifica enormemente os esforos que eram necessrios quando se escreviam aplicaes Win32 e COM. Hoje, o desenvolvedor no precisa mais ser gurus da arquitetura Windows ou COM. Outra grande vantagem para os desenvolvedores .NET o modelo para tratamento de erros atravs de excees. Desenvolver software para a plataforma Windows sempre significou ser atrado para as prprias inconsistncias dessa plataforma, particularmente no modo como os erros eram retornados. No .NET, todos os erros so reportados atravs de excees, o que simplifica ao extremo a escrita, a leitura e a manuteno de cdigo. O .NET Framework foi desenvolvido para suportar mltiplas linguagens: * Mais de 20 linguagens j suportadas * Microsoft fornece as linguagens VB.NET, C#, J#.NET, Jscript.NET * Independncias de plataforma e dispositivos Vantagens do suporte a mltiplas linguagens: * Reusabilidade * Linguagem certa para a tarefa certa * Diferena insignificante em relao a performance Suas principais caractersticas so: * Integrao total e completa entre diversas linguagens: * Suporte para herana entre linguagens * Tratamento de excees * Debugging simultneo * Um motor Runtime partilhado por todas as linguagens * Gesto de memria realizada pelo Runtime e no pelo programador * Biblioteca de classes que disponibilizam (virtualizam) toda a API do SO, consistente em todas as linguagens * Um modelo de distribuio das aplicaes simplificado * Acabaram os registros. Controle automtico de verses e suporte para coexistncia de vrias verses da mesma DLL Facilidade no uso: * Modelo orientado a objetos * Tudo um objeto * Estrutura de namespaces * Fcil de compreender e utilizar * O namespace reflete a funcionalidade dos componentes * Possibilidade de escolha * A linguagem em que voc melhor se adapta * A ferramenta de desenvolvimento que voc mais se adapta * As funcionalidades e features que voc quiser Vantagens do .NET * Estabilidade * O fim dos memory leaks * O garbage collector gerncia a memria * Os assemblys eliminam problemas de compatibilidade * Contedo e acesso restrito ao assembly * Segurana * Restringe o acesso a memria (a operao ilegais) * Modelo de segurana compreensvel * A nvel de assembly * A nvel de sistema * Inspeo de cdigos atravs de MISL * Distribuio e gerenciamento

* Distribuio: O cdigo compilado e roda em ambiente seguro * Manuteno: A manuteno de verses simplificada * Webservices * Solues para Web com qualquer arquitetura * Em qualquer lugar * Em qualquer hora * Em qualquer dispositivo Figura 2. Desenvolvimento em .NET Fonte: Elaborada pelo prprio autor ASP.NET, HTML e C# Segundo Payne (2001) as pginas ASP.NET produzem arquivos de extenso .aspx. Normalmente, elas so divididas em duas sees principais: HTML e, no nosso caso, C# (C Sharp). Assim, o cdigo C# colocado dentro do elemento script, antes do cdigo HTML propriamente. necessrio ainda, que seja explicitada a linguagem que est sendo utilizada, o que feito com uso da diretiva Page Language, que adicionada no incio do cdigo da pgina. Um exemplo simples de uma pgina ASP.NET o seguinte: 1. 1. Figura 3. Diviso do cdigo de uma pgina ASP.NET Fonte: Aprenda em 21 Dias ASP.NET, 2001 Nota-se, que o elemento script possui um atributo runat, que possui o valor server. Isto significa que todo o contedo deste elemento estar sendo executado no servidor [Payne 2001]. Isto necessrio pelo fato de ser o servidor, o lugar onde est instalado o .NET framework (o cliente no necessariamente o ter instalado). A linguagem C# possui muitas semelhanas com as linguagens C, C++ e Java. Assim, o cdigo case-sensitive (existe diferena entre letras maisculas e minsculas), e declaraes de variveis, operadores e estruturas de controle so utilizados praticamente da mesma maneira que nestas linguagens. Por exemplo, para se declarar uma varivel do tipo inteiro, basta escrever o seguinte: int variavel; A forma do cdigo ASP.NET se comunicar com o cdigo HTML atravs de funes que so invocadas por controles de servidor (que sero visto adiante, em detalhes), por meio do evento onclick. Outra forma desta comunicao acontecer ocorre no momento em que a pgina carregada, por meio da funo Page_Load. 5. 6. 7. 8.1. 8.2. 8.3. Vantagens do ASP.NET Segundo Figueredo (2010), ASP.NET possui muitas vantagens em relao a outras plataformas de desenvolvimento de aplicaes Web. Dentre as muitas vantagens existentes, duas se destacam: total integrao com servidores Windows e ferramentas de programao. Aplicaes Web criadas com ASP.NET so fceis de criar e distribuir, pois todas essas tarefas so automatizadas com o Visual Studio.NET. A seguir, outras vantagens do ASP.NET em relao a outras plataformas de desenvolvimento de aplicaes Web: * Cdigo compilado; * Distribuio da aplicao sem a necessidade de se reiniciar o servidor; * Acesso ao .NET Framework, que simplifica em muitos aspectos a programao para Windows; * Integrao com o ADO.NET para acesso a banco de dados e criao de banco de dados dentro do Visual Studio.NET; * Suporte total a XML, CSS e outros padres;

Arquitetura n camadas Segundo Macoratti (2010), as trs partes de um ambiente modelo trs camadas so: camada de apresentao, camada de negcio e camada de dados. Deve funcionar de maneira que o software executado em cada camada possa ser substitudo sem prejuzo para o sistema. De modo que atualizaes e correes de defeitos podem ser feitas sem prejudicar as demais camadas. Por exemplo: alteraes de interface podem ser realizadas sem o comprometimento das informaes contidas no banco de dados. * Camada de apresentao - a chamada GUI (Graphical User Interface), ou simplesmente interface. Esta camada interage diretamente com o usurio, atravs dela que so feitas as requisies como consultas, por exemplo. * Camada de negcio(BLL Business Logic Layer) - Tambm chamada de lgica empresarial, regras de negcio ou funcionalidade. nela que ficam as funes e regras de todo o negcio. Inexiste uma interface para o usurio e seus dados so volteis, ou seja, para que algum dado seja mantido deve ser utilizada a camada de dados. * Camada de BD(DAO Data Access Object) - A terceira camada definida como o repositrio das informaes e as classes que a manipulam. Esta camada recebe as requisies da camada de negcios e seus mtodos executam essas requisies em um banco de dados. Alterando o banco de dados alteraria apenas as classes da camada de dados, e o restante das camadas no seriam afetados por essa alterao. Na figura 5 abaixo mostrado como feita a comunicao entre as camadas e a comunicao com o entity framework. Tanto a camada de dados e a camada de negcios acessa o entity framework, no entanto quem acessa a fonte de dados apenas a camada DAO atravs do entity framework. Figura 5. Comunicao entre as camadas Fonte: Elaborada pelo prprio autor Entity Framework Segundo Macoratti (2010), nesse sistema de e-commerce utilizado o Entity Framework - EF, que um conjunto de tecnologias da ADO .NET que suporta o desenvolvimento a aplicaes orientadas a dados. Arquitetos e desenvolvedores de aplicaes orientadas a dados tem se debatido com a necessidade de alcanar dois objetivos distintos: * Modelar entidades, relacionamentos e problemas da lgica de negcio; * Trabalhar com sistemas de armazenamento de dados para armazenar e consultar informaes; O problema que os dados podem estar distribudos em mltiplos sistemas de armazenamentos, cada um com suas particularidades e protocolos e mesmo em situaes no qual somente um nico sistema de armazenamento usado ainda a existe a necessidade de balancear os requisitos de armazenamento com os requisitos de escrever um cdigo eficiente. O Entity Framework - EF, permite aos desenvolvedores trabalhar com dados na forma de propriedades e objetos especficos do domnio como clientes e produtos, etc, sem ter que relacion-los com as tabelas do banco de dados e as colunas onde os dados esto armazenados. Isto possvel pela elevao do nvel de abstrao no qual os desenvolvedores podem trabalhar quando esto tratando com os dados e pela reduo do cdigo que necessrio para manter as aplicaes orientadas a dados. O Entity Framework um componente da .NET Framework 3.5 e pode ser usado em qualquer ambiente no qual estejam instalados o .NET Framework 3.5 com Service Pack 1. O Entity Framework renova o modelo conceitual permitindo que os desenvolvedores consultem entidades e relacionamentos neste modelo enquanto contam com o suporte da Entity Framework para traduzir estas operaes para comandos especficos da fonte de dados liberando as aplicaes das dependncias de cdigo especficas de uma fonte de dados particular. Um padro muito usado para modelagem de dados divide o modelo de dados em 3 partes: * O modelo Conceitual - Define as entidades e relacionamentos do sistema modelado; * O modelo Lgico - Normaliza as entidades relacionamentos entre as tabelas com chaves primrias e constraints para os banco de dados relacionais; * O modelo Fsico - Anlise e aplica as capacidades de um sistema de armazenamento especfico definindo detalhes de armazenamento como particionamento e indexao; O modelo conceitual, o modelo de armazenamento e o mapeamento entre os dois so expressos em uma especificao externa chamada de Entity Data Model-EDM.

O Entity Data Model um modelo de dados Entidade-Relacionamento cujo conceito central so as entidades e os relacionamentos, onde Entidades so instncias de Tipos de entidades como Cliente, Produto, Categoria as quais so estruturas de registros com uma chave. Um Chave de Entidade formada a partir de um subconjunto de propriedades do Tipo da entidade. A chave (clienteID, ProdutoID, etc) um conceito fundamental para identificar de forma nica , atualizar instncias e permitir que as instncias de entidades participem nos relacionamentos. Alm do Entity Data Model , o Entity Framework inclui servios que incrementam o poder do modelo incluindo o provedor gerenciado EntityClient, ObjectServices e LINQ to Entities conforme mostrado na figura abaixo: Figura 6. Outros servios do Entity Framework Fonte: (Em: http://www.macoratti.com.br. Acesso em: 05 nov.2010) Object Services um componente do Entity Framework que permite que voc realize consultas, incluses, atualizaes e excluses de dados , expressos como um objetos CLR fortemente tipados que so instncias de tipos de entidades. O Object Services da suporte a consultas LINQ e Entity SQL contra tipos que so definidos em um EDM. O Object Services tambm materializam os dados retornados como objetos e propagam as alteraes dos objetos de volta a fonte de dados, alm de fornecer facilidades para tratar alteraes, vinculao de controles a objetos e efetuar o tratamento da concorrncia. Obs: Entities so instncias de Entity types e representam instncias individuais de objetos (Clientes, Produtos) Um Entity Data Model - EDM definido pelos seguintes arquivos de modelo e mapeamento: * Arquivo de definio de schema conceitual - ( .csdl ) - define o modelo conceitual; * Arquivo de definio schema de armazenamento - ( .ssdl ) - Define o modelo de armazenamento que tambm chamado de modelo lgico; * Arquivo de especificao de mapeamento - ( .msl ) - Define o mapeamento entre os modelos conceitual e de armazenamento; Abaixo temos as camadas do Entity Data Model e o seu relacionamento : Figura 7. Camadas do Entity Data Model Fonte: (Em: http://www.macoratti.com.br. Acesso em: 05 nov.2010) O Entity Framework utiliza estes modelos baseados em XML e arquivos de mapeamento para transformar operaes de criar, ler, atualizar, e deletar contra entidades e relacionamentos no modelo conceitual para operaes equivalentes na fonte de dados. Mais do que um outra soluo de mapeamento objeto relacional o Entity Framework esta fundamentado na capacidade de permitir que aplicaes acessem e alterem dados que esto representados como entidades e relacionamentos no modelo conceitual. O Entity Data Model-EDM ento usado para traduzir consultas de objetos contra tipos de entidades que so representados no modelo conceitual em consultas especficas da fonte de dados. O EF fornece as seguintes formas de consultar um EDM e retornar objetos: * LINQ to Entities - Fornece suporte as consultas LINQ para consultar tipos de entidades que so definidos no modelo conceitual; * Entity SQL - Uma dialeto SQL independente que trabalha diretamente com as entidades no modelo conceitual que suporta as caractersticas EDM como herana e relacionamento; * Mtodos Query Builder - Permitem a construo de consultas Entity SQL usando o estilo de mtodos de consulta LINQ; O Entity Framework tambm inclui um provedor de dados EntityClient que gerencia conexes, traduz consultas de entidades em consultas especficas da fonte de dados e retorna um leitor de dados que os Servios de Objeto usam para materializar os dados de entidades em objetos. Quando a materializao em objetos no necessria o provedor EntityClient tambm pode ser usado como um provedor de dados ADO .NET padro permitindo que aplicaes executem consultas Entity SQL e consumam os dados retornados como um leitor somente-leitura. A Entity SQL uma variao da SQL e foi criada com objetivo de escrever consultas declarativas e atualizaes sobre entidades e relacionamentos de entidades no nvel conceitual. A Entity SQL vai alm da SQL pois da suporte aos seguintes recursos: * Types, que so como entidades ADO.NET , totalmente tipados;

* EntitySets, que so tratados como uma coleo de entidades; * Composability, que remove restries onde as sub-consultas podem ser usadas; Junto com o runtime do Entity Framework a plataforma .NET 3.5 SP1 inclui um gerador Entity Data Model (EdmGen.exe); um utilitrio de linha de comando que se conecta com a fonte de dados e gera um EDM baseado em um mapeamento um-para-um entre entidades e tabelas. Ela tambm usa o arquivo de definio de modelo conceitual (.csdl) para gerar uma camada de objeto que contm classes que representam tipos de entidades e o ObjectContext. A partir do Entity Framework poderemos fazer mapeamento para bases de dados como SQLServer, Oracle, DB2, MySql, PostgreSQL, SQLite, VistaDB, Informix, Sybase, etc, bem como para outras fontes como XML, Texto e outros servios. Mtodos CRUD Segundo Macoratti (2010), a primeira classe criada na aplicao so os mtodos CRUD. O acrnimo CRUD utilizado freqentemente para definir as quatro operaes bsicas de um banco de dados. Seu significado C(reate)R(etrieve)U(pdate)D(elete), ou melhor , so os comandos: INSERT, SELECT, UPDATE e DELETE. Tais comandos esto presentes na linguagem SQL(Structured Query Language) que uma linguagem declarativa. A linguagem SQL subdividida em 3 partes: DML, DDL e DCL. Os comandos acima citados esto presentes na subdiviso DML(Data Manipulation Language). Portando implementado os mtodos: * Select - O comando SELECT, sem dvida, o comando mais utilizado em qualquer sistema de banco de dados relacional. Atravs dele consegui-se manipular grandes massas de dados a nvel de consulta. * Insert - O comando INSERT serve para inserir um registro em alguma tabela de um banco de dados. Todos os campos no nulos devem ser informados os demais so de carter facultativo. * Update - O comando UPDATE serve para realizar a alterao de algum registro j inserido em alguma tabela de um banco de dados. * Delete - O comando DELETE apaga um determinado registro em uma dada tabela Generics Segundo Macoratti (2010), quando olhamos para o termo "genrico", sem relao com o mundo da programao, isso significa simplesmente algo que no est vinculado a qualquer tipo de marca. Por exemplo, quando compramos algum remdio genrico na farmcia, sabemos para qual enfermidade o remdio pode nos ajudar, mesmo que no seja o rmerio de marca e no sabemos ao certo se ele contm realmente as mesmas propriedades do remdio de marca, temos certeza que ele ajudar em nossa enfermidade. Pense no generics dessa maneira. Podemos nos referir a uma classe, onde no precisamos for-la a estar relacionada a nenhum tipo especfico, mas ainda podemos executar o trabalho com ele de uma maneira segura. Um exemplo perfeito do que ns precisaramos no generics lidar com colees de itens (inteiros, strings, Ordens, etc.) Ns podemos criar uma coleo genrica do que podem lidar com qualquer tipo de forma genrica e Type-Safe. Por exemplo, podemos ter uma classe nica matriz que podemos usar para armazenar uma lista de usurios ou at mesmo uma lista de produtos, e quando us-lo, seremos capazes de acessar os itens na coleo diretamente como uma lista de Usurios ou produtos, e no como objetos. Atualmente, se quisermos lidar com nossos tipos de uma forma genrica, temos sempre necessidade de lan-los para um System.Object, e ns perdemos todo o benefcio de uma experincia de desenvolvimento ricos digitada. Por exemplo, eu tenho certeza que a maioria de ns esto familiarizados com a classe System.Collection.ArrayList no Framework v1 e v1.1. Se voc j usou ele em tudo, voc vai notar algumas coisas sobre ele: 1. Ela exige que voc guarde tudo na mesma como um objeto int pblico virtual Add (valor do objeto); objeto virtual pblico presente [int index] {get; set;} 2. Voc precisa para levantar a fim de obter o objeto de volta para o tipo atual 3. O desempenho realmente carente, especialmente quando a iterao com foreach () Abaixo est um exemplo simples do que uma classe genrica:

public interface IBaseCRUD<T> { void Add(T pEntity); void Delete(T pEntity); } Ouvir Ler foneticamente Dicionrio - Ver dicionrio detalhado 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. Interface Segundo Macoratti (2010), uma interface como uma classe, mas todos os mtodos e propriedades so abstratos. An Interface cannot be instantiated like abstract class. Uma interface no pode ser instanciada como classe abstrata. All the methods and properties defined in Interface are by default public and abstract. Todos os mtodos e as propriedades definidas na interface so pblicos por padro e abstrato. Interface generally refers to an abstraction that an entity provides of itself to the outside.Interface geralmente se refere a uma abstrao que uma entidade proporciona, por si s para o exterior. Interface can help in separating the methods for external and internal communication without effecting in the way external entities interact with the type.. Interface pode ajudar a separar os mtodos de comunicao externa e interna sem afetar de forma interagir com entidades externas do tipo Interfaces so um conceito comum em programao orientada a objetos. Uma interface um dispositivo ou sistema que entidades independentes usam para interagir. According to this definition, a remote control is an interface between you and a television set, the English language is an interface between two people, and the protocol of behavior enforced in the military is the interface between people of different ranks. Segundo esta definio, um controle remoto uma interface entre voc e um aparelho de televiso, o idioma Ingls uma interface entre duas pessoas, e o protocolo do comportamento aplicada no servio militar a interface entre pessoas de diferentes classificaes. Within [an object-oriented] ... Dentro de programao orientada a objetos, uma interfaceis a device that unrelated objects use to interact with each other. um dispositivo que objetos no relacionados usam para interagir uns com os outros. An interface is probably most analogous to a protocol (an agreed on behavior). Uma interface provavelmente o mais parecido com um protocolo (um acordo sobre o comportamento). Voc pode usar uma interface para definir um protocolo de comportamento que pode ser implementada por qualquer classe em qualquer lugar na hierarquia de classe. Interfaces are useful for the following: Interfaces so teis para o seguinte: * Capturing similarities among unrelated classes without artificially forcing a class relationship.Capturando semelhanas entre classes no relacionadas sem artificialmente forar uma relao de classe. * Declaring methods that one or more classes are expected to implement.Declarando mtodos que uma ou mais classes devem implementar. * Revealing an object's programming interface without revealing its class.Revelando interface de programao de um objeto sem revelar a sua classe. Escrever uma interface rpida e fcil, como mostra o cdigo abaixo: using System; namespace Demo.WithInterfaces Demo.WithInterfaces namespace {{ /// <summary> / / / <summary> /// Summary description for ISection. / / / Description Resumo para ISection.

/// </summary> / / / </ Summary> public interface ISection ISection interface pblica {{ string GetData { get; } GetData seqncia {get;} void ClearFields(); void Clearfields (); } //end of interface } / / Fim da interface } //end of namespace } / / Fim do namespace Esse cdigo cria uma interface denominada ISection . Observe como apenas como arquivos de classe regular, comea uma interface com os namespaces que ele usa, e pode-se ser envolvido em um namespace. However it differs from a class by using the interface keyword instead of the class keyword, and by having a body that is only a list of signatures without any actual implementation. No entanto, difere de uma classe usando a interface palavra-chave em vez da class de palavras-chave, e por ter um corpo que apenas uma lista de assinaturas, sem qualquer aplicao real. This particular interface declares a read-only property named GetData that returns a string, and a method ClearFields() . Essa interface especial declara uma propriedade somente leitura chamado GetData que retorna um string, e um mtodo ClearFields() . Although an interface is similar to a base class, it is also very different. Apesar de uma interface ser semelhante a uma classe base, so muito diferentes. They are similar in that: Elas so semelhantes em que: * Both provide structure to another class that uses themAmbos fornecem uma estrutura para outra classe para poderem ser utilizadas * Both can be used for polymorphismAmbos podem ser usados para o polimorfismo Interfaces are different than base classes in that Interfaces so diferentes de classes base em que: * A class can inherit only one base class, but it can implement many interfacesUma classe pode herdar apenas uma classe base, mas pode implementar vrias interfaces * A base class can contain implementation, an interface cannotUma classe base pode conter execuo, uma interface no pode * Interfaces can only contain Methods, Properties, Indexers, and Events.Interfaces s pode conter mtodos, propriedades, indexadores e eventos. They cannot contain fields or constants (which are used for implementation) Eles no podem conter campos ou constantes (que so utilizadas para a execuo) Segundo Richter (2005), interfaces derivam de nenhum tipo derivado de system.object. Uma interface simplesmente um tipo abstrato que consiste em um conjunto de mtodos virtuais, cada um com seu prprio nome, parmetros e tipo de retorno. Os mtodos de interface no podem conter nenhuma implementao: da, os tipos por interface serem incompletos (abstratos). Por conveno, o nome de um tipo de interface prefixado com um I mausculo. Herana de interface significa que um tipo herda as assinaturas dos mtodos de suas interfaces, mas no suas implementaes. Quando um tipo herda uma interface, ele se compromete a fornecer aos mtodos suas prprias implementaes; se o tipo no implementa os mtodos da interface, ele considerado abstrato e no ser possvel construir uma instncia do tipo. Expresses Lambda Segundo Macoratti (2010), as expresses lambda foram includas no VS/VB 2008 para dar suporte a consultas LINQ. As clusulas Where so assim compiladas como expresses lambdas e chamadas em itens aplicveis do seu dataset. Podem ser consideradas uma forma de delegate que pode passar ou retornar outra funo. No LINQ as expresses lambda so usadas para realizar aes sobre listas de objetos e com extenses de mtodos. No LINQ as expresses lambda so a base de muitos operadores usados nas consultas padro. O compilador cria expresses lambda para capturar os clculos definidos nos mtodos fundamentais de consulta como Where, Select, Order By, Take While, e outros. As expresses Lambda usam o operador =>. O lado esquerdo do operador lambda especifica os parmetros de entrada e o lado direito especifica a expresso. Por exemplo, a expresso Lambda x=>x*x.Veja o exemplo abaixo: int highScoreCount = scores.Where(n => n > value).Count();

Como resultado dessas restries e das maneiras pelas quais as expresses lambda so usadas, elas geralmente so simples , curtas e pouco complexas. Herana Segundo Vicente (2003), comum haver similaridades entre diferentes classes. Frequentemente, duas ou mais classes iro compartilhar os mesmos atributos e/ou mtodos. Como nenhum de ns deseja reescrever vrias vezes o mesmo cdigo, seria interessante se algum mecanismo pudesse tirar proveito dessas similaridades. A herana esse mecanismo. Por intermdio da herana, possvel modelar relacionamentos do tipo ou semelhante, o que nos permite r eutilizar rotinas e dados j existentes. Uma subclasse herda as propriedades de sua classe-me; uma subclasse herda as propriedades das subclasses e assim por diante. Uma subclasse pode herdar a estrutura de dados e os mtodos, ou alguns dos mtodos, de sua superclasse. Ela tambm tem mtodos e s vezes, tipos de dados prprios. * Subclasse uma classe que um subtipo de uma ou mais classes (denominadas superclasses). Como tal, ela herda todas as caractersticas de suas superclasses. Em outras palavras, todas as caractersticas de uma classe so reusveis por suas subclasses. Se a classe B herda de A, ento dizemos que B uma subclasse de A. * Superclasse Uma classe que um supertipo de uma ou mais classes (tb chamadas de subclasses). Como tal, ela uma classe a partir da qual todas as suas caractersticas so herdadas por suas subclasses. Em outras palavras, todas as caractersticas de uma superclasse so reusveis por aquelas classes que so seus subtipos. Se a classe B herda de A, ento dizemos que A uma superclasse de B. Quando uma classe herda caractersticas somente de uma outra classe, dizemos que esta uma herana simples. Quando uma classe herda de duas ou mais classes, temos um caso de herana mltipla. Em qualquer circunstncia, o fato que voc dever lembrar o seguinte: a subclasse herda todos os atributos e mtodos das superclasses. Temos um grande nmero de vantagens ao utilizar este conceito de POO, uma delas a fcil manuteno: caso se tenha que alterar/adicionar/remover uma propriedade na classe base, essa alterao refletida de forma automtica em todas as classes que herdam da classe base. Torna-se tambm mais rpido e eficiente adicionar novas classes que herdem da classe base, pois j existem nela implementadas muitas das funcionalidades bsicas bem como as propriedades partilhadas que so transversais famlia de classes. Programao Orientada a Objeto Essa aplicao de e-commerce foi desenvolvida baseada em programao orientada a objeto. Veja algumas das vantagens da POO: * Alta capacidade reutilizao de cdigo * Facilidade de Documentao * Processo claro de retro-compatibilidade * Facilidade manuteno do cdigo * Maior agilidade na distribuio e organizao de equipes de trabalho Etc. Segundo Sintes (2002), objeto uma entidade encapsulada que possui propriedades e protocolos de acesso bem definidos. Orientao a objetos: * Orientao : 1. Ato ou efeito de orientar-se. 2. Direo, guia. 3. Impulso, tendncia. * Objeto : 1.Tudo que perceptvel por qualquer um dos sentidos. 2. Coisa, pea, artigo de compra A programao Orientada a Objetos (O.O.) uma tentativa de representao do mundo real na forma de linguagem de programao. A Orientao a Objeto exige que: * Mudana na forma de programar. * Mudana na forma de ver o problema. * Mudana de paradigma para quem vem com os conceitos da programao estruturada. * No se poder ver em partes pequenas e separar em pequenas funes (procedures), preciso ter uma viso do todo. O objeto uma entidade encapsulada que possui propriedades e protocolos de acesso bem definidos. A O.O. Exige uma pr-analise do problema como um todo. Identificao objetos que compem o

problema, bem como as relaes que existem entre eles (atributos e protocolos de acesso). Em seguida vem a codificao deste objetos em forma de classes. * Classe: a receita para a criao do objeto (o programa que origina o objeto, receita do bolo). * Objeto: a 'materializao' da classe dentro do computador (tambm chamado de instncia, o bolo propriamente dito) Master Page Segundo Lotar (2007), desde o Visual Studio 2005, ASP.NET suporta herana de pginas visuais. Este recurso similar a herana de formulrios utilizada em aplicaes Windows. Com o ASP.NET, voc pode criar uma pgina master contendo todos os principais elementos usados pelas pginas de seu Web site. Master page um recurso que permite criar templates pr-definidos para criao do layout de um website ou aplicao web-based, o que facilita em muito o desenvolvimento, uma vez que no necessrio repetir os passos de desenho da aplicao em cada uma das pginas. A maior vantagem na hora da manuteno, agora voc no precisa mais sair modificando pgina a pgina como era antes, basta alterar a MasterPage que todas as pginas referenciadas a ela receber automaticamente, sem dor de cabea. WebForms Segundo Lotar (2007), os formulrios da Web constituem a principal forma de interao entre o usurio e uma pgina Web. Dentro deles, esto contidos recursos para captao de dados, tais como caixas de texto, caixas de listas e botes. sobre estes controles que, geralmente, so realizadas as operaes que caracterizam uma pgina dinmica (aquela que no apenas exibe informaes estticas, mas permitem interaes e realizam algum processamento). Com a tecnologia ASP.NET, possvel construir aplicativos Web com facilidades semelhantes s da construo de aplicativos desktop, com Delphi ou C++ Builder, por exemplo. Ou seja, possvel acessar o contedo dos componentes dos formulrios e associar eventos ao cdigo (no nosso caso, em C#). Em se tratando de aplicativos Web, esta tarefa era permitida apenas por JavaScript, que por outro lado, no constitua, isoladamente, um recurso para comunicao com um servidor, outra caracterstica tambm oferecida por ASP.NET. ASP.NET suporta o uso de elementos HTML, desde que possuam o atributo runat= server , passando a serem chamados de controles de servidor HTML. Isto se deve ao fato de ASP.NET ser baseada no servidor, caso contrrio, ele no poderia enxergar os controles. Os controles normalmente possuem atributos, especficos para cada um, que permitem sua alterao de vrias formas. Como estes controles so, na verdade, alguns dos elementos HTML, eles no sero apresentados aqui, mas podem ser encontrados nas ferramentas de desenvolvimento. Existem ainda, os controles de servidor da Web, que so semelhantes aos controles de servidor HTML. Eles foram criados para serem utilizados especificamente por pginas ASP.NET e podem representar elementos de interface mais complexos, tal como calendrios. Sua utilizao feita da seguinte maneira: <asp:NomeDoControle id=nome runat=server> Eles podem possuir vrios outros atributos, dependendo do tipo de controle e da necessidade do desenvolvedor. Estes controles so colocados no cdigo entre as tags do cdigo HTML, dentro de um formulrio (representado pelo controle form). Os principais controle de servidor da Web so apresentados na tabela a seguir: Nome | Descrio | Button | Boto | Calendar | Calendrio grfico que permite a navegao e escolha de datas | CheckBox | Caixa para selecionar ou no um item | CheckBoxList | Grupo de caixas de seleo que normalmente esto relacionadas entre si | DataGrid | Mecanismo para exibio de dados em forma de linhas e colunas, sendo possvel a classificao e edio | DataList | Mecanismo parecido com o DataGrid, porm, com menos recursos | DropDownList | Lista para escolha de uma das opes. Bastante til quando se quer que as opes sejam extradas de um banco de dados | Image | Exibio de uma imagem |

Label | Texto que no pode ser editado diretamente | LinkButton | Um boto com aparncia de link | ListBox | Lista para escolha de uma ou mais opes | RadioButton | Caixa para selecionar ou no um item. Dentre os RadioButtons pertencentes a um RadioButtonList, apenas um pode ser selecionado | RadioButtonList | Continer de RadioButtons | Repeater | Controle para exibio de colees de dados em controles de servidor HTML. Para cada registro, os dados so exibidos no controle especificado | Table | Tabela | TableCell | Clula de uma linha da tabela | TableRow | Linha de uma tabela | TextBox | Caixa para insero de dados pelo usurio | Quadro 1. Controles de Servidor da WEB Fonte: Elaborada pelo prprio autor 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. 1.9. 1.10. 1.11. 1.12. 1.13. 1.14. Principais controles utilizados Segundo Lotar (2007), os controles tem os seguintes conceitos: GridView - O controle GridView a evoluo do controle DataGrid encontrado nas verses anteriores do Visual Studio.NET. Esta uma verso contm uma srie de vantagens, principalmente no que diz respeito agilidade no desenvolvimento, ganhando assim uma enorme produtividade. As melhorias vo desde as formas de carregarmos o GridView at funcionalidades inexistentes nas verses anteriores, as quais necessitvamos escrever muito cdigo para atender algo mais especfico. Grandes melhorias foram criadas, como por exemplo: novos tipos de colunas, ordenao e paginao de registros sem a escrita de nenhuma linha de cdigo, entre outras. Button - O uso de controles do tipo boto em pginas da Web ASP.NET permite que os usurios indiquem que eles completaram o formulrio ou que eles desejam executar um comando especfico. LinkButton - Processado como um hiperlink na pgina. Entretanto, ele contm script do lado do cliente que faz com que o formulrio seja postado de volta (posted back) para o servidor. ImageButton - Permite que voc especifique uma imagem como um boto. Isso til para apresentar uma aparncia rica do boto. Label - O controle Label oferece uma maneira de definir texto em uma pgina da Web do ASP.NET programaticamente. Voc normalmente usa o controle Label sempre que desejar alterar texto na pgina em tempo de execuo, como em resposta a um clique de boto. Voc pode definir o texto do controle Label em tempo de design ou em tempo de execuo em um programa, configurando a propriedade Text do mesmo. Observao: Se voc desejar exibir texto esttico, voc pode apresent-lo usando HTML, voc no precisa de um controle Label. Use um controle Label somente se voc precisar alterar o contedo ou outras caractersticas do texto no cdigo do servidor. Textbox - O controle TextBox fornece uma maneira de os usurios digitarem informaes em uma pgina de Web Forms, inclusive texto, nmeros e datas. Voc pode configurar o controle do servidor Web TextBox de vrias formas, conforme descrito na

tabela a seguir. * Single-line (uma nica linha) - Os usurios digitam informaes em uma nica linha. * Password (senha) - Como um controle TextBox de uma nica linha, mas os caracteres digitados pelo usurio so mascarados com asteriscos (*) para ocult-los. * Multiline (de mltiplas linhas) - Usurios digitam informaes em uma caixa que exibe vrias linhas e permite quebra automtica de texto DropDownList - O controle DropDownList permite aos usurios selecionar em uma caixa de listagem suspensa de seleo nica. O DropDownList semelhante ao controle ListBox. Mas diferente pois ele mostra somente o item selecionado em uma caixa, juntamente com um boto suspenso. Quando os usurios clicam no boto, uma lista de itens exibida. Alm disso, o controle DropDownList difere do controle ListBox em que ele no oferece suporte a vrios modos de seleo. SQL Server Segundo Otey e Otey (2007), o SQL Server um sistema de gerenciamento de bancos de dados cliente/servidor de alto desempenho com alta integrao com o Windows. Suas caractersticas so: * Integrao com os servios de multithreading [mltiplas linhas], agendamento, Monitor de Desempenho, e log de eventos do Windows. Um usurio pode se conectar ao SQL Server com a mesma senha usada para a rede Windows. * Replicao nativa permite disseminar informaes para vrios locais, reduzindo a dependncia de um servidor nico, e deixando a informao necessria mais prxima de quem realmente precisa dela. * Arquitetura paralela, que executa as funes de banco de dados simultaneamente para diversos usurios e tira proveito de sistemas com mltiplos processadores. * Gerenciamento centralizado de todos os servidores atravs de uma arquitetura de gerenciamento distribuda, com uma interface visual de gerenciamento. O SQL Server 2005 traz mais de 70 medies de desempenho e de uso de recursos do Banco de Dados interno que vo de memria, bloqueio e agendamento de transaes, rede e E/S do disco. Se uma empresa necessitar de uma tecnologia que trabalhe incansavelmente para suportar negcios e precisar de um pacote de ferramentas que oferea integrao total e escalabilidade para suportar as exigncias, podem estar certos, pois o SQL Server 2005 proporciona isso e muita mais. Foi construdo com base na fora de SQL Server 2000, o SQL Server 2005, fornece soluo de gerenciamento de informao que pode ajudar organizaes de qualquer porte. uma ferramenta extremamente complexa que traz grandes vantagens, principalmente nas ferramentas de Administrao e Desenvolvimento. Um dos grandes atrativos dessa verso a forte integrao com o *CLR (Common Language Runtime) que o ambiente gerenciado da plataforma .NET e inclui uma srie de recursos para gerenciamento de recursos de sua aplicao. Essa soluo de anlise de gerenciamento de dados de ltima gerao fornece mais segurana, *escalabilidade e disponibilidade de dados empresariais e aplicativos analticos, tornando-os mais fceis de criar, implementar, gerenciar e so mais confiveis e seguros. So compartilhados dados entre mltiplas plataformas, aplicaes e dispositivos para facilitar a conexo entre sistemas internos e externos, integrando solues robustas de inteligncia empresarial *BI (Business Intelligence), que ajudam na tomada de decises e aumentam a produtividade em toda a empresa; controlando custos sem sacrificar o desempenho, a disponibilidade e a escalabilidade ou a segurana. Portanto, o SQL Server fcil de usar: * Rpido de baixar e instalar * Download compacto. * Pronto para usar em apenas 20 minutos. * Administrao simplificada * Ajuste automaticamente seu banco de dados para um excelente desempenho. * Use o Microsoft Update para receber automaticamente as correes e atualizaes mais recentes, possibilitando um alto nvel de segurana e as ltimas novidades em recursos. * Ferramentas de gerenciamento gratuitas: SQL Server Management Studio * Voc pode baixar o SQL Server Management Studio Express (download separado abaixo), uma ferramenta de gerenciamento fcil e eficiente para SQL Server Express. * Com o SQL Server Management Studio, voc desfruta de uma experincia de gerenciamento consistente em todas as edies do SQL Server 2005.

* Integrao total com as edies do Visual Studio Express * Experincia de dados totalmente integrada para a criao de aplicativos para Windows e sites. * Fcil de implantar * Mova ou copie facilmente seus bancos de dados do SQL Server Express para outro computador ou servidor hospedado usando a implantao do XCopy e do ClickOnce. A Aplicao e os recursos utilizados 8. Introduo sobre o sistema Consiste em uma aplicao de e-commerce completa, criando todas as pginas do site principal e a parte administrativa do sistema. Ser apresentado algumas classes criadas durante a criao do sistema e alguns controles do ASP.NET utilizados nas pginas. Alm de apresentar novas tecnologias adotadas no visual Studio 2010, como asp.net 4.0, c# 4.0, entity data model, desenvolvimento em N camadas, generics, interface, herana, programao orientada a objetos e expresses lambda. Alm de mostrar a integrao do sistema com uma empresa de pagamentos online, que no nosso caso foi adotado o PagSeguro da UOL. Banco de Dados O banco de dados utilizado para a aplicao foi o SQLServer e a ferramenta para criao do banco de dados foi a SQLServer Management Studio Express. Pois, uma plataforma de base de dados abrangente que oferece ferramentas de gesto de dados de classe empresarial. O motor de base de dados SQL Server 2005 proporciona um armazenamento mais seguro e vivel tanto para dados relacionais como estruturados, permitindo-lhe criar e gerir aplicaes de dados de elevada disponibilidade e desempenho para a empresa. Algumas caractersticas do SQLServer so: * transaes ; * procedimentos armazenados ; * triggers; * administrao simples com SQLServer Management Studio Express. Assim, as tabelas criadas para a aplicao foram: * Tabela Clientes; * Tabela Categoria; * Tabela Produto; * Tabela Fabricante; * Tabela Comentrio; * Tabela Tipo_Venda; * Tabela Venda; * Tabela Item_Venda; * Tabela Banner; * Tabela Login; O relacionamento entre as tabelas ficaram da seguinte forma: * O campo IDT_CLIENTE que possui a chave primria da tabela CLIENTE com foreign key para o campo IDT_CLIENTE para a tabela de VENDA, este um relacionamento de uma para muitos; * O campo IDT_VENDA que possui a chave primria da tabela VENDA com foreign key para o campo IDT_VENDA para a tabela de ITEM_VENDA que possui chave primria composta, este um relacionamento de muitos para muitos; * O campo IDT_PRODUTO que possui a chave primria da tabela PRODUTO com foreign key para o campo IDT_ PRODUTO para a tabela de ITEM_VENDA que possui chave primria composta, este um relacionamento de muitos para muitos; * O campo IDT_TIPO_VENDA que possui a chave primria da tabela TIPO_VENDA com foreign key para o campo TIPO_VENDA para a tabela de VENDA, este um relacionamento de uma para muitos; * O campo IDT_PRODUTO que possui a chave primria da tabela PRODUTO com foreign key para o campo IDT_PRODUTO para a tabela de COMENTARIO, este um relacionamento de uma para muitos; * O campo IDT_CATEGORIA que possui a chave primria da tabela CATEGORIA com foreign key

para o campo IDT_ CATEGORIA para a tabela de PRODUTOS, este um relacionamento de uma para muitos; * O campo IDT_FABRICANTE que possui a chave primria da tabela FABRICANTE com foreign key para o campo IDT_ FABRICANTE para a tabela de PRODUTOS, este um relacionamento de uma para muitos; Na figura 9 abaixo apresentado o diagrama do banco de dados com seus campos e relacionamentos: Figura 8. Diagrama de Banco de Dados Fonte: Elaborada pelo prprio autor Iniciando o Projeto no Visual Studio Depois de criado o banco de dados, foi criado um blank solution no Visual Studio 2010. Logo aps foi dividido a solution em 4 projetos: LojaVirtualDAO referente a camada de acesso a dados da aplicao, LojaVirtualBLL referente a camada de regra de negcios da aplicao, LojaVirtualWEB referente a toda a interface com o usurio e a LojaVirtualAdmin referente a interface de administrao do e-commerce. Assim para criamos o relacionamento do banco de dados com as classes foi utilizado o entity data model, desta maneira no projeto LojaVirtualDAO foi adicionado o item Entity Data Model chamado de LojaVirtualEDM. Logo em seguida escolhemos o banco de dados e todas as tabelas para criamos o mapeamento. Na figura 10 abaixo mostrado o mapeamento do entity data model: Figura 9. Diagrama do Entity Data Model Fonte: Elaborada pelo prprio autor 1.1. 1.2. 9.4. Classes No projeto foram criadas diversas classes, por isso ser citado apenas as mais importantes. Uma das classes mais importantes a dos mtodos CRUD, que so os mtodos bsicos de todas as tabelas: create, retrieve, update e delete. No entanto, para no repetirmos esses mesmos mtodos em todas as classes foi utilizada uma interface e uma classe. A classe foi chamada de AbstractCRUD e a interface de IBaseCRUD. Para que todas as outras classes acessem esses mtodos preciso utilizar generics assim como no cdigo abaixo utilizado na interface: public interface IBaseCRUD<T> { void Add(T pEntity); void Delete(T pEntity); void Attach(T pEntity); void Detach(T pEntity); void Update(T pEntity); IQueryable<T> Find(Expression<Func<T, bool>> where); IQueryable<T> GetAll(); void SaveChanges(); } No cdigo acima o <T> faz com que a interface aceite generics, logo aps passado os mtodos de adicionar, deletar, attach e detach(que serve para travar o registro) e atualizar. Esses mtodos no retornam nada, eles apenas realizam sua funo e no retorna nada do banco de dados. Para fazer um select no banco preciso ser um retorno do tipo Iqueryable, assim voc tem a opo de retornar apenas um dado do banco de dados ou todos os dados como o getall(). Assim, foi feito a implementao dos mtodos na classe AbstractCRUD: public abstract class AbstractCRUD<T> : IBaseCRUD<T> where T : class { LOJAEntities loja = new LOJAEntities(); public void Add(T pEntity)

{ loja.AddObject(pEntity.GetType().Name, pEntity); } A classe AbstractCRUD vai herda da interface IBaseCRUD todos os mtodos, porm na classe voc obrigado a implementar todos esses mtodos, e o where determina o que tem que ser passado no generics deve ser uma classe. Antes de ser implementado os mtodos deve ser instanciado o banco de dados atravs do LOJAEntites. Logo aps, voc comea a programar os mtodos, o exemplo acima mostra como implementado o mtodo ADD. Voc passa ao objeto loja o mtodo de adicionar um objeto e depois voc passa os parmetros, pEntity.GetType().Name vai pegar o nome da classe que desejamos alterar no banco de dados e o tipo que ser pEntity. Depois feito as implementaes das classes e interfaces de cada tabela do banco de dados da camada DAO , e tambm as classes da camada de BLL. Interfaces Camada DAO | Classes Camada DAO | Classes Camada BLL | IClienteDao | ClienteDao | ClienteBLL | ICategoriaDao | CategoriaDao | CategoriaBLL | IFabricanteDao | FabricanteDao | FabricanteBLL | IProdutoDao | ProdutoDao | ProdutoBLL | ITipoVendaDao | TipoVendaDao | TipoVendaBLL | IVendaDao | VendaDao | VendaBLL | IBanner | BannerDao | BannerBLL | IComentario | ComentarioDao | ComentarioBLL | ILogin | LoginDao | LoginBLL | Quadro 2. Controles de Servidor da WEB Fonte: Elaborada pelo prprio autor A interface IClienteDao ter o seguinte cdigo: public interface IClienteDao:IBaseCRUD<CLIENTE> Primeiro voc tem que tornar a interface pblica para permitir acesso a mesma com public, e depois voc faz a herena do IBaseCRUD, porm a partir de agora no ser mais utilizado generics, pois ser definido um tipo, que nesse caso ser do tipo CLIENTE. A classe ClienteDao ter o seguinte cdigo: public class ClienteDao: AbstractCRUD<CLIENTE>, IClienteDao Tambm ser tornado a classe pblica para permitir o acesso aos seus mtodos, e ser feito uma herana do AbstractCRUD passando o tipo CLIENTE e uma outra herana a interface IClienteDao. A classe ClienteBLL ter o seguinte cdigo: public class ClienteBLL:ClienteDao Na classe ClienteBLL tambm ser adicionado o public para deix-la pblica para o resto da aplicao e depois a herana da classe ClienteDao. Assim ClienteBLL possui todos os mtodos de ClienteDao e tambm de AbstractCRUD. No entanto, a classe ClienteBLL criada apenas para ficar como padro, no entanto pode ser que no haja nenhuma regra de negcios dentro da classe. Um exemplo de uma regra de negcios seria na hora da venda de determinado produto haveria uma verificao se o cliente possui mais de 18 anos. A classe mais complicada da aplicao e que realmente o objetivo de um e-commerce o carrinho.cs. A classe comea da seguinte maneira: public List<ITEM_VENDA> Itens { get { return BuscarLista(); } } private List<ITEM_VENDA> BuscarLista() {

List<ITEM_VENDA> lista; if (HttpContext.Current.Session["lista"] != null) { lista = (List<ITEM_VENDA>)HttpContext.Current.Session["lista"]; } else { lista = new List<ITEM_VENDA>(); } return lista; } Primeiro criado uma lista de itens atravs da propriedade itens, onde o get vai retornar a lista dos produtos do carrinho, assim criado um mtodo private BuscarLista(). declarado a varivel lista do tipo List<ITEM_VENDA>, e para que possamos trabalhar com carrinho precisamos trabalhar com session, assim feito uma verificao se a session da lista de produtos existe, ou seja, se ela diferente de vazio. Se h uma lista de produtos, ela convertida para a nossa varivel lista atravs de um DirectCast, ou seja, o DirectCast converte o tipo session em List<ITEM_VENDA>. Caso essa session no exista, a nossa varivel lista ter uma nova lista de produtos, e assim vai retornar para a propriedade itens o contedo da varivel lista. Depois para adicionar produtos ao carrinho feito o mtodo AdicionarItem, veja o cdigo abaixo: public void AdicionarItem(ITEM_VENDA item) { List<ITEM_VENDA> lista = Itens; //Verifica se o produto j existe na lista var resultado = lista.Where(i => i.IDT_PRODUTO == item.IDT_PRODUTO); if (resultado != null && resultado.Count() > 0) { //Atualizar a quantidade de produto AtualizarLista(item); } else { item.SUBTOTAL = (item.VALOR_UNITARIO * item.QUANTIDADE); lista.Add(item); HttpContext.Current.Session["lista"] = lista; } } Assim, criado o mtodo AdicionarItem como void , pois no retorna nada, passando o tipo Item_Venda. Para adicionarmos um item antes preciso verificar se j tem algum item nessa lista, assim nossa varivel lista recebe os itens j existentes no carrinho. Depois preciso verificar se o item existe na lista, isso feito atravs de LINQ, onde verificado se o IDT_PRODUTO igual ao item.IDT_PRODUTO. Caso o resultado seja diferente de vazio ou maior que 0 preciso atualizar a quantidade do produto, desta maneira feito um IF para realizar essa verificao. Se caso existe produtos, ser executado o mtodo AtualizarLista passando o item como parmetro. Caso seja um produto novo a ser adicionado ento adicionamos a nossa lista atravs do ADD passando o nosso parmetro item, e tambm dever ser atualizado o subtotal do nosso carrinho. No entanto, preciso atualizar nossa lista geral, atualizando a session, assim atribumos o que tem na nossa nova lista de produtos para a session. Bem, como foi dito anteriormente, precisamos do mtodo Atualizar Lista, pois se caso o item j exista no nosso carrinho necessrio atualizar sua quantidade. Veja o cdigo do mtodo AtualizarLista abaixo: private void AtualizarLista(ITEM_VENDA item) { List<ITEM_VENDA>

lista = Itens; //Verifica se o produto j existe na lista var resultado = lista.Where(i => i.IDT_PRODUTO == item.IDT_PRODUTO); if (resultado != null && resultado.Count() > 0) { ITEM_VENDA itemEncontrado = resultado.First(); itemEncontrado.QUANTIDADE += item.QUANTIDADE; itemEncontrado.SUBTOTAL = (itemEncontrado.QUANTIDADE * itemEncontrado.VALOR_UNITARIO); HttpContext.Current.Session["lista"] = lista; } } O mtodo AtualizarLista ser private, pois apenas a classe poder utiliz-la, e tambm ser void, pois no retorna nada. Ser passado o item como parmetro, e precisamos da nossa lista atualizada , por isso nossa lista recebe os itens que esto no carrinho. O item ser verificado se existe novamente s por questo de segurana da aplicao, se o resultado for que h produtos na lista, ento ser atualizado a quantidade de produtos. Ento a nossa varivel item_Encontrado recebe o nosso item, assim a quantidade que o nosso item estiver ser somada no nosso item encontrado. Depois de atualizada a quantidade do item preciso atualizar o subtotal do nosso carrinho e depois atualizamos a session, ou seja, nossa lista geral. Veja a imagem do diagrama de classes da classe carrinho.cs: Figura 10. Diagrama de classes Classe carrinho.cs Fonte: Elaborada pelo prprio autor Layout da Aplicao e Camada WEB O layout da aplicao foi adaptado a partir de um modelo de template de site pronto. Desta maneira, foi adaptado os controles dot.net dentro do template. Assim, o template foi inserido dentro do projeto, mais especificamente dentro da camada WEB. Como foi utilizado WebForms, foi criado a MasterPage, para que todas as pginas da aplicao tenha o mesmo layout, onde ser alterado apenas o contedo central do site. Os WebForms criados para a camada WEB foram: Principal.Master, Default.aspx, Produto.aspx, Detalhes.aspx, Contato.aspx, Cadastrar.aspx, CarrinhoCompra.aspx e autenticar.aspx. Na Master Page Principal.Master foi includo o layout padro para todas as pginas, assim para listar o menu de categorias e o menu de fabricantes foi utilizado o controle DataList. Assim, no Principal.Master.cs preciso carregar toda a lista de categorias e fabricantes. E na hora de carregar as categorias e os fabricantes preciso utilizar o evento do DataList chamado ItemDataBound. Veja o cdigo abaixo da pgina Principal.Master e do Principal.Master.cs: <asp:DataList ID="dtlCategorias" runat="server" OnItemDataBound="dtlCategorias_ItemDataBound" BorderWidth="0" CellPadding="0" CellSpacing="0"> <ItemTemplate> <li class="odd"> <asp:HyperLink ID="lnkCategoria" runat="server" /></li> </ItemTemplate> <AlternatingItemTemplate> <li class="even"> <asp:HyperLink ID="lnkCategoria" runat="server" /></li> </AlternatingItemTemplate> </asp:DataList> protected void dtlCategorias_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer) { ((HyperLink)e.Item.FindControl("lnkCategoria")).Text = ((CATEGORIA)e.Item.DataItem).NOME; ((HyperLink)e.Item.FindControl("lnkCategoria")).NavigateUrl = "Produtos.aspx?categoria=" +

((CATEGORIA)e.Item.DataItem).IDT_CATEGORIA.ToString(); } } Veja que no cdigo da pgina no mtodo OnItemDataBound declarado o dtlCategorias_ItemDataBound para carregar os dados no DataList atravs do controle hyperlink. Assim feito uma verificao no Principal.Master.cs, pois o DataList composto por headerTemplate, itemTemplate, alternateTemplate e footerTemplate. Como estamos usando apenas o itemTemplate e o alternateTemplate, fazemos uma verificao se o DataList diferente de header e footer template e ento executamos a ao de buscar o nome da categoria e o link da categoria. Na Default.aspx tambm utilizado o controle DataList para mostrar os produtos em 3 colunas no miolo do site, assim como foi realizado na Master Page para mostrar as categorias e os fabricantes. Na pgina do Carrinho.aspx tambm utilizado o gridview para carregar os produtos e o valor total do carrinho da compra do cliente. Veja o cdigo abaixo da pgina para adicionar o item no carrinho: protected void dtlProdutos_ItemCommand(object sender, DataListCommandEventArgs e) { Carrinho carrinho = new Carrinho(); ITEM_VENDA item = new ITEM_VENDA(); PRODUTO produto = new PRODUTO(); if (e.CommandName == "carrinho") { int codProduto = int.Parse(e.CommandArgument.ToString()); produto = (PRODUTO)produtosBLL.Find(p => p.IDT_PRODUTO == codProduto).First();

item.IDT_PRODUTO = int.Parse(e.CommandArgument.ToString()); item.QUANTIDADE = 1; item.VALOR_UNITARIO = produto.VALOR; carrinho.AdicionarItem(item); Response.Redirect("CarrinhoCompra.aspx"); } <asp:ImageButton ID="btnCarrinho" runat="server" CommandName="carrinho" ImageUrl="images/cart.gif" BorderWidth="0" CssClass="center_bt" /> Para adicionar o produto ao carrinho, uitlizado o itemCommand do DataList, pois ele utilizado para mostrar os produtos na pgina principal. Para adicionar ao carrinho vamos precisar instanciar o Carrinho, o Item_Venda e o PRODUTO. Depois feito a verificao se o CommandName igual a carrinho, pois assim como mostrado no cdigo acima do ImageButton, o seu CommandName est declarado com o nome carrinho. Logo em seguida, atribumos a varivel codProduto o cdigo do produto que ao clicar no boto ser executado o CommandArgument, ento atribumos ao produto um objeto produto que ser feito uma pesquisa atravs de LINQ para encontrar o IDT_PRODUTO que igual ao cdigo do produto passado pelo CommandArgument. Assim o item.IDT_PRODUTO recebe o cdigo do produto atravs do CommandArgument, e atribumos a quantidade do produto igual a 1, e passamos o valor unitrio do produto. Depois chamado o mtodo AdicionarItem para o parmetro item, e assim redirecionamos o cliente para a pgina de CarrinhoCompra.aspx. O cliente chegando a pgina do CarrinhoCompra.aspx visualizar o boto pagar, que ter um cdigo para mandar os dados do cliente para o PagSeguro, que ser a empresa adotada para o pagamento online de nossas vendas. Veja o cdigo do boto pagar abaixo: if (Session["cliente"] != null) { CLIENTE cliente = new CLIENTE();

cliente = (CLIENTE)Session["cliente"]; PRODUTO prd = null; //Finaliza a venda do cliente int idCodigoVenda = car.FinalizarVenda(cliente.IDT_CLIENTE, 5); //Este tipo de pagamento deve vir da tela. VendaPagSeguro1.CodigoReferencia = idCodigoVenda.ToString(); VendaPagSeguro1.Produtos = new List<UOL.PagSeguro.Produto>(); foreach (ITEM_VENDA item in car.Itens) { UOL.PagSeguro.Produto produto = new UOL.PagSeguro.Produto(); produto.Codigo = item.IDT_PRODUTO.ToString(); prd = new PRODUTO(); prd = produtobll.BuscarProduto(item.IDT_PRODUTO); produto.Descricao = prd.NOME; produto.Quantidade = item.QUANTIDADE; produto.Valor = double.Parse(item.VALOR_UNITARIO.ToString()); VendaPagSeguro1.Produtos.Add(produto); } prd = null; VendaPagSeguro1.Cliente = new UOL.PagSeguro.Cliente(); VendaPagSeguro1.Cliente.Nome = cliente.NOME; VendaPagSeguro1.Executar(this.Response); } else { //Tela de autenticao do cliente Response.Redirect("Autenticar.aspx"); } Para enviarmos o cliente para a pgina de pagamento do PagSeguro preciso fazer uma verificao se o cliente est logado no sistema, caso no esteja o cliente enviado para a pgina de autenticao. Para finalizarmos a venda ns precisamos instanciar o cliente e atribuir a session para a nossa varivel cliente, e declaramos tambm uma varivel PRODUTO, pois preciso passar para o PagSeguro o produto que o cliente est comprando. Na pgina ns tambm temos a instncia do carrinho como global declarado como car, assim passado para o idCodigoVenda atravs do mtodo FinalizarVenda criado na classe carrinho o IDT do cliente e o tipo da venda. Para a integrao com o PagSeguro preciso baixar a biblioteca para .NET, e depois carregar no toolbox do Visual Studio 2010, e assim arrastar o componente VendaPagSeguro para a tela. Nessa parte da codificao chamado o componente VendaPagSeguro e o parmetro CodigoReferencia passando o idCodigoVenda como string. Logo aps precisamos passar a lista de produtos, ento chamamos novamente o componente do PagSeguro e o parmetro Produtos, e passamos a lista de produtos. Para cada item no carrinho preciso passar os dados para o PagSeguro, assim feito um foreach, desta maneira criado uma instncia do UOL.PagSeguro.Produto. Ento passamos o cdigo do produto, e tambm buscada a descrio do produto, a quantidade, o valor e no final adicionado o produto no componente do PagSeguro. Por ltimo instanciado UOL.PagSeguro.Cliente para passar o nome do cliente para o sistema de pagamento do PagSeguro, e executamos a ao passando a pgina com as informaes para o sistema de pagamento do PagSeguro. 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. Camada Admin

O layout da Camada Admin ser idntico a camada WEB, ter uma Master Page, e os seguintes WebForms: Categorias.aspx, Clientes.aspx, Default.aspx, Fabricantes.aspx e Produtos.aspx. Para demonstrar como foi montado os WebForms, ser mostrado alguns cdigos do WebForm Categorias.aspx. Por exemplo, para listar as categorias foi utilizado um gridview, seguindo o cdigo abaixo: CategoriaBLL categoriasBLL = new CategoriaBLL(); public void BuscarCategorias() { grvCategorias.DataSource = categoriasBLL.GetAll(); grvCategorias.DataBind(); } Primeiramente foi feito uma instncia de CategoriaBLL para utilizarmos o mtodo GetAll(). Como essa instncia foi utilizada em outros mtodos, ela foi declarada como global na pgina. Assim declaramos o mtodo void BuscarCategorias, depois passamos para o gridview com o nome de grvCategorias o Datasource, que nesse caso buscado no banco de dados todas as categorias com o mtodo GetAll() e o DataBind fundamental para renderizar os dados no controle. Na pgina Produtos.aspx foi criado um fileupload, pelo qual possvel enviar a foto do produto para que seja mostrado para o cliente. Veja o cdigo abaixo: string diretorio = MapPath("~/Produtos/"); string nomefoto = ""; if (fileFotoProduto.HasFile) { Random rdm = new Random(); nomefoto = "produto" + rdm.Next(0, 99999).ToString() + fileFotoProduto.FileName.Substring(fileFotoProduto.FileName.LastIndexOf("."), 4); fileFotoProduto.SaveAs(diretorio + nomefoto); produto.FOTO = nomefoto; rdm = null; } Antes de tudo criado uma varivel string diretrio para definir o local onde ser salvo os arquivos das imagens. O MapPath transforma o diretrio virtual em diretrio fsico mapeando o local onde ser salvo. Tambm criado uma string para guardar o nome da foto. Depois feito um IF, para verificar se tem arquivo, se tiver gerado um nmero randmico, assim montamos o nome do arquivo e guardamos na string nomefoto da seguinte forma: produto + o nmero randmico de 0 a 99999 + a Substring para guardarmos a extenso do arquivo atravs do LastIndexOf pelo qual salvo a partir do ponto os 4 ltimos caracteres. Com o SaveAs, salvamos o arquivo no diretrio escolhido e com o nome da foto que montamos. E quando acionarmos o boto salvar o nome da foto ser salvo dentro do campo foto na tabela Produtos no banco dados. Para terminar atribumos o valor null para a varivel rdm, assim destrumos qualquer valor que tenha dentro da varivel. Front-end e back-end do sistema No front-end do sistema possui um layout arrojado de acordo com os padres W3C, sendo assim o site visualizado em vrios Browsers com a mesma aparncia. No cabealho do site possui um campo de busca, a logotipo da empresa, o banner e o menu para navegao do usurio. O menu possui o boto home, produtos em destaque, contato, login e carrinho de compras. Logo mais abaixo, possui um menu a esquerda de categorias para o usurio ter a opo de escolha da categoria que ele deseja visualizar no site, a parte central onde mostrado todos os produtos cadastrados no site, e na parte da direita possui o carrinho de compras com a quantidade dos itens do cliente e o total do valor de seus produtos, depois h alguns produtos em novidades e um outro menu de fabricantes pelo qual o cliente tem a opo de escolher os produtos de acordo com o fabricante. Veja abaixo a imagem da pgina principal do site: Figura 11. Pgina principal do site

Fonte: Elaborada pelo prprio autor No rodap possui a logotipo do site, informaes sobre atendimento e as redes sociais twitter e facebook. Quando o cliente clica em um produto especfico, mostrado as informaes e detalhes do produto como: caractersticas, garantia do produto e demais detalhes. Veja abaixo a imagem da pgina de detalhes do produto: Figura 12. Pgina de detalhes do produto do site Fonte: Elaborada pelo prprio autor O cliente pode visualizar seu carrinho de compras ao clicar no menu Carrinho de Compras ou na imagem do prprio carrinho do lado direito do site. O cliente pode entrar em contato com a empresa atravs do menu contato e preenchendo todos os seus dados. Veja abaixo a imagem do carrinho de compras de um cliente: Figura 13. Pgina do carrinho de compra Fonte: Elaborada pelo prprio autor O back-end tem o mesmo layout do front-end, porm com algumas modificaes. No caso os menus so direcionados para a administrao de produtos, clientes, vendas, categorias, fabricantes e banner. Cada menu possui seu formulrio e dados especifico, veja abaixo a imagem da rea administrativa do e-commerce: Figura 14. Pgina Principal da rea administrativa do e-commerce Fonte: Elaborada pelo prprio autor Consideraes Finais Existem milhares de oportunidades de negcio na internet, no entanto, o e-commerce est ganhando cada vez mais espao no mercado, pois as empresas comeam a identificar uma nova oportunidade de divulgao e venda de seus produtos. Assim, novas tecnologias esto sempre surgindo para o desenvolvimento desse tipo de aplicao para a internet. Contudo, podemos concluir que o desenvolvimento de um e-commerce atravs da linguagem c#, utilizando o framework .NET com desenvolvimento em N camadas, o SDK Visual Studio 2010 e suas ferramentas tornam a aplicao bem mais fcil de ser atualizada, de ser gerenciada, e principalmente na manuteno de todo o ecommerce. No podemos deixar de ressaltar a facilidade no desenvolvimento do sistema com a utilizao dessas tecnologias e que as mesmas atendem e superam todas as necessidades de um desenvolvedor. Referncias Bibliogrficas ALBERTIN, A. - "Comrcio Eletrnico - Modelo, Aspectos e Contribuies de Sua Aplicao" - Ed. Atlas - So Paulo: 1999. FAVARETTO , Eduardo. Redes Sociais: O Futuro da Internet. [S.l.: s.n.], 2008. Disponvel em: <http://www.artigonal.com/internet-artigos/redes-sociais-o-futuro-da-internet-333295.html> acesso em: 30 de outubro de 2010. FERREIRA , Laelson Jos de Souza. Internet. [S.l.: s.n.], [ca. 2000]. Disponvel em: <http://www.apostilando.com.br> acesso em: 30 de outubro de 2010. FIGUEREDO, Abrao Levi Oliveira. Vantagens do ASP.NET. [S.l.: s.n.], 2010. Disponvel em: < http://falandoti.com.br/vantagens-do-asp-net> acesso em: 03 de novembro de 2010. ALMEIDA, Edson Junior. Comrcio Eletrnico. [S.l.: s.n.], 2007. Disponvel em: <http://www.edsonalmeidajunior.com.br> acesso em: 23 de outubro de 2010.

LOTAR, Alfredo. Como programar em Asp.NET e C#. So Paulo: Novatec, 2007. MACORATTI, Jos Carlos. Macoratti.NET. [S.l.: s.n.], 2010. Disponvel em: <http://www.macoratti.net/> acesso em: 05 de novembro de 2010. OTEY, Denielle. OTEY, Michael. Microsoft SQL Server 2005: Guia do Desenvolvedor. So Paulo: Cincia Moderna, 2007. OBRIEN, James A. Sistemas de informao e as decises gerenciais na era da Internet. So Paulo: Saraiva, 2001. PAYNE, Chris. Aprenda em 21 dias ASP.NET. Rio de Janeiro: Campus, 2001. SHAPIRO, Carl; VARIAN, Hal R. A economia da informao: como os princpios econmicos se aplicam a era da Internet. Rio de Janeiro: Campus, 1999. RICHTER, Jeffrey. Programao Aplicada com Microsoft .NET Framework. Porto Alegre: Bookman, 2005 SINTES, Anthony. Aprenda Programao Orientada a Objetos em 21 Dias. So Paulo: Makron Books, 2002. VICENTE, Haline Gregrio. Anlise e Projetos Orientados a Objeto. [S.l.: s.n.], [ca. 2003]. Disponvel em: <http://www.apostilando.com.br> acesso em: 05 de novembro de 2010.

Você também pode gostar