Jorge David Oliveira Araujo Junior QUALIDADE DE SOFTWARE COM FLEXIBILIDADE E REUTILIZAÇÃO DE CODIGO-FONTE UTILIZANDO DESIGN

Tamanho: px
Começar a partir da página:

Download "Jorge David Oliveira Araujo Junior QUALIDADE DE SOFTWARE COM FLEXIBILIDADE E REUTILIZAÇÃO DE CODIGO-FONTE UTILIZANDO DESIGN"

Transcrição

1 Jrge David Oliveira Arauj Junir QUALIDADE DE SOFTWARE COM FLEXIBILIDADE E REUTILIZAÇÃO DE CODIGO-FONTE UTILIZANDO DESIGN PATTERNS NO DESENVOLVIMENTO DE APLICAÇÕES COM A LINGUAGEM JAVA Itatiba 2012

2 Jrge David Oliveira Araúj Junir QUALIDADE DE SOFTWARE COM FLEXIBILIDADE E REUTILIZAÇÃO DE CODIGO-FONTE UTILIZANDO DESIGN PATTERNS NO DESENVOLVIMENTO DE APLICAÇÕES COM A LINGUAGEM JAVA Mngrafia apresentada à disciplina de Trabalh de Cnclusã de Curs, d Curs de Engenharia de Cmputaçã da Universidade Sã Francisc, sb rientaçã das Prfº Rdrig Luiz Nlli Brssi cm exigência para a cnclusã d curs de graduaçã. Itatiba 2012

3 AGRADECIMENTOS Agradeç primeiramente a Deus pela frça, sabedria e saúde cncedida durante td curs. Sem Ele cm certeza eu nã estaria aqui hje. A lng d curs Deus clcu inúmeras pessas para me auxiliar na jrnada. Se eu fsse citar tdas as pessas que me ajudaram neste períd de temp eu ficaria aqui hras e hras e cm certeza eu pderia ser injust cm alguém em me esquecer de citar algum nme. As ONGs UNEAFRO e EDUCAFRO fram essenciais para minha frmaçã, pis tiveram pessas nestas instituições que acreditaram n meu ptencial e me deram a chance de fazer um curs superir, me cncedend uma blsa de estuds de 100%. Nã tenh palavras nem frmas de agradecer este presente. A minha família que me deram frças a lng d curs e sempre me auxiliaram n que fi precis. Agradeç também a minha espsa que n final d curs teve uma paciência infinita pr suprtar inúmers mments de ausência devid a desenvlviment deste trabalh de cnclusã de curs. Agradeç a meu crdenadr Rdrig Brssi que na medida d pssível, me auxiliu na elabraçã d trabalh. Pr ultim quer lembrar um grande amig de curs que infelizmente faleceu n ultim semestre. O Miguel era um amig para tdas as hras, e Deus pr algum mtiv ns tiru esta pessal tã especial. Agradeç a Deus pr ter cnhecid e estudad cm ele. Agradeç a tds que direta u indiretamente me auxiliaram na elabraçã deste trabalh.

4 QUALIDADE DE SOFTWARE COM FLEXIBILIDADE E REUTILIZAÇÃO DE CODIGO-FONTE UTILIZANDO DESIGN PATTERNS NO DESENVOLVIMENTO DE APLICAÇÕES COM A LINGUAGEM JAVA RESUMO Junir, Jrge D. O. A. Segund Gamma (2000), a utilizaçã de padrões de prjet permite uma melhr cncrdância entre minimizaçã da cmplexidade e d acplament entre s elements que integram a aplicaçã. Para autr s padrões prprcinam sluções eficazes para prblemas já cnhecids durante desenvlviment de uma aplicaçã. Cm a aplicaçã de uma linguagem rientada a bjets, smad á utilizaçã ds padrões de prjets s sftwares ganham em qualidade, flexibilidade e facilidade em manutençã. Gamma (2000), afirma que s padrões sã classificads especificamente em três partes: criacinais, estruturais e cmprtamentais. Padrões criacinais: Sã respnsáveis pela criaçã de bjets. Padrões estruturais: Estã ligads diretamente a cmpsiçã de bjets e classes. Padrões cmprtamentais: Trabalham cm a interaçã e cmpartilhament de respnsabilidade entre bjets e classes. Prtant, bjetiv deste trabalh é demnstrar cm s desenvlvedres e prjetistas de sftware pdem bter sftware de qualidade, cm flexibilidade e códigsfntes de fácil manutençã utilizand s padrões de prjet n desenvlviment de sftwares utilizand a linguagem de prgramaçã JAVA. Palavras chaves: sftware, padrões de prjet, qualidade, desenvlvedres, flexibilidade.

5 SOFTWARE QUALITY WITH FLEXIBILITY AND REUSE OF SOURCE CODE USING DESIGN PATTERNS IN DEVELOPING APPLICATIONS WITH THE LANGUAGE JAVA Junir, Jrge D. O. A. Accrding t Gamma (2000), the use f design patterns allws a better agreement between the cmplexity and minimizing the cupling between the elements that cmprise the applicatin. Fr the authr the patterns have very effective slutins t knwn issues when develping sftware. With the implementatin f an bject-riented language will be added use f sftware design patterns gain in quality, flexibility and ease f maintenance. Gamma (2000), states that specific standards are classified int three parts: creatinal, structural and behaviral. Creatinal Patterns: It is respnsible fr creating bjects. Structural Patterns: It is cnnected directly t the cmpsitin f bjects and classes Behaviral Patterns: Wrk with the interactin and sharing f respnsibility between bjects and classes. Therefre, the aim f this paper is t demnstrate hw develpers and sftware designers can achieve quality sftware, with surce-cde flexibility and easy maintenance using design patterns in sftware develpment using the Java prgramming language. Keywrds: sftware, design standards, quality, develpers flexibility..

6 Lista de Figuras FIGURA 1 - CLASSE MEIOTRANSPORTE FIGURA 2 - MOTIVAÇÃO FACTORY METHOD FIGURA 3 - ESTRUTURA SINGLETON FIGURA 4 - IMPLEMENTAÇÃO ADAPTER FIGURA 5 - ESTRUTURA DECORATOR FIGURA 6 - IMPLEMENTAÇÃO DECORATOR FIGURA 7 - IMPLEMENTAÇÃO DECORATOR FIGURA 8 - MOTIVAÇÃO PROXY FIGURA 9 - MOTIVAÇÃO PROXY FIGURA 10 - ESTRUTURA PROXY FIGURA 11 MOTIVAÇÃO COMMAND FIGURA 12 ESTRUTURA COMMAND FIGURA 13 COLABORAÇÕES COMMAND FIGURA 14 ESTRUTURA ITERATOR FIGURA 15 ESTRUTURA OBSERVER FIGURA 16 COLABORAÇÕES OBSERVER FIGURA 17 - DIAGRAMA DE CLASSES - IMPLEMENTAÇÃO FIGURA 18- SAIDA DE DADOS - NETBEANS FIGURA 19 - DADOS DA TABELA TBL_LIVROS... 84

7 Lista de Quadrs TABELA 1 - CLASSIFICAÇÃO DOS PADRÕES DE PROJETO... 22

8 Sumári 1. INTRODUÇÃO JUSTIFICATIVA ORIENTAÇÃO A OBJETOS INTRODUÇÃO A ORIENTAÇÃO A OBJETOS QUAIS AS VANTAGENS DO PARADIGMA PRINCIPAIS CARACTERÍSTICAS DA POO CLASSIFICAÇÃO IDENTIDADE ENCAPSULAMENTO HERANÇA POLIMORFISMO CLASSES INTRODUÇÃO À LINGUAGEM JAVA HISTÓRICO DA LINGUAGEM JAVA CONCEITO DE REUTILIZAÇÃO DE CÓDIGO RISCOS DA REUTILIZAÇÃO DE CÓDIGO ORIGEM DOS PADRÕES DE PROJETO CARACTERÍSTICAS DOS PADRÕES DE PROJETO CATEGORIAS DE PADRÕES DE PROJETO PADRÕES DE PROJETO CRIACIONAIS PADRÕES DE PROJETO ESTRUTURAIS PADRÕES DE PROJETO COMPORTAMENTAIS DETALHANDO OS PADRÕES DE PROJETO FACTORY METHOD Intençã Mtivaçã Aplicabilidade Estrutura Participantes Clabrações Cnsequências Implementaçã Padrões relacinads PROTOTYPE Intençã Mtivaçã Aplicabilidade Estrutura Participantes... 34

9 9.2.7 COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads SINGLETON Intençã Mtivaçã Aplicabilidade Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads ADAPTER Intençã Mtivaçã Aplicabilidade Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads DECORATOR Intençã Mtivaçã Aplicabilidade Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads PROXY Intençã Mtivaçã Aplicabilidade... 49

10 9.8.4 Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads COMMAND Intençã Mtivaçã Aplicabilidade Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads ITERATOR Intençã Mtivaçã Aplicabilidade Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads OBSERVER Intençã Mtivaçã Aplicabilidade Estrutura Participantes COLABORAÇÕES Cnsequências Implementaçã Padrões relacinads IMPLEMENTAÇÃO... 64

11 10.1 Diagrama de Classes CONSIDERAÇÕES FINAIS REFERÊNCIAS ANEXO A IMPLEMENTAÇÃO DA CLASSE LIVROVO ANEXO B IMPLEMENTAÇÃO DA CLASSE CONEXAO ANEXO C IMPLEMENTAÇÃO DA CLASSE CATALOGOLIVROS ANEXO D IMPLEMENTAÇÃO DA CLASSE LIVROSDB ANEXO E IMPLEMENTAÇÃO DA CLASSE DISPOSITIVO ANEXO F IMPLEMENTAÇÃO DA CLASSE LIVROALL ANEXO G SAÍDA DE DADOS DO APLICATIVO ANEXO H TABELA DE BANCO DE DADOS... 84

12 1. INTRODUÇÃO A utilizaçã de micrcmputadres tem crescid frequentemente e abrange diversas áreas de aplicaçã. Sua crreta peraçã é indispensavelmente critica para sucess ds negócis. Este cresciment em sua mairidade deve-se a imprtância da utilizaçã de sftwares. Segund Pressman (1995), sftware de cmputadr é prdut que s prfissinais de sftware cnstrem e, depis, mantêm a lng d temp. Segund autr sftware abrange prgramas que executam em cmputadres de qualquer tamanh e arquitetura, cnteúd que é apresentad a prgrama a ser executad em dcuments tant em frma impressa quant virtual que cmbinam tdas as frmas de mídia eletrônica. O sftware realiza um ds papeis mais imprtantes para sciedade. Ele prprcina s meis para bter a infrmaçã de diversas maneiras. O sftware ainda cnsegue transfrmar dads em infrmações que pdem ser uteis para uma sciedade, rganizaçã u pessa. Para haver um tratament mais sistemátic e cntrlad n desenvlviment de sftware, em 1960 surgiu term Engenharia de Sftware. Segund Bauer (1969) Engenharia de Sftware é a criaçã e a utilizaçã de sólids princípis de engenharia a fim de se bter sftware de maneira ecnômica, que seja cnfiável e que trabalhe em máquinas reais. Cm decrrer d temp a área de engenharia de sftware ganhu nvs aspects e nvas abrdagens. Cm intuit de realizar mapeament de prblemas cnhecids u similares, surgiu s Padrões de Prjet. Cm a criaçã deste framewrk prgramadr nã tem a necessidade de desenvlviment de uma sluçã a cada nv prblema, assim há um ganh n temp de cnstruçã de um prjet devid à reutilizaçã de códigs e timizaçã de errs. Os padrões de prjet auxiliam na resluçã de prblemas baseads em sluções que já funcinaram em prjets anterires. Para realizaçã de um prcess que facilite a manutençã d sftware e que pssibilite a reutilizaçã de códigs sem a necessidade de recriar uma sluçã já existente, s padrões de prjets sã utilizads em cnjunt cm uma linguagem de prgramaçã rientada a bjets. 9

13 Na mairia das vezes s prjets mal sucedids sã riginads pr prgramadres de sistemas de sftware que utilizam técnicas nã-rientadas a bjets e sempre recriam sluções já existentes. Os padrões de prjet tem bjetiv de elevar a qualidade d códig-fnte, bter flexibilidade d prjet e facilitar a manutençã da aplicaçã. Este tema é puc abrdad em ambiente acadêmic. Os desenvlvedres mais experientes pssuem um cnheciment mair sbre assunt. Acredita-se que desenvlviment deste trabalh prprcinará mair cnheciment sbre assunt, destacand as suas necessidades de utilizaçã mais cmuns. 10

14 2. JUSTIFICATIVA Este trabalh tem cm bjetiv expandir cnheciment de desenvlvedres e prjetistas de sftware de maneira que facilite entendiment e a manutençã da aplicaçã e cnsequentemente pssibilitar a reutilizaçã de códigs e principalmente impedir a necessidade de se recriar uma sluçã. 11

15 3. ORIENTAÇÃO A OBJETOS Este capítul apresenta pnts cnsiderads imprtantes para desenvlviment d trabalh, tais cm cnceits de Sistemas de Infrmaçã, Engenharia de Sftware, intrduçã à linguagem JAVA, históric de Padrões de Prjet, tips de padrões de prjet. 3.1 Intrduçã a Orientaçã a Objets Cnsiderems a seguinte definiçã de POO:... uma frma particular de rganizar desenvlviment de sftware cm uma cleçã de bjets que incrpram tant uma estrutura de dads cm cmprtaments (Rumbaugh, 1991, pág. 1). A Prgramaçã Orientaçã a Objets (POO) é uma frma de prgramar que ajuda na rganizaçã e reslve inúmers prblemas enfrentads pela prgramaçã prcedural. A POO ns permite prgramar de frma que se aprxime mais da realidade d que utrs tips de prgramaçã. Cm a POO tems que aprender a pensar as cisas de uma maneira distinta, escrever prgramas em terms de bjets, prpriedades e métds. Ainda pdemse descrever inúmeras técnicas utilizadas cm saída para prblemas cmputacinais. Um ds grandes diferenciais da POO se cmparad a utrs paradigmas de prgramaçã que também permitem a definiçã de estruturas e perações sbre essas estruturas está n cnceit de herança, mecanism através d qual definições existentes pdem ser facilmente estendidas. Juntamente cm a herança deve ser enfatizada a imprtância d plimrfism, que permite selecinar funcinalidades que um prgrama irá utilizar de frma dinâmica, durante sua execuçã. 3.2 Quais as vantagens d paradigma A Orientaçã a bjets ajuda a rganizar códig de frma que desenvlvedr ecnmiza em temp e principalmente em quantidade de códig. O paradigma cncentra desenvlvedr em pnts certs, flexibilizand a aplicaçã e encapsuland a lógica de negócis. O paradigma rientad a bjets cria de frma simples uma cnexã entre dads e funcinalidades através de recurss da própria linguagem. 12

16 3.3 Principais características da POO As principais características da Prgramaçã Orientada a Objets sã: Classificaçã Identidade Encapsulament Herança Plimrfism Classificaçã Segund Peter (2002), é natural para nss entendiment criarms uma classificaçã para as cisas, u seja, a categrizaçã daquil que ns rdeia. Criams classes de bjets para facilitar nssa cmpreensã d mund, u seja, grups de bjets que cmpartilham características cmuns, embra distintas, em cada bjet (s seres humans têm características cmuns: estrutura e funcinament d crp, embra pssam ser distinguids pr sua altura, idade, pes cr e aparência da pele lhs, cabels etc.) Identidade Para Peter (2002), nss relacinament cm s bjets d mund nã se limita à sua classificaçã. Usualmente, nós denminams tds s bjets e, principalmente, as pessas que estã a nss redr, de frma que cada bjet se trne únic, u seja, assuma uma identidade. As pessas têm nmes e sbrenmes, s animais de estimaçã recebem nmes, nsss autmóveis têm uma chapa (quand nã têm um apelid) e até mesm patrimôni de uma empresa é numerad, de md que cada peça seja única Encapsulament Peter (2002) afirma que encapsulament índica que pdems utilizar um bjet cnhecend apenas sua interface, ist é, sua aparência exterir, tal cm fazems, muitas vezes, cm cmputadres, autmóveis e utras máquinas de nss temp. O encapsulament permite preservar infrmações cnsideradas imprtantes u sigilsas dentr d bjet, divulgand apenas aquil que se julgue cnveniente. 13

17 3.3.4 Herança Segund Peter (2002), a herança é mecanism de criaçã de nvas classes de bjets a partir de utras já existentes. A herança tma cm prntas e dispníveis certas características d bjet de rigem, send, prtant uma frma muit especial de cmpartilhament d códig. Iss permite que criems várias classes, hierarquicamente relacinadas, partind de uma mais geral para diversas utras mais especializadas, btend cm resultad uma arvre de classes, tal cm a classificaçã prpsta pela bilgia para a divisã ds seres vivs Plimrfism Para Peter (2002), plimrfism refere-se à nssa capacidade de recnhecer em um bjet particular em utr mais geral, pr exempl: pdems falar de uma bla de futebl em terms de uma bla genética, pdems tratar um liquidificadr cm um eletrdméstic genéric, pdems classificar mrcegs, cachrrs e rcas cm animais mamífers. Peter (2002) ainda afirma que a prgramaçã rientada a bjets é uma frma de prgramaçã que se baseia na cnstruçã de classes e na criaçã de bjets dessas classes, fazend cm que estes trabalhem em cnjunt para que s prpósits da criaçã de um prgrama sejam atingids. Para Bch (1994), a linguagem de prgramaçã JAVA é cmpletamente rientada a bjets, dad que atende tds s requisits necessáris: a definiçã de classes, a cnstruçã de bjets cntend dads interns nã acessíveis e a dispnibilidade de um mecanism de herança. 3.4 Classes Segund Zuchini (1997), uma classe nada mais é d que a definiçã sintática d cmprtament de um cnjunt de bjets semelhantes, u seja, de quais dads eles sã cmpsts e qual a interface cm s utrs bjets. O autr ainda ressalta a utilizaçã das variáveis-membr e ds métds, que sã dads declarads dentr de uma classe. 14

18 Zuchini (1997) afirma que após a declaraçã de uma classe, um bjet pderá ser cnstruíd. Este prcess de cnstruçã de um bjet é chamad instance f (instanciaçã) da classe. Para Zuchini (1997), para declarar uma variável de um bjet é necessári utilizar nme da classe (já definid anterirmente) seguid pel nme da variável a ser criada. Pr exempl: se tiverms uma classe chamada MeiTransprte, a definiçã da criaçã de um bjet d tip MeiTransprte ficaria da seguinte frma: MeiTransprte carr; Cm bjet já declarad, pdems criar uma instanciaçã para que a aplicaçã Java pssa utilizar nv peradr: carr = new MeiTransprte(); u pdems criar bjet da seguinte maneira: MeiTransprte carr = new MeiTransprte(); Desde mment da instanciaçã a variável carr acessa tds s atributs da classe MeiTransprte. Figura 1 - Classe MeiTransprte A saída deste códig ficaria da seguinte frma: O carr tem 2 prtas e 4 rdas. A classe main cria uma instanciaçã da classe MeiTransprte através d bjet carr. Nte que peradr pnt (.) é utilizad para acessar um membr de uma classe 15

19 4. INTRODUÇÃO À LINGUAGEM JAVA Java é a linguagem de prgramaçã rientada a bjets, desenvlvida pela Sun 1 Micrsystems, capaz de criar tant aplicativs para desktp, aplicações cmerciais, sftwares rbusts, cmplets e independentes, aplicativs para a Web. Além diss, caracteriza-se pr ser muit parecida cm C++, eliminand as características cnsideradas cmplexas, dentre as quais pnteirs e herança múltipla. 4.1 Históric da linguagem Java Segund Clar e Sbral (2000), em 1991, um pequen grup de funcináris da Sun 1 incluind James Gsling mudu-se para a San Hill Rad, uma empresa filial. Os autres relatam que grup estava iniciand um prjet denminad Prjet Green, que cnsistia na criaçã de tecnlgias mdernas de sftware para empresas eletrônicas de cnsum, cm dispsitivs de cntrle remt das TV a cab. Clar e Sbral (2000) relatam que grup percebeu que nã pderiam ficar press as platafrmas, pis s clientes nã estavam interessads n tip de prcessadr que estavam utilizand e fazer uma versã d prjet para cada tip de sistema seria inviável. Desenvlveram entã sistema peracinal GreenOS, cm a linguagem de prgramaçã Oak. Eles se basearam n inventr d Pascal, através da linguagem USCD Pascal, que fi pineir da linguagem intermediária u máquina virtual. Segund Clar e Sbral (2000), em 1993, surgiu uma prtunidade para grup Green, agra incrprad cm FirstPersn a Time-Warner, uma empresa que estava slicitand prpstas de sistemas peracinais de decdificadres e tecnlgias de víde sb demanda. Os autres relatam que iss fi na mesma épca em que NCSA lançu MOSAIC 1.0, primeir navegadr gráfic para Web. A FirstPersn apstu ns testes de TV da Time-Warner, mas esta empresa preferiu ptar pela tecnlgia ferecida pela Silicn Graphics. Segund Clar e Sbral (2000), após mais um fracass, a FirstPersn disslveu-se e metade d pessal fi trabalhar para a Sun Interactive cm servidres digitais de víde. 1 A empresa Oracle cmpru a Sun cm uma prpsta de aprximadamente US$ 7,4 bilhões. A ferta representa um premi de 42% sbre valr da Empresa. 16

20 Entretant, a equipe restante cntinuu s trabalhs d prjet na Sun. Apstand na Web, vist que s prjets estavam send tds vltads para a WWW, surgiu a idéia de criar um brwser cm independência de platafrma, que fi HtJava. Clar e Sbral (2000) relatam que a equipe de desenvlviment ingeria muit café enquant estavam trabalhand, várias xícaras de café fram inseridas até que prjet estivesse prnt. Segund s autres em mai de 1995, a Sun anunciu um ambiente denminad Java (hmenagem às xícaras de café) que bteve sucess graças à incrpraçã deste ambiente as navegadres (brwsers) ppulares cm Netscape Navigatr e padrões tridimensinais cm VRML (Virtual Reality Mdeling Language Linguagem de Mdelagem para Realidade VIrtual). Clar e Sbral (2000) afirmam que a Sun cnsidera sucess d Java na Internet cm send primeir pass para utilizá-l em decdificadres da televisã interativa em dispsitivs prtáteis e utrs prduts eletrônics de cnsum exatamente cm Java tinha cmeçad em Os autres ainda relatam que sua natureza prtátil e prjet rbust permitem desenvlviment para múltiplas platafrmas, em ambientes tã exigentes cm s da eletrônica de cnsum. A primeira versã da linguagem Java fi lançada em

21 5. CONCEITO DE REUTILIZAÇÃO DE CÓDIGO Geralmente, nvs prjets de desenvlviment de sftware que primam pela ba qualidade d códig, cnceits de reutilibilidade e visam facilidade de manutençã, iniciam cm base em códigs-fnte já existentes u desenvlvem nvs códigs cm estes cnceits em mente. Prém, para desenvlvedr essa tarefa nã é tã fácil. O códig em questã pde ter sfrid intervenções pr diverss desenvlvedres. Certamente códig teve alterações e uma pssível evluçã cm passar ds ans. Ou seja, desenvlvedr precisará ter cnheciment sbre cmprtament d códig e entender a maneira de cm utilizá-l, afim de nã prejudicar a qualidade e desempenh d sftware. A desenvlver a aplicaçã prgramadr deve se precupar na melhr maneira de cm utilizar códig futuramente e principalmente quais partes deverá mdificar. Segund Krueger (1992) a reutilizaçã de sftware é uma precupaçã cnstante para rganizações que buscam aumentar a qualidade e a prdutividade de sftwares em seu prcess de desenvlviment. Para Basili, Briand e Mel (1996), através de experiências anterires a qualidade d sftware pde ser melhrada pr mei da reutilizaçã de códigs. Os autres ainda afirmam que cm iss crre também um aument de prdutividade, já que essas experiências estã send reutilizadas, nã tend que iniciar um prjet d zer. Um códig reutilizável é aquele que btém um cnjunt de fatres para suprtar diverss tips de prduts. Para iss desenvlvedr deve utilizar a prática de identificar recurss em seu aplicativ que variam de acrd cm prdut e mapear esses recurss a fim de especificar as variações de cada prdut, para essa pratica dams nme de Engenharia de Linha de Prdut (PLE). Segund Ezran, Mrisi e Tully (2002), s prjets de sftware raramente sã utilizads cm elements ttalmente nvs. Os autres ainda afirmam que cerca de 60% d códig de uma aplicaçã pdem ser reutilizads em utra aplicaçã, 60% ds artefats de prjet sã reutilizáveis, 75% das funções sã cmuns a mais de um prgrama, e apenas 15% d códig de um sistema é únic e nv. 18

22 5.1 Riscs da reutilizaçã de códig Segund Neighbrs (1989), as rganizações acadêmicas na área de cmputaçã ainda preferem trabalh em nvas terias a reutilizar experiências anterires. O autr ainda afirma que alguns ds trabalhs mais bem sucedids da cmputaçã fram fusões de frmalizaçã e técnicas de sucess riginadas de experiências anterires. Sabe-se que existem pssíveis riscs quant à reutilizaçã de códig, há ainda mtivs específics para a pssibilidade de falha da reutilizaçã. Muits gerentes de prjet nã permitem que sua equipe desperdice um determinad temp n entendiment de um códig já existente devid a um pssível aument n investiment n prjet. Outr pssível risc de falha é a falta de cmpreensã ds dmínis e cmpnentes d códig. Para facilitar a cmpreensã d códig existente, desenvlvedr d códig riginal deverá dcumentar, identificar e avaliar partes d códig que deverã ser reutilizadas. O desenvlvedr pde utilizar a mdelagem de dads cm uma ferramenta para analisar códig e esclher que deverá ser reutilizad. 19

23 6. ORIGEM DOS PADRÕES DE PROJETO Junir (2000) descreve que em 1977 Christpher Alexander publica um catálg cntend mais de 250 padrões cnstrutivs, que discutiam questões cmuns da arquitetura, descrevend em detalhe prblema e as justificativas de sua sluçã. Algum temp depis ele frmaliza seu métd de descriçã de padrões e racinal de sua aplicaçã, defendend que seu us nã limitaria s arquitets às sluções prescritas, mas garantiria a presença ds elements fundamentais que exprimiam cnceits atemprais de qualidade. Cm esta inspiraçã, Ward Cunnigham e Ken Beck, criaram cinc padrões vltads para desenvlviment de interfaces de usuári, que prprcinaram grandes ganhs a prjet nde fram aplicads. Tais resultads, apresentads em 1987, chamaram a atençã de muits integrantes da cmunidade de sftware fazend que tema ganhasse destaque cada vez mair nas cnferências sbre rientaçã a bjets. Erich Gamma, Richard Helm, Raph Jhnsn e Jhn Vlissides, que psterirmente se trnariam cnhecids cm a GF (Gang f Fur), cmeçam a trabalhar junts, publicand em 1995 livr "Design Patterns: Elements f Reusable Object-Oriented Sftware" [3], até hje uma referência absluta n tema. Desde entã s padrões de prjet se trnaram cnheciment essencial para prjetistas de sftware. 20

24 7. CARACTERÍSTICAS DOS PADRÕES DE PROJETO Gamma (2000) descreve s padrões de prjet cm as seguintes características: Nme: é usad para identificar padrã; Intençã: representa prpósit d padrã de prjet; Mtivaçã: descreve um cenári que cntém um prblema que padrã irá reslver; Aplicabilidade: descreve as situações nas quais s padrões pdem ser aplicads; Estrutura: representaçã gráfica através de diagramas de classe e sequência para demnstrar as classes d padrã e a relaçã entre s bjets; Participantes: entidades que participam d padrã; Clabrações: descreve cm as classes envlvidas clabram para realizar suas tarefas; Cnsequências: avaliaçã ds resultads que serã btids cm a aplicaçã d padrã; Implementaçã: cm padrã deve ser implementad; Exempl de códig: códigs que ilustram a implementaçã d padrã; Uss cnhecids: demnstraçã de cass de sistemas reais em que s padrões fram utilizads; Padrões relacinads: descreve relacinament existente entre s padrões. Cnfrme prpõem Gamma et al. (2000) e demnstrad n Quadr 1, s padrões de prjet sã ainda classificads pr dis critéris: prpósit e escp. O primeir divide s padrões de prjet em três categrias: criacinal, estrutural e cmprtamental. Enquant segund especifica se padrã aplica-se a bjets u classes. 21

25 Purpse Creatinal Structural Behaviral Scpe Class Factry Methd Adpater Interpreter Object Abstract Factry Builder Prttype Singletn Tabela 1 - Classificaçã ds Padrões de Prjet Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Adapter Bridge Cmpsite Decratr Facade Flyweight Prxy Template Methd 1 22

26 8. CATEGORIAS DE PADRÕES DE PROJETO Existem diverss tips de catálgs de padrões de prjets já desenvlvids, dentre s mais imprtantes, pdems citar: adrões f adrões adrões icrsft adrões rprativs adrões de ntegraçã adrões Para este trabalh terems cm base s padrões definids pel Gf. Padrões de prjet variam na sua granularidade e nível de abstraçã. Existem inúmers padrões de prjet e de alguma frma é necessári rganiza-ls. Esta seçã classifica padrões de prjet de md que pdems ns referir a famílias de padrões relacinads. A classificaçã ajuda a aprender s padrões n catálg mais rápid, e pde direcinar esfrçs para encntrar nvs padrões também. Os padrões pdem ter tant de criaçã, finalidade estrutural u cmprtamental. 8.1 Padrões de prjet criacinais Padrões de prjet criacinais examinam questões relacinadas à criaçã de bjets, pr exempl, impedir que um sistema crie mais de um bjet de uma classe u pstergar, até temp de execuçã, a decisã sbre quais tips de bjets serã criads. Pr exempl, supnha que estejams prjetand um prgrama de desenh em 3-D, em que usuári pde criar váris bjets gemétrics em 3-D cm cilindrs, esferas, cubs, tetraedrs etc. Supnha ainda que cada frma n prgrama de desenh seja representada pr um bjet. Em temp de cmpilaçã, prgrama nã sabe qual frma usuári irá esclher para desenhar. Cm base na entrada de usuári, esse prgrama deve ser capaz de determinar em que classe instanciar um bjet aprpriad para a frma que usuári selecinu. Se usuári criar um cilindr na U, nss prgrama deve saber cm instanciar um bjet da classe Cylinder. Quand usuári decide qual bjet gemétric desenhar, prgrama deve determinar em que subclasse específica instanciar esse bjet. 23

27 O livr da Gang f Fur descreve cinc padrões criacinais: Abstract Factry Builder Factry Methd Prttype Singletn 8.2 Padrões de prjet estruturais Padrões de prjet estruturais descrevem maneiras cmuns de rganizar classes e bjets em um sistema. O livr da Gang f Fur descreve sete padrões de prjet estruturai: Adapter Bridge Cmpsite Decratr Facade Flyweight Prxy 8.3 Padrões de prjet cmprtamentais Os padrões de prjet cmprtamentais frnecem estratégias testadas para mdelar a maneira cm s bjets clabram entre si em um sistema e ferecem cmprtaments especiais aprpriads para uma ampla variedade de aplicativs. Vams cnsiderar padrã de prjet cmprtamental Observer um exempl clássic que ilustra clabrações entre bjets. Pr exempl, cmpnentes GUI clabram cm seus uvintes para respnder a interações d usuári. Os cmpnentes GUI utilizam esse padrã para prcessar events da interface cm usuári. Um uvinte bserva alterações de estad em um cmpnente GUI particular registrand-se para tratar s events nessa GUI. Quand usuári interage cm esse cmpnente GUI, cmpnente ntifica seus uvintes (também cnhecid cm bservadres) de que seu estad mudu (pr exempl, um btã fi pressinad). 24

28 Também cnsiderams padrã de prjet cmprtamental Mement um exempl para ferecer um cmprtament especial a muits aplicativs. O padrã Mement permite que um sistema salve estad de um bjet, de md que esse estad pssa ser restaurad psterirmente. r exempl, muits aplicativs frnecem recurs desfaz que permite as usuáris reverterem para versões prévias ds seus trabalhs. O livr da Gang f Fur descreve 11 padrões de prjet cmprtamentais Chain f Respnsibility Cmmand Interpreter Iteratr Mediatr Mement Observer State Strategy Template Methd Visitr 25

29 9. DETALHANDO OS PADRÕES DE PROJETO N trabalh fram esclhids s seguintes padrões de prjet para estud: Singletn, Prttype, Factry Methd, Decratr, Adapter, Prxy,Observer, Iteratr e Cmmand. 9.1 Factry Methd Intençã Segund Freeman (2007) métd define uma interface para criar um bjet, mas permite às classes decidir qual classe instanciar. O Factry Methd permite a uma classe deferir a instanciaçã para subclasses Mtivaçã Gamma (2000) afirma que s framewrks utilizam classes abstratas para definiçã d relacinament entre bjets. Um framewrks também sã respnsáveis pela criaçã de bjets. O autr cnsidera um framewrk para aplicações que pde apresentar múltipls dcuments para usuári. Duas abstrações-chaves neste framewrk sã as classes Applicatin e Dcument. As duas classes sã abstratas, e s clientes devem prver subclasses para realizaçã de implementações especificas para a aplicaçã. O padrã FactryMethd encapsula cnheciment sbre a subclasse de Dcument que deve ser criada e mve este cnheciment para fra d framewrk. Figura 2 - Mtivaçã Factry Methd Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware 26

30 Para Gamma (2000), a redefiniçã de uma peraçã abstrata CreateDcument é realizada pelas subclasses de Applicatin, assim há um retrn aprpriad de Dcument. Uma vez que a subclasse de Applicatin é instaciada, pde entã instanciar Dcuments específics da aplicaçã sem cnhecer suas classes Aplicabilidade Segund Gamma (2000), padrã Factry Methd é utilizad quand: Uma classe nã pde antecipar a classe de bjets que devem criar; Uma classe quer que suas subclasses especifiquem s bjets que criam; Quand classes alegam respnsabilidade para uma dentre varias subclasses auxiliares, e há a necessidade de lcalizar cnheciment de qual subclasse auxiliar que é a delegada. 27

31 9.1.5 Estrutura Figura 3 - Estrutura Factry Methd Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Participantes Segund Gamma (2000), para padrã Factry Methd tems as seguintes participações: Prduct (Dcument): Define a interface de bjets que Factry Methd cria. CncretePrduct (MyDcument): Implementa a interface de Prduct. Creatr(Applicatin): Declara Factry Methd qual retrna um bjet d tip prduct. Creatr pde também definir uma implementaçã pr missã d Factry Methd que retrna pr missã um bjet CncretePrduct. O Factry Methd pde ser acinad para criar um bjet Prduct. CncreteCreatr (My Applicatin): Redefine Factry Methd para retrnar uma instancia de um CncretePrduct Clabrações Para Gamma (2000), Creatr depende das suas subclasses para definir Factry Methd de maneira que retrne uma instancia de CncretePrduct aprpriad. 28

32 9.1.8 Cnsequências Segund Gamma (2000), padrã Factry Methd trabalha apenas cm a interface Prduct, eliminand a necessidade de anexar classes especificas das aplicações n códig e pdend trabalhar cm quaisquer classes CncretePrduct definidas pel usuári. O Factry Methd tem uma desvantagem quant a necessidade d cliente ter que frnecer uma subclasse de Creatr smente para criaçã de um bjet CncretePrduct. A utilizaçã de subclasses é benéfica quand cliente tem que frnecer a td cust subclasses a Creatr. Abaix Gamma (2000), descreve duas cnsequências adicinais d Factry Methd: 1. Frnece ganchs para subclasses: Devid a fat d Factry Methd frnecer as subclasses um ganch para distribuiçã estendida d bjet a criaçã de bjets se trna bem mais fácil cm Factry Methd d que criads diretamente. 2. Cnecta hierarquias de classe paralelas: O Factry Methd nã necessariamente deve ser acinad smente pels Creatrs, s clientes pderã achar Factry Methd uteis, principalmente na utilizaçã de hierarquias de classes paralelas. Quand uma classe delega alguma de suas respnsabilidades para um classe separada dams nme de hierarquia de classes paralelas. Quand manipulams uma imagem redimensinand, girand u mvend-a usand muse, iss requer armazenament e atualizaçã da infrmaçã que registra estad de manipulaçã em um dad mment. Este estad é necessári smente durante a manipulaçã da imagem, prtant nã é precis ser mantid bjet-figura. Para armazenament e interaçã d registr de qualquer estad especific da manipulaçã de uma imagem, é melhr utilizarms bjet Manipulatr. Diferentes figuras pdem utilizar diferente subclasses Manipulatr para tratar interações especificas. A hierarquia de classes Manipulatr resultante é pel mens paralela à hierarquia de classes d métd Figure: 29

33 Figura 4 - Cnsequências Factry Methd Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Para que s clientes pssam criar crrespndente Manipulatr de um Figure a própria classe Figure frnece um Factry Methd CreateManipulatr. As subclasses de Figure substituem esses métds para retrnar uma instancia da subclasse Manipulatr crreta para sua utilizaçã. Cm alternativa, a classe Figure pde implementar CreateManipulatr para retrnar pr missã uma instancia de Manipulatr, e as subclasses de Figure pdem simplesmente herdas essa instancia pr missã. Cnsequentemente, as classes de Figure nã necessitam de uma subclasse crrespndente de Manipulatr, pr ist pdems dizer que as hierarquias sã smente parcialmente paralelas. O Factry Methd define a cnexã ebtre as duas hierarquias de classes. Neste métd está td cnheciment de cm as classes devem trabalham juntas Implementaçã Gamma (2000) cita s tópics abaix a aplicar Factry Methd: Duas variedades principais. O padrã Factry Methd tem duas principais variações: 1. Quand a classe Creatr é uma classe abstrata e nã frnece uma implementaçã para Factry Methd que ela declara. Neste cas exige subclasses para definir uma implementaçã prque nã existe uma missã razável, assim cntrnand dilema de ter que instanciar classes imprevisíveis. 2. Quand Creatr é uma classe cncreta e frnece uma implementaçã pr missã para Factry Methd. Neste cas, Cncret Creatr usa Factry 30

34 Methd principalmente pr razões de flexibilidade. O métd esta seguind uma regra que diz que s bjets devem ser criads numa peraçã separada de md que subclasses pssam redefinir a maneira cm eles sã criads. Essa regra garante que s prjetistas de subclasses, pssam alterar a classe de bjets d que a classe ancestral instanciada. Factry Methd parametrizads. O Factry Methd pde criar múltipls tips de prduts, métd recebe um parâmetr de identificaçã de cada bjet a ser criad. Tds s métds que Factry Methd cria cmpartilharã a interface de Prduct. A redefiniçã de um Factry Methd parametrizad permite, fácil e seletivamente estender u alterar s prduts que um Creatr prduz. Há ainda a flexibilidade de intrduzir nvs identificadres para nvs tips de prduts, u pder assciar identificadres existentes cm diferentes prduts. Variantes e tópics específics das linguagens. Diferentes linguagens levam a utras variantes bem interessantes, bem cm a cuidads especiais. Um utr tip de flexibilidade d Factry Methd é armazenament de uma dada classe a ser criada cm uma variável de classe Applicatin. Assim, nã há necessidade de intrduçã de subclasses de Applicatin para variar prdut. Utilizand template para evitar us de subclasses. O Factry Methd tem um prblema referente a criaçã de bjets-prduts, pis smente para realizaçã deste prcediment métds pde ser frçad para intrduçã de subclasses. Cnvenções de nmenclatura. É uma ba pratica us de cnvenções de nmenclatura que pdem trnar de maneira mais clara a utilizaçã d Factry Methd. Um exempl é framewrk de aplicações MacApp para Macintsh, este sempre declara uma peraçã abstrata que define Factry Methd cm Class* DMakeClass(), nde Class é a classe-prdut Padrões relacinads Gamma (2000) afirma que métd Abstract Factry é frequentemente implementad utilizand padrã Factry Methd. Os métds Factry Methd sã usualmente chamads dentr de Template Methds. Prttypes nã exigem subclassificaçã de Creatr. Cntud, 31

35 frequentemente necessitam de uma peraçã Inicialize na classe Prduct. A Creatr usa Inicialize para inicializar bjet. Já Factry Methd nã exige uma peraçã deste tip. 9.2 Prttype Intençã Para Gamma (2000), padrã Prttype tem a intençã de especificar s tips de bjets a serem criads usand uma instancia prtótip e criar nvs bjets pela cpia deste prtótip Mtivaçã Gamma (2000) descreve que pderíams cnstruir um editr para partituras musicais custmizand um framewrk geral para editres gráfics, acrescentand nvs bjets que representam ntas, pausas e pentagramas. O framewrk editr pde ter uma paleta de ferramentas para acrescentar estes bjets de musica à partitura. Pdems cnsiderar que framewrk frneça uma classe abstrata Graphic para cmpnentes gráfics, cm ntas e pentagramas. Além diss, frnece uma classe abstrata Tl para definir ferramentas cm aquelas da paleta. O framewrk também pde predefinir uma subclasse GraphicTl para ferramentas que criam instancias de bjets gráfics e s adicinam a dcument. Mas a subclasse GraphicTl apresenta um prblema, as classes para ntas e pentagramas sã especificas da nssa aplicaçã, mas a classe GraphicTl pertence a framewrk. GraphicTl nã sabe cm criar instancias das nssas classes musicais para acrescentá-las à partitura. sluçã é fazer raphictl criar um nv raphic cpiand u clnand uma instancia de uma subclasse de Graphic. Chamams esta instancia de Prttype. A GraphicTl é parametrizada pel prtótip que ela deveria clnar e acrescentar a dcument. Pde dizer que se tdas as subclasses de Graphic suprtam uma peraçã Clne, entã GraphicTl pde clnar qualquer tip de Graphic. Cm iss, em nss editr musical, cada ferramenta para criar um bjet musical é uma instancia de GraphicTl que é inicializada cm um diferente prtótip. Cada instancia 32

36 de GraphicTl prduzirá um bjet musical clnand seu prtótip e acrescentand clne à partitura. Figura 5 - Mtivaçã Prttype Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Cm a utilizaçã d padrã Prttype reduzims númers de classes, pis mesm usa instancias da mesma classe inicializada cm diferentes bitmaps e durações. Além, diss a inserçã de nvs tips de ntas musicais se trna mais fácil Aplicabilidade Segund Gamma (2000), padrã Prttype é utilizad quand: Quand um sistema é independente d cm s seus prduts sã criads, cmpsts u representads. Quand as classes a instanciar sã especificadas em temp de execuçã, pr exempl, pr carga dinâmica. Para evitar a cnstruçã de uma hierarquia de classes de fabricas paralela à hierarquia de classes d prdut. Quand as instancias de uma classe puderem ter uma dentre pucas cmbinações de diferentes estads. Pde ser mais cnveniente instalar um numer crrespndente de prtótips e clna-ls a invés de instanciar a classe, manualmente, cada vez cm um estad aprpriad. 33

37 9.2.5 Estrutura Figura 6 - Estrutura Prttype Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Participantes Segund Gamma (2000), para padrã Prttype tems as seguintes participações: Prttype (Graphic): declara uma interface para clnar a si própri. CncretePrttype (Pauta, Breve, Semibreve): Implementa uma peraçã para clnar a si própri. Client (GraphicTl): Cria um nv bjet slicitand a um prtótip que clne a si própri Clabrações Segund Gamma (2000), um cliente slicita a um prtótip que este clne a si própri Cnsequências Para Maia (2003) padrã Prttype pssui as seguintes cnsequências: Adiçã e remçã de prduts em temp de execuçã incrpra uma nva classe cncreta de prdut a um sistema simplesmente registrand uma instância prtótip cm cliente. Especificaçã de nvs bjets pela variaçã de valres define nvs cmprtaments através da cmpsiçã de bjets, pr exempl, pela especificaçã de valres para as variáveis de um bjet e nã pela definiçã 34

38 de nvas classes. Cm iss, define-se nvs tips de bjet pela instanciaçã das classes existentes e registrand as instâncias cm prtótip ds bjetscliente. Um cliente pde exibir um nv cmprtament através de delegaçã de respnsabilidades para prtótip. Reduçã d númer de subclasses permite clnar um prtótip em vez de pedir a um métd para cnstruir um nv bjet. Entã, nã será necessária uma hierarquia de classe Implementaçã Gamma (2000) descreve que padrã Prttype é muit útil quand utilizad cm linguagens estáticas e cita alguns pnts essenciais que devem ser levads em cnsideraçã: Usar um gerenciadr de prtótips: Quand em um sistema é utilizad inúmers prtótips de frma dinâmica, ist é, pdem ser criads u destruíds a qualquer mment é muit imprtante a criaçã de registrs. Cm iss, s clientes nã precisaram gerenciar s prtótips, pis pderã ser slicitads a medida que surgir uma necessidade de clnagem. Para este prcess autr dá nme de gerenciadr de prtótips. Implementar a peraçã Clne: O padrã Prttype tem muita dificuldade na implementaçã crreta da peraçã Clne, quand existem estruturas de bjets que cntêm referencias circulares. O autr descreve que existem dis tips de cpias de bjets. A cópia pr referencia e a cópia pr replicaçã. Gamma (2000) afirma que a cpia pr referencia é simples e, na mairia das vezes é suficiente. O autr ainda diz que quand é necessári clnar prtótips de estruturas cmplexas deve-se utilizar cpias pr replicaçã, pis clne e riginal devem ser independentes. Iniciar clnes: Alguns clientes pdem persnalizar estad intern de um prtótip. Para peraçã Clne em alguns cass s valres nã pdem ser alterads, pis numer pde variar inúmeras vezes entre as classes de prtótip. Quand é passad algum tip de parâmetr para a peraçã Clne impede uma interface unifrme de clnagem. 35

39 As classes-prtótip em algumas vezes definem perações para estabelecer estadschave. Cas iss acnteça s clientes pdem usar essas perações imediatamente após a clnagem. Se as classes prtótips nã definirem as perações para estabelecer estadschaves, entã terá que ser intrduzid uma peraçã Inicialize que recebe parâmetrs de inicializaçã cm arguments e estabelece estad intern d clne de acrd. Deve-se atentar para perações clne cm cpia pr replicaçã, as cpias pdem ter que ser deletadas antes da reinicializaçã Padrões relacinads Segund Gamma (2000), s padrões Prttype e Abstract Factry cmpetem entre si em varias situações. Prem, eles também pdem ser usads simultaneamente. O autr afirma que um padrã Abstract Factry pde armazenar um cnjunt de prtótips a partir ds quais pdem ser clnads e retrnads bjets-prdut. Gamma (2000), afirma que s prjets que utilizam intensamente s padrões Cmpsite e Decratr também pdem se beneficiar d us d Prttype. 9.5 Singletn Intençã Para Gamma (2000), padrã Singletn tem a funçã de garantir que uma classe tenha smente uma única instancia afim de frnecer um pnt glbal de acess a mesma Mtivaçã Gamma (2000) afirma que é de extrema imprtância que uma classe tenha apenas uma instancia. Ele cita cm exempl que múltiplas impressras utilizam apenas um únic spler de impressã e que em há apenas um únic sistema de cntabilidade para uma única rganizaçã. Gamma (2000), diz ainda que pderíams criar uma variável glbal para trnar bjet acessível, mas nã impediria a instanciaçã de múltipls bjets. A sluçã dada pr Gamma (2000) é deixar a própria classe respnsável pr manter cntrle de uma única instancia. Iss pde acntecer através da interceptaçã das 36

40 slicitações para criaçã de nvs bjets, assim tems a garantia que nenhuma utra instancia seja criada Aplicabilidade Segund Gamma (2000), padrã Singletn é utilizad quand: Quand há apenas uma instancia de uma classe, e essa instancia dá acess as clientes através de um pnt bem cnhecid. Quand existe a pssibilidade ds clientes utilizarem uma instancia estendida sem alterar seu códig, através de uma única instancia extensível pela subclasse Estrutura Figura 3 - Estrutura Singletn Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Participantes Segund Gamma (2000), para padrã Singletn nã tems participações de utrs padrões, smente a participaçã d própri padrã: Singletn Cria uma peraçã Instance que permite as clientes acessarem sua única instancia. Pde ser respnsável pela criaçã da sua própria instancia única. 37

41 9.5.6 Clabrações Segund Gamma (2000), um cliente acessa uma instancia Singletn smente pel fat da existência da peraçã Instance d padrã Cnsequências Gamma (2000), afirma que padrã Singletn apresenta váris benefícis: Acess cntrlad à instância única. Para ter um cntrle ttal de cm e quand s clientes estã acessand padrã Singletn realiza encapsulament da sua única instancia. Espaç de nmes reduzids. Nã existe mais a utilizaçã d espaç de nmes cm variáveis glbais que realizam armazenament de uma única instância. Permite um refinament de perações e da representaçã. Existe a pssibilidade de cnfiguraçã de uma aplicaçã cm uma instancia da classe em temp de execuçã. Ist prque a classe Singletn pde ter subclasses que pde ser utilizadas através de instancias. Permite um numer variável de instâncias. A mudança de ideias cm padrã Singletn nã é nem um puc cmplicada. Ele permite mais de uma instanciaçã da classe Singletn, assim desenvlvedr pde cntrlar numer de instancias que a aplicaçã irá utilizar. A alteraçã será realizada smente na peraçã que permite acess à instancia de Singletn. Mais flexível d que perações de classe. Um utr md de realizar empactament a funcinalidade d Singletn é usand perações de classes. Em C++ pde-se utilizar uma funçã-membr estática Implementaçã Gamma (2000) descreve tópics de implementaçã a serem cnsiderads a se utilizar padrã Singletn: Garantind uma única instância: O padrã Singletn transfrma uma em uma instancia nrmal uma instancia única. A classe é escrita de maneira que smente uma única instancia pssa ser criada. Uma frma mais cmum de se realizar este prcediment é cultand a peraçã que cria uma instancia utilizand uma peraçã de classe, garantind assim que uma única instancia seja criada. 38

42 Criand subclasses da classe Singletn: A criar uma subclasse de Singletn pnt mais imprtante é a instalaçã da sua única instancia de maneira que tds s clientes pssam usa-la. A variável que referencia a instancia d padrã deve ser inicializada cm uma instancia da subclasse. Para simplificar prcess deve-se determinar qual singletn irá ser utilizad na peraçã Instance d Singletn. Segund Gamma (2000), para deixar prcediment mais flexível pde-se utilizar sistema de registr de singletns. Pde ser criad um sistema de registr de cnheciment geral cm tds s nmes ds singletns. Assim sistema prcurará singletn crrespndente a registr e retrna resultad para cliente. Cm esta peraçã nã será mais necessári que Instance cnheça tdas as pssíveis classes u instancias de Singletn Padrões relacinads Segund Gamma (2000), muits padrões pdem ser implementads cm Singletn. Exempls de padrões: Abstract Factry, Builder e Prttype. 9.6 Adapter Intençã Segund Shallway e Trtt (2004) padrã Adapter é utilizad quand há necessidade da criaçã de uma nva interface para um determinad bjet que funcina de maneira semelhante, prém pssui interface incmpatível Mtivaçã Gamma (2000) exemplifica um editr de desenhs que permite a usuári desenhar e arranjar elements gráfics em figuras e diagramas. O editr define uma subclasse de Shape para cada tip de bjet gráfic: uma classe LineShape para linhas, uma classe PlygnShape para plígns, e assim pr diante. As classes citadas sã fáceis de implementar, pis a capacidade de desenh e ediçã das mesmas sã limitadas. Mas se frms levar em cnsideraçã uma classe TextShape que pde exibir e editar texts a situaçã é bem mais cmplicada, vist que a necessidade de atualizações de tela e gerenciament de buffer. Cm iss, nã pdems utilizar de maneira acplada bjets TextShape e Shape. 39

43 Segund Gamma (2000), pde-se definir TextShape de maneira que ele adapte a interface TextView à de Shape. Para iss pdems realizar prcess de duas frmas: A primeira frma é herdand a interface de Shape e a implementaçã de TextView u cmpr uma instancia de TextView dentr de uma TextShape e implementand TextShape em terms da interface de TextView. Pdems assim, chamar TextShape de um adaptadr. Figura 8 - Mtivaçã Adapter Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware O diagrama mstra cm um adaptadr pde atender algumas funcinalidades nã ferecidas pela classe adaptada. Text hape pde incluir a funçã de arrastar cada bjet de frma interativa, através da implementaçã da peraçã CreateManipulatr, de Shape, a qual retrna uma instancia da subclasse Manipulatr aprpriada.. Gamma (2000) afirma que Manipulatr é uma classe abstrata para bjets que sabem cm animar um Shape em respsta a usuári, cm arrastar uma frma gemétrica para uma nva lcalizaçã Aplicabilidade Segund Gamma (2000), padrã Adapter é utilizad quand: Quand há necessidade d us de uma classe existente cm uma interface incmpatível cm a aplicaçã em questã. Quand se quer criar uma classe reutilizável que ajuda classes nã relacinadas u nã previstas. Quand se quer utilizar varias subclasses já existentes, mas fr impraticável adaptar estas interfaces criand subclasses para cada uma delas. Um adaptadr de bjet pde adaptar a interface da sua classe-mãe. 40

44 9.6.4 Estrutura Figura 9 - Estrutura Adapter Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Participantes Segund Gamma (2000), para padrã Adapter tems as seguintes participações: Target (shape) Define a interface especifica d dmíni que Client utiliza. Client (DrawingEditr) Clabra cm s bjets cmpatíveis cm a interface de Target. Adaptee (TextView) Define uma interdade existente que necessita ser adaptada; Adapter (TextShape) Adapta a interface d Adaptee á interface de Target Clabrações Segund Gamma (2000), s clientes slicitam as perações de uma instancia Adapter, nde as perações de Adaptee executam a slicitaçã Cnsequências Segund Shallway e Trtt (2004), cm Adapter é pssível a utilizaçã de bjets criads anterirmente em estruturas atuais de classes, eliminand a limitaçã de suas interfaces. 41

45 Implementaçã Gamma (2000) afirma que a implementaçã d padrã Adapter nrmalmente é realizada de maneira simples e direta. Ele diz que pdems ter três maneiras de implementar adaptadres plugáveis. Segund Gamma (2000), uma das maneiras de implementaçã de adaptadres plugáveis é utilizar perações abstratas que devem ser implementadas pr subclasses que pdem adaptar s bjets hierarquicamente estruturad. Abaix segue um exempl de implementaçã da subclasse DirectryTreeDisplay acessand uma estrutura de diretóri. Figura 10 - Implementaçã Adapter Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Gamma (2000), descreve mais utra frma de implementar adaptadres plugáveis através de utilizaçã de bjets delegads. Abaix, segue um exempl nde TreeDisplay repassa as slicitações de acess à estrutura hierárquica para um bjet delegad: 42

46 Figura 4 - Implementaçã Adapter Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware E ultim md que Gamma (2000) descreve para de implementar adaptadres plugáveis é Adapters parametrizads. Segund autr, a única maneira de suprtar adaptadres cnectáveis, é parametrizar um adaptadr cm um u mais blcs. Um blc suprta a adaptaçã sem usar subclasses Padrões relacinads Segund Gamma (2000), muits padrões pdem ser implementads cm Adapter. Bridge: Seu bjetiv é separar uma interface da sua implementaçã, de md que elas pssam variar fácil e independente. Decratr: Pde aumentar utr bjet sem mudar sua interface. Cm iss Decratr é mais transparente para aplicaçã d que um adaptadr. Prxy: Tem cm bjetiv definir um representante u prcuradr para utr bjet e nã muda a sua interface. 43

47 9.7 Decratr Intençã Para Shallway e Trtt (2004), este padrã permite que uma nva cadeia de bjets seja criada e que nvs bjets respnsáveis pela nva funçã sejam iniciads juntamente cm esta cadeia Mtivaçã Segund Gamma (2000), a herança é uma frma de atribuiçã de respnsabilidades. Herdar uma brda de uma utra classe permite que tdas as subclasses fiquem também cm uma brda. Segund autr este métd é inflexível, pis a esclha da brda é realizada de maneira estática. Para Freeman (2007), bjetiv é permitir que as classes sejam facilmente estendidas para incrprar um nv cmprtament sem mdificar códig existente. Prjets que sã resistentes a mudanças e suficientemente flexíveis para assumir nvs recurss para atender as requisits que mudam Aplicabilidade Cm a aplicaçã desse padrã, pde-se adicinar respnsabilidades as bjets de frma dinâmica (valend-se da cmpsiçã) e iss pderá ser feit de frma transparente, sem afetar utrs bjets. Cm Decratr, pde-se evitar númer excessiv de subclasses n prjet, que nrmalmente acntece é utiliza-se a herança de maneira incrreta. (Brba, Gilmar. O Padrã de Prjet Decratr. Em: <http://gilmarbrba.cm.br/?p=758>. Acess em: 08 dezembr 2012.) 44

48 9.7.4 Estrutura Figura 5 - Estrutura Decratr Fnte: GilmarBrba Participantes CmpnenteIF (ex. ElementDeDcumentIF) - Define a interface de bjets que pdem ter respnsabilidades adicinadas dinamicamente. Cmpnente (ex. ElementDeDcument) - Pssível classe abstrata para fatrar códig cmum ds CmpnenteCncret. CmpnenteCncret (ex. ElementsAFrmatar) - Define um bjet a qual se pde adicinar respnsabilidades adicinais. Decradr (ex. MnElementDeDcument) - Mantém uma referência a um bjet CmpnenteIF e define uma interface igual à d Cmpnente. DecradrCncret (ex. Brda, Rladr) - Adicina respnsabilidades a Cmpnente. (Jacques. Decratr. Em: <http://www.dsc.ufcg.edu.br/~jacques/curss/map/html/pat/decratr.htm>. Acess em: 08 dezembr 2012.) Clabrações Segund Gamma (2000), Decratr repassa slicitações para seu bjet Cmpnent. 45

49 9.7.7 Cnsequências Mais flexível d que herança estática. Pde adicinar respnsabilidades dinamicamente. Pde até adicinar respnsabilidades duas vezes! (ex. brda dupla) Evita classes cm features demais n tp da hierarquia. Permite definir classes simples e adicinar funcinalidade de frma incremental cm bjets decradres. (Jacques. Decratr. Em: <http://www.dsc.ufcg.edu.br/~jacques/curss/map/html/pat/decratr.htm>. Acess em: 08 dezembr 2012.) Implementaçã Para Gamma (2000) tems muits aspects a serem cnsiderads na implementaçã d padrã Decratr: Cnfrmidade de interface: A interface d bjet decratr deve estar em cnfrmidade cm a interface d cmpnente que ele decra. Omissã da classe abstrata Decratr: Para acrescentar uma respnsabilidade nã é necessári criar uma nva classe. Pdems fundir a respnsabilidade de Decratr através d CncreteDecratr para repassar slicitações para cmpnente. Mantend leves as classes Cmpnent: Para que uma classe fique relativamente leve ela deverá fcalizar smente na definiçã de uma interface. Mudar exterir de um bjet versus mudar seu interir: Um decradr é cmparad a uma pele sbre um bjet que muda seu cmprtament. Para alteraçã interna de um bjet pdems utilizar padrã Strategy. Este padrã permite alterar u estender a funcinalidade d cmpnente pela substituiçã d bjet strategy. Os decradres sã transparentes para cmpnente. Figura 6 - Implementaçã Decratr Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware 46

50 Quand sã utilizadas estratégias, própri cmpnente referencia e mantem as estratégias crrespndentes: Figura 7 - Implementaçã Decratr Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Padrões relacinads Segund Gamma (2000), tems alguns padrões relacinads na cmpsiçã d Decratr: Adapter: respnsável pr dar a bjet uma interface cmpletamente nva. Cmpsite: Um padrã Decratr pde ser vist cm um padrã Cmpsite degenerad cm smente um cmpnente. Prém, um Decratr acrescenta apenas respnsabilidades adicinais. Strategy: Altera interir de um bjet. 9.8 Prxy Intençã Segund Markus (2005) padrã Prxy prvê uma referência para um bjet cm bjetiv de cntrlar acess a este Mtivaçã Gamma (2000), explica que cntrle de acess a bjet é uma frma de adiar cust de criaçã e inicializaçã d mesm, até mment que tiverms necessidade de utilizarms ele. O autr exemplifica, um editr de dcuments, nde sua inicializaçã deve 47

51 ser rápida. Para iss, nã pdems pr exempl inicializar junt cm a aplicaçã grandes imagens rasterizadas de uma só vez, nem tds s bjets estarã visíveis a mesm temp. Cm tems que criar bjets sb demanda, utilizams um prxy que funcina cm um substitut temprári da imagem riginal. Figura 8 - Mtivaçã Prxy Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Segund Gamma (2000), prxy armazena infrmações sbre a extensã e tamanh da imagem sem ter que instancia-la. O Editr de dcuments acessa as imagens através da interface definida pela classe abstrata Graphic. ImagePrxy é uma classe para imagens que sã criadas sb demanda, ela mantem nme d arquiv cm uma refencia para a imagem d disc. Figura 9 - Mtivaçã Prxy Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Gamma (2000) cita a peraçã Draw, que tem bjetiv de garantir que a imagem é instanciada antes de repassar a ela a slicitaçã. 48

52 9.8.3 Aplicabilidade Segund Gamma (2000), padrã Prxy é aplicável quand há necessidade de uma referencia mais versátil u sfisticada. Abaix segue algumas situações nas quais padrã em questã é aplicável: Um remte prxy frnece um representante lcal para um bjet num espaç de endereçament diferente. Um virtual prxy cria bjets cars sb de demanda. Um prtectin prxy faz cntrle d acess para bjet riginal. Cm prtetin prxy pdems definir diferentes tips de acesss para s bjets. Um smart reference substitui um pinter que executa ações adicinais quand um bjet é acessad. Ele cnta numer de referencias para bjet real, carrega um bjet persistente para a memria quand referenciad pela primeira veze verifica se bjet real está blquead antes mesm d acess Estrutura Figura 10 - Estrutura Prxy Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Participantes Segund Gamma (2000), para padrã Prxy tems as seguintes participações: 49

53 Prxy (ImagePrxy) mantem a referencia que permite a prxy acessar bjet real, cntrland- e em algumas situações é respnsável pela sua criaçã e exclusã. Frnece uma interface idêntica a de Subject, de md que prxy pssa substituir bjet real. Subject (Graphic) define uma interface cmum para RealSubject e Prxy, de maneira que um Prxy pssa ser usad em qualquer lugar em que um RealSubject é esperad. RealSubject (Image) Define bjet real que prxy representa Clabrações Segund Gamma (2000), padrã Prxy repassa as slicitações para RealSubject quand aprpriad Cnsequências Segund Gamma (2000), padrã Prxy intrduz um nível de referencia indireta n acess a um bjet. A referencia indireta tem váris uss, dependend d tip de prxy: 1. Prxy remt: culta fat de um bjet reside em um espaç de endereçament diferente. 2. Prxy virtual: cria bjets sb demanda. 3. Prxy de prteçã: Realiza algumas tarefas de rganizaçã quand s bjets sã criads. Segund Gamma (2000), a criaçã de bjets sb demanda é chamada de cpy-n-write. Para que esta timizaçã funcina bjet deve ter suas referencias cntadas. O cpy-nwrite reduz de maneira significativa cust cmputacinal da cópia de bjets relativamente pesads Implementaçã Para Gamma (2000) tems muits aspects a ser cnsiderad na implementaçã padrã Prxy: Prxy nã tem sempre que cnhecer tip d bjet real: Uma classe Prxy trata cm seu bjet através de uma interface abstrata, nã tend a necessidade da criaçã de 50

54 uma classe Prxy para cada classe RealSubject, pdend tratar tdas essas classes de maneira unifrme Padrões relacinads Segund Gamma (2000), tems alguns padrões relacinads na cmpsiçã d Prxy: Adapter: Frnece uma interface diferente para bjet que adapta, a cntrari d Prxy que frnece a mesma interface cm seu bjet. Decratr: Acrescenta uma u mais respnsabilidades a um bjet, enquant que um prxy cntrla acess a um bjet. 9.9 Cmmand Intençã Encapsular uma slicitaçã cm um bjet, permitind desta frma parametrizar clientes cm diferentes slicitações, enfileirar u fazer registr (lg) de slicitações e suprtar perações que pdem ser desfeitas. (Jacques. Cmmand. Em: <http://www.dsc.ufcg.edu.br/~jacques/curss/map/html/pat/decratr.htm>. Acess em: 08 dezembr 2012.) Mtivaçã Para Freeman (2007), quand se encapsula a chamada de métds pse-se cristalizar parte da cmputaçã para que bjet que está invcand esse prcess nã precise saber cm as cisas sã feitas. Ele só usará métd cristalizar para execuçã de tarefas. O autr afirma que encapsulament das chamadas de métds ns permite fazer algumas cisas mais engenhsas, cm pr exempl salvar métds encapsulads para fins de registr u reutiliza-ls para implementaçã de recurss de refazer em n códigfnte. 51

55 Figura 11 Mtivaçã Cmmand Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Gamma (2000) diz que padrã Cmmand sempre desacpla bjet que invca a peraçã daquele que tem cnheciment para executá-la Aplicabilidade Segund Gamma (2000), Cmmand é usad quand desejams: Parametrizar bjets pr uma açã a ser executada. Especificar, enfileirar e executar slicitações em temps diferentes. Suprtar desfazer perações. A peraçã Execute, de Cmmand armazena estads para pssíveis reversões de efeits n própri cmand. Suprtar registr de mudanças de maneira que pssam ser reaplicadas n cas de uma queda de sistema. Estruturar um sistema em trn de perações de alt nível cnstruídas sbre perações primitivas. 52

56 9.9.4 Estrutura Figura 12 Estrutura Cmmand Fnte: UFCG Participantes Cmmand: Declara uma interface para a execuçã de uma peraçã. CncreteCmmand: Define uma vinculaçã entre um bjet, um Receiver e uma açã. também implementa execute através da invcaçã da peraçã crrespndente n Receiver. Client: Cria um bjet CncreteCmmand e estabelece seu receptr. Invker: Slicita a Cmmand a execuçã da slicitaçã Receiver: Sabe cm executar as perações assciadas a uma slicitaçã. Qualquer classe pde funcinar cm um Receiver. (Cmmannd. Em: <http://www.csi.uneb.br/padres_de_prjets/cmmand_2.html>. Acess em: 08 dezembr 2012.) Clabrações Segund Gamma (2000), cliente cria um bjet CncreteCmmand e especifica seu receptr. O bjet Invker armazena bjet CncreteCmmand. Este bjet Invker emite uma slicitaçã chamand Execute n Cmmand. O bjet CncreteCmmand invca perações n seu Receiver para executar a slicitaçã. Veja diagrama abaix as cm interações entre estes bjets. 53

57 Figura 13 Clabrações Cmmand Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Cnsequências Segund Gamma (2000), padrã Cmmand tem as seguintes cnsequências: Cmmand desacpla bjet que invca a peraçã daquele que sabe cm executá-la. Cmmands, pdem ser manipulads e estendids cm qualquer utr bjet. Váris cmands pdem ser unificads para frmar um cmand cmpst. Cm nã tems que alterar classes já existentes, tems facilidade de acrescentar nvs Cmmands Implementaçã Para Gamma (2000) tems alguns aspects a ser cnsiderad na implementaçã d padrã Cmmand: Quã inteligente deveria ser um cmand? O Cmmand define uma vinculaçã entre um receptr e as ações que executam a slicitaçã Além, diss padrã implementa tud szinh sem delegar para nenhum receptr. Suprtand desfazer e refazer: Uma classe CncreteCmmand tem a capacidade de armazenar estads adicinais para desfazer u refazer alg. 54

58 Evitand a acumulaçã de errs n prcess de desfazer: Os errs pdem se acumular à medida que s cmand sã executads, desexecutads e reexecutads. Entã, pdems armazenar mais infrmações n cmand para assegurar que s bjets sejam restaurads a seu estad riginal Padrões relacinads Um Cmpsite pde ser usad para implementar MacrCmmands. Um Mement pde manter estads que cmand necessita para desfazer seu efeit. Um cmand que deve ser cpiad antes de ser clcad na lista histórica funcina cm um Prttype. (Jacques. Cmmannd. Em: <http://www.csi.uneb.br/padres_de_prjets/cmmand_2.html>. Acess em: 08 dezembr 2012.) 9.10 Iteratr Intençã O padrã Iteratr serve para acessar cnteúd de um agregad sem expr sua representaçã externa. (Rcha, Helder. Padrões de design cm aplicações em Java. Em: <http://www.argnavis.cm.br/curss/java/j930/tutrial/design_patterns.pdf>. Acess em: 09 dezembr 2012.) Mtivaçã Segund Gamma (2000) padrã Iteratr ns permite percrrer uma lista de maneiras diferentes sem inflar a interface da lista cm perações para diferentes percurss. Pde-se ter mais de um percurs pendente sbre a mesma lista. Segund autr a principal ideia deste padrã é retirar a respnsabilidade de acess e percurs d bjet lista e clca-la em um bjet Iteratr. Em determinadas estruturas, pde-se haver frmas diferentes de caminhament ("transversal") e encapsular a frma exata de caminhament. Exempl: árvre pde ser varrida "em rdem", em "pós-rdem", em "pré-rdem". 55

59 (Jacques. Iteratr. Em: <http://www.dsc.ufcg.edu.br/~jacques/curss/map/html/pat/iteratr.htm>. Acess em: 09 dezembr 2012.) Aplicabilidade Segund Gamma (2000), devems utilizar padrã Iteratr para: Acessar s cnteúds de um bjet agregad sem expr a sua representaçã interna. Suprtar múltipls percurss de bjets agregads. Frnecer uma interface unifrme que percrra diferentes estruturas agregadas Estrutura 56

60 Figura 14 Estrutura Iteratr Fnte: DSC UFCG Participantes Segund Gamma (2000), para padrã Iteratr tems as seguintes participações: Iteratr Define uma interface para acessar e percrrer elements. CncreteIteratr Implementa a interface de Iteratr e mantem cntrle da psiçã crrente n percurs d agregad. Aggregate Define uma interface para criaçã de um bjet Iteratr. CncreteAggregate Implementa a interface de criaçã d Iteratr para retrnar uma instancia d CncreteIteratr aprpriad Clabrações Segund Gamma (2000), um CncreteIteratr mantém cntrle d bjet crrente n agregad e pde cmputar bjet sucessr n percurs. 57

61 Cnsequências A mera substituiçã de um Iteradr permite caminhar numa cleçã de várias frmas. Juntar a interface de caminhament num Iteradr alterand esta interface da cleçã, simplificand assim a interface desta cleçã. Várias iterações pdem estar crrend a mesm temp, já que estad de uma iteraçã é mantid n Iteradr e nã na cleçã. (Jacques. Iteratr. Em: <http://www.dsc.ufcg.edu.br/~jacques/curss/map/html/pat/iteratr.htm>. Acess em: 09 dezembr 2012.) Implementaçã Segund Gamma (2000) Iteratr tem váris frma de implementaçã, abaix irems apresentar algumas imprtantes: Quem cntrla a iteraçã? Quand cliente cntrla a iteraçã, iteradr é chamad de um iteradr extern, e quand é iteradr que faz cntrle, chamams de iteradr intern. Os iteradres interns sã mais fáceis de utilizar, pis eles sã quem definem a lgica para cliente. Quem define algritm de percurs? O agregad pde definir algritm de percurs e utilizar iteradr smente para armazenar estad da iteraçã. Este tip de iteradr é chamad de cursr, pis ele que apnta para a psiçã crrente d agregad. Quã rbust é iteradr? Um iteradr rbust é aquele que garante que inserções u remções nã interferirã cm percurs, ele cnsegue ist sem cpiar agregad. Operações adicinais d Iteratr: A interface mínima de Iteratr cnsiste das perações First, Next, IsDne e CurrentItem. Iteradres pdem ter acess privilegiad: Cm iteradr e seu agregad sã frtemente acplads pdems trnar iteradr uma friend d seu agregad. As subclasses de Iteratr pdem usar estas perações prtegidas para bter acess privilegiad a agregad. Iteratrs para cmpsites: Iteradres externs pdem ser difíceis de implementar sbre estruturas recursivas de agregads cm aquelas encntradas n padrã Cmpsite, prque uma psiçã da estrutura pde abranger muits níveis de agregads encaixads. 58

62 Iteradres nuls: Um NullIteratr é um iteradr degenerad útil para tratar cndições de cntrn. Ele sempre termina cm um percurs, ist é, a peraçã IsDne sempre devlve valr true Padrões relacinads Segund Gamma (2000), tems smente alguns padrões relacinads a Iteratr: Cmpsite: Os iteradres sã frequentemente aplicads a estruturas recursivas, cm s Cmpsites. Factry Methd: Os Iteradres plimórfics dependem de métds de fabrica para instanciar a subclasse aprpriada de Iteratr. Mement: Muit utilizad em cnjunt cm padrã Iteratr. Um iteradr pde usar um Mement para capturar estad de uma iteraçã Observer Intençã Para Jandl (2003) padrã Observer define um mecanism de ntificaçã para múltipls bjets interdependentes Mtivaçã Segund Gamma (2000) padrã Observer estabelece cm relacinaments cm planilha, gráfic de barras e bjet de dads devem ser ntificads sbre qualquer mudança n seu estad. Os bjetspchave neste padrã sã subject e bserver. Um Subject pde ter um numer qualquer de bservadres dependentes. Tds s bservadres sã ntificads quand Subject sfre uma alteraçã de estad. Este tip de interaçã é cnhecid cm publish-subscribe Aplicabilidade Segund Gamma (2000), padrã Observer pderá ser usad em qualquer uma das seguintes situações: 59

63 Quand uma abstraçã tem dis aspects, um dependente d utr. Quand uma alteraçã em um bjet exige mudanças em utrs, e nã sabems quants bjets necessitam ser alterads. Quand um bjet deveria ser capaz de ntificar utrs bjets sem fazer hipóteses, u usar infrmações, de quem sã estes bjets Estrutura Figura 15 Estrutura Observer Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Participantes Segund Gamma (2000), para padrã Observer tems as seguintes participações: Subject Cnhece seus bservadres. Frnece uma interface para acrescentar e remver bjets para assciar e desassciar bjets bserver. Observer Define uma interface de atualizaçã para bjets que deveriam ser ntificads sbre mudanças em um Subject. CncreteSubject Armazena estads de interesse para bjets CncreteObserver e envia uma ntificaçã para seus bservadres quand seu estad se altera. 60

64 CncreteObserver Mantem uma referencia para um bjet CncreteSubject. Armazena estads que deveriam permanecer cnsistentes cm s d Subject. Implementa a interface de atualizaçã de Observer, para manter seu estad cnsistente cm d subject Clabrações Segund Gamma (2000), CncreteSubject ntifica seus bservadres sempre que crre uma alteraçã que pde trnar incnsistente seu estad. Após ter sid infrmad, um bjet Cncretebserver pde cnsultar Subject para bter infmações. Esta infmaçã é utilizada para recnciliar seu estad cm aquele de Subject. Figura 16 Clabrações Observer Fnte: Design Patterns: Elements f Reusable Object-Oriented Sftware Cnsequências Segund Gamma (2000), Observer permite variar subjects e bservadres de frma independente. Pdems reutilizar subjects sem reutilizar seus bservadres e vice-versa. Ele permite acrescentar bservadres sem mdificar Subject u utrs bservadres. Abaix seguem s benefícis e deficiências d padrã: Acplament abstrat entre Subject e Observer: Tud que Subject sabe é que ele tem uma lista de bservadres, cada um seguind a interface simples da classe abstrata Observer. O acplament entre Subject e s bservadres é abstrat e mínim. 61

65 Suprte para cmunicações bradcast : A ntificaçã que um Subject envia nã necessita de especificar seu receptr. A ntificaçã é transmitida autmaticamente para tds s bjets interessads que a subscreveram. Atualizações inesperadas: Um bservadr nã tem cnheciment da presença de utr bservadr. Uma peraçã aparentemente inócua n Subject pde saudar uma cascata de atualizações ns bservadres e seus bjets dependentes Implementaçã Gamma (2000) descreve abaix váris aspects referente a implementaçã d mecanism de dependência: Mapeand subjects para s seus bservadres: Armazenar referencias pde ser muit dispendisa quand existem muits subjects. Pdems trcar espaç pr temp usand um mecanism de pesquisa assciativ para manter mapeament Subject-parabservadr. Observand mais que um subject: Um subject pde passar a si própri cm um parâmetr para a peraçã Update, assim permitind a bservadr saber qual Subject examinar. Quem dispara a atualizaçã? Pdems ter perações de estabeleciment de estads n Subject que chame Ntify após elas mudarem estad Subject u trnar s clientes respnsáveis pr chamar Ntify n mment crret. Referencias a vazi para subjects deletads: A remçã de um Subject nã deve prduzir referencias a vazi ns seus bservadres. Pdems fazer cm que Subject ntifique s seus bservadres quand é deletad, de md que pssam restabelecer suas referencias para ele. Garantind que estad d Subject é autcnsistente antes da emissã da ntificaçã: É imprtante se assegurar que estad d Subject é autcnsistente antes de invcar Ntify, prque s bservadres cnsultam Subject sbre seu estad crrente n curs da atualizaçã de seus própris estads. Evitand prtcls de atualizaçã específics ds bservadres: s mdels push e pull: Implementaçã d padrã Observer frequentemente tem Subject emitind infrmações adicinais sbre a mdificaçã. O Subject passa esta infrmaçã cm um argument para Update. Especificand explicitamente as mdificações de interesse: Cm melhria na eficiência d prcess de atualizaçã, pdems estender a interface de inscriçã n Subject 62

66 para permitir as bservadres se registrarem smente para events específics de seu interesse. Encapsuland a semântica de atualizações cmplexas: Quand relacinament de dependência entre subjects e bservadres é particularmente cmplex pde ser necessári um bjet que mantenha estes relacinaments. Chamams este bjet de ChangeManager. Seu bjetiv é minimizar trabalh necessári para fazer cm que s bservadres reflitam uma mudança n seu Subject. Cmbinand as classes Subject e Observer: As biblitecas de classes escritas em linguagens que nã têm herança múltipla geralmente nã definem classes Subject e Observer separadas, mas cmbinam suas interfaces em uma única classe. Iss permite definir um bjet que funcina tant cm um Subject cm um bservadr, sem usar herança múltipla Padrões relacinads Segund Gamma (2000), tems alguns padrões relacinads a Observer: Mediatr: Encapsula a semântica de atualizações cmplexas. O ChangeManager funcina cm um mediadr entre subjects e bservadres. Singletn: O ChangeManager pde usar padrã Singletn para trna-l únic e glbalmente acessível. 63

67 10. IMPLEMENTAÇÃO Cm base d trabalh fi utilizad padrã de prjet Observer. Este padrã fi esclhid, pis sua implementaçã didaticamente é mais clara para ser exemplificada. Na implementaçã d trabalh fi criad um banc de dads para armazenament ds dads de tds s livrs cadastrads. A classe Cnexã ficu encarregada de realizar a pnte entre a aplicaçã e banc de dads Mysql. Para que a cnexã acntecesse cm sucess fi imprtad cnectr mysql-cnnectr na versã Esta bibliteca frnece uma serie de classes relacinadas as tarefas cm banc de dads. A linha de códig que representa a inclusã d cnnectr a códig segue abaix: Class.frName("cm.mysql.jdbc.Driver"); Para trazer tds s dads d banc de dads fi desenvlvida a classe LivrsDB. Nesta classe fi criad um métd chamad buscalivrs() d tip ArrayList. Este métd faz um select na tabela tbl_livrs trazend tds s dads de tds s camps: PreparedStatement ps = cn.preparestatement("select * frm tbl_livrs"); Após tds s dads serem recuperads d banc cada variavel recebe sua infrmaçã que é guardada em um ArrayList. Este Array é retrnad n final d métd. Para exemplificar uma classe a ser bservada fi desenvlvida a classe CatalgLivrs. Pr iss a classe herda Observable cnfrme códig abaix: public class CatalgLivrs extends Observable{ Esta classe pssui um métd chamad CatalgAtualizad. Neste métd tems duas chamadas que sã extremamente imprtantes para a aplicaçã: setchanged(); - Este métd indica que huve uma alteraçã de estad ntifyobservers(); - Avisa tdas as classes bservadras da alteraçã N metd getlivr há um laç que percrre um vetr até final setand seus respectivs valres. Estes dads sã riginads d banc de dads. A classe Dispsitiv é a classe que cntem Main. Esta classe faz as chamadas para as classes CatalgLivrs, LivrsDB e LivrsAll que é a classe bservadra. A classe LivrsAll implementa Observer. A classe cntem um métd chamad LivrsAll que recebe um bjet d tip Observable. O metd adicina a classe cm uma bservadra. Veja códig d metd a seguir: 64

68 public LivrsAll(Observable bs) { //adicinand um bservadr this.bs = bs; bs.addobserver(this); A classe ainda pssui mais dis métds: update (implementaçã) e visualizar. O metd visualizar é bem simples. Ele imprime s dads atualizads repassads para classe bservadra. O metd update é uma implementaçã da interface Observable. Neste metd há uma checagem se fi recebid um bjet d tip CatalgLivrs. Se sim, tds s camps sã atualizads, para que psterirmente sejam exibids na tela pela classe visualizar. Segue parte d códig: if (bs instancef CatalgLivrs) { CatalgLivrs dn = (CatalgLivrs) bs; this.titul = dn.gettitul(); this.autr01 = dn.getautr01(); this.autr02 = dn.getautr02(); this.autr03 = dn.getautr03(); this.editra = dn.geteditra(); this.an = dn.getan(); this.isbn = dn.getisbn(); this.livraria = dn.getlivraria(); this.categria = dn.getcategria(); this.apresentaca = dn.getapresentaca(); this.prec = dn.getprec(); //chama metd para imprimir s valres na tela visualizar(); 65

69 10.1 Diagrama de Classes Figura 17 - Diagrama de Classes - Implementaçã 66

70 11. CONSIDERAÇÕES FINAIS O intuit deste trabalh fi estudar s principais cnceits referente a Orientaçã a Objets, reutilizaçã de códigs e Design Patterns. Os padrões sã dividids em criacinais, cmprtamentais e estruturais. Cada padrã de prjet pssui características em cmum cm s utrs padrões. Durante estud, fi cnstatad que s padrões de prjet nã sã limitads apenas para prgramadres iniciantes. Tant prgramadres iniciantes cm experientes pdem utilizar s métds aplicads neste trabalh para melhria de Qualidade de seus sftwares. Prém há um fatr muit imprtante a ser cnsiderad. Quand gerente d prjet decide trabalhar smente cm prgramadres iniciantes, a reutilizaçã de códig se trna mais cmplicada, pis estes prgramadres terã que perder um cert temp para estud d códig e até mesm de algumas sintaxes da linguagem de prgramaçã. Quand se trabalha cm prgramadres experientes s mesms já nã tem este prblema de perda de temp em estud de códig, prém seu cust é relativamente mair d que prgramadr iniciante. Caberá a gerente de prjet decidir pr qual caminh ele vai decidir, dependend das cndições ecnômicas da Empresa. Um estud realizad pela IBM diz que quand se prgrama mens, há mens errs. Sem falar que quand há a reutilizaçã de códig, prgramadr está utilizand um códig que já fi cmpilad, testad e até mesm crrigid. Existe uma gama de benefícis quand utilizams s padrões de prjet. Dentre eles pdems citar s principais: Melhr facilidade de cmpreensã de sistemas rientads a bjets já existentes; Trna prjetista de sftware um prfissinal melhr qualificad; Os códigs fntes se trnam mais reutilizáveis; Há um ganh de prdutividade de desenvlviment; Os padrões auxiliam na determinaçã de cm rerganizar um prjet, reduzind vlume de refatraçã; Minimizar a quantidade de acplament entre bjets da aplicaçã; 67

71 O desenvlvedr aumenta sua gama de cnheciments na resluçã de prblemas já enfrentads; Nem sempre prgramadr cnseguirá reslver seu prblema diretamente cm um padrã de prjet. E nem sempre um códig rientad a bjet, u um códig desenvlvid em Java será menr d que um códig prcedimental u desenvlvid em utra linguagem, iss depende exclusivamente da habilidade d prgramadr. 68

72 12. REFERÊNCIAS BASILI, V. R.; BRIAND, L.; MELO, W. Hw reuse influences prductivity in bject-riented systems. Cmmunicatins f the ACM, v. 39, n. 10, p , BORBA, G. O Padrã de Prjet Decratr. Dispnível em: <http://gilmarbrba.cm.br/?p=758>. Acess em: 08 dez 2012.) BOOCH, Grady. Object-Oriented Analysis and Design with Applicatins. Redwd City, CA: Benjamin/Cummings Publishing C., CLARO, D. B. e Sbral J. B. M. PROGRAMAÇÃO EM JAVA. Cpyleft Pearsn Educatin. Flrianóplis, SC, 2000 EZRAN, M.; MORISIO, M.; TULLY, C. Practical Sftware Reuse. [S.l.]: Springer, E. Gamma, R. Helm, R. Jhnsn, and J. Vlissides. Design Patterns: Elements f Reusable Object- Oriented Sftware. Addisn-Wesley, FREEMAN, Eric; FREEMAN Elisabeth. Use a Cabeça (Head First) Padrões de Prjet. Ri de Janeir : Alta Bks, JACQUES. Decratr. Dispnível em: <http://www.dsc.ufcg.edu.br/~jacques/curss/map/html/pat/decratr.htm>. Acess em: 08 dez NDL,.. ais ava. ã aul, : Futura, JUNIOR, J. P. Padrões de Prjet em Java: Reutilizand prjet de sftware. Revista Mund Java, Sã Paul, v. 1.0, n. 2, jul./ag Dispnível em: < 0&id= &attach=PadresDePrjetEmJava.pdf>. Acess em: 30 abr KRUEGER, C. Sftware reuse. ACM Cmputing Surveys, v. 24, n. 02, p , 1992 LACERDA, Antôni Crrêa de et al. Tecnlgia: estratégia para cmpetividade. Sã Paul: Nbel, MAIA, P. A. J. Prttype um Design Patterns de Criaçã. Dispnível em: <http://www.guj.cm.br/cntent/articles/patterns/prttype_pattern_guj.pdf>. Acess em: 09 dez

73 MARKUS Schumacher, Eduard Fernandez-Buglini, Duane Hybersn, Frank Buschmann, Peter Smmerland. Security Patterns: Integrating Security and Systems Engineering, Wiley Series in Sftware Design Patterns, PETER, JANDL J. Java e a rientaçã a bjets. Sã Paul: Berkeley Brasil, ROCHA, H. Padrões de design cm aplicações em Java. Dispnível em: <http://www.argnavis.cm.br/curss/java/j930/tutrial/design_patterns.pdf>. Acess em: 09 dezembr RUMBAUGH, J., BLAHA, M., PREMERLANI, W.,EDDY, F. e LORENSEN, W. Object-Oriented Mdeling and Design. Englewd Cliffs, NJ: Prentice-Hall, ZUCHINI, M. H., SILVEIRA, L. G. Jr, JANDL, P. Jr., LIMA, T.C.B & CASOTTI, F.A.G. Orientaçã a bjets: uma visã em C++. Apstila. Itatiba, SP: Universidade Sã Francisc,

74 ANEXO A Implementaçã da classe LivrV. package v; //esta classe serve para armazenar s dads de tds s camps public class LivrV { private String titul; private String autr01; private String autr02; private String autr03; private String editra; private int an; private int isbn; private String idima; private String livraria; private String categria; private String apresentaca; private flat prec; public String gettitul() { return titul; public vid settitul(string titul) { this.titul = titul; public String getautr01() { return autr01; public vid setautr01(string autr01) { this.autr01 = autr01; public String getautr02() { return autr02; public vid setautr02(string autr02) { this.autr02 = autr02; public String getautr03() { return autr03; public vid setautr03(string autr03) { this.autr03 = autr03; public String geteditra() { return editra; 71

75 public vid seteditra(string editra) { this.editra = editra; public int getan() { return an; public vid setan(int an) { this.an = an; public int getisbn() { return isbn; public vid setisbn(int isbn) { this.isbn = isbn; public String getidima() { return idima; public vid setidima(string idima) { this.idima = idima; public String getlivraria() { return livraria; public vid setlivraria(string livraria) { this.livraria = livraria; public String getcategria() { return categria; public vid setcategria(string categria) { this.categria = categria; public String getapresentaca() { return apresentaca; public vid setapresentaca(string apresentaca) { this.apresentaca = apresentaca; 72

76 public flat getprec() { return prec; public vid setprec(flat prec) { this.prec = prec; 73

77 ANEXO B Implementaçã da classe Cnexa. package db; imprt java.sql.cnnectin; imprt java.sql.drivermanager; imprt java.sql.sqlexceptin; //criand a classe de cnexa cm banc de dads public class Cnexa { public Cnnectin criacnexa() thrws ClassNtFundExceptin, SQLExceptin{ Cnnectin cn = null; //endereç d Driver JDBC Class.frName("cm.mysql.jdbc.Driver"); //endereç d banc de dads, nme d banc de dads, usuari e senha d banc de dads cn = DriverManager.getCnnectin("jdbc:mysql://lcalhst:3306/bd_livraria", return cn; 74

78 ANEXO C Implementaçã da classe CatalgLivrs. //classe a ser bservada imprt java.util.arraylist; imprt java.util.observable; imprt v.livrv; //criand a classe CatalgLivrs herdand de Observable // Ela herda Observable prque será a classe bservada public class CatalgLivrs extends Observable{ //criand s camps utilizads n aplicativ private String titul; private String autr01; private String autr02; private String autr03; private String editra; private int an; private int isbn; private String idima; private String livraria; private String categria; private String apresentaca; private flat prec; public CatalgLivrs () { public vid CatalgAtualizad (){ //Este metd indica que huve uma alteraçã de estad setchanged(); //avisa tdas as classes bservadras da alteraçã ntifyobservers(); // metd recebe um Array de elements riginads d banc de dads public vid getlivr(arraylist vet){ // laç percrre vetr até final setand ns camps seus respectivs valres fr (int i = 0; i < vet.size(); i++) { LivrV fila = (LivrV)vet.get(i); this.titul = fila.gettitul(); this. autr01 = fila.getautr01(); this. autr02 = fila.getautr02(); this.autr03 = fila.getautr03(); this.editra = fila.geteditra(); this.an = fila.getan(); this.isbn = fila.getisbn(); this.livraria = fila.getlivraria(); this.categria = fila.getcategria(); this.apresentaca = fila.getapresentaca(); this.prec = fila.getprec(); //chama metd para indicar atualiazaçã e em seguida avisar s bservadres CatalgAtualizad(); 75

79 //recebe s valres ds camps public String gettitul() { return titul; public vid settitul(string titul) { this.titul = titul; public String getautr01() { return autr01; public vid setautr01(string autr01) { this.autr01 = autr01; public String getautr02() { return autr02; public vid setautr02(string autr02) { this.autr02 = autr02; public String getautr03() { return autr03; public vid setautr03(string autr03) { this.autr03 = autr03; public String geteditra() { return editra; public vid seteditra(string editra) { this.editra = editra; public int getan() { return an; public vid setan(int an) { this.an = an; public int getisbn() { return isbn; 76

80 public vid setisbn(int isbn) { this.isbn = isbn; public String getidima() { return idima; public vid setidima(string idima) { this.idima = idima; public String getlivraria() { return livraria; public vid setlivraria(string livraria) { this.livraria = livraria; public String getcategria() { return categria; public vid setcategria(string categria) { this.categria = categria; public String getapresentaca() { return apresentaca; public vid setapresentaca(string apresentaca) { this.apresentaca = apresentaca; public flat getprec() { return prec; public vid setprec(flat prec) { this.prec = prec; 77

81 ANEXO D Implementaçã da classe LivrsDB. package db; imprt java.sql.cnnectin; imprt java.sql.preparedstatement; imprt java.sql.resultset; imprt java.sql.sqlexceptin; imprt java.util.arraylist; imprt v.livrv; //classe que cntem s metds de busca n banc de dads public class LivrsDB { public ArrayList buscalivrs() thrws ClassNtFundExceptin, SQLExceptin { //criand um arraylist para armazenar s dads d banc ArrayList lista = new ArrayList(); Cnnectin cn = null; Cnexa c = null; try { c = new Cnexa(); cn = c.criacnexa(); //selecinand tud que esta n banc, especificamente na tabela tbl_livrs PreparedStatement ps = cn.preparestatement("select * frm tbl_livrs"); //criand um ResultSet para percrrer s dads d banc executand a Query ResultSet rs = ps.executequery(); while (rs.next()) { //pegand s dads de cada camp da tabela String titul = rs.getstring("titul"); String autr01 = rs.getstring("autr01"); String autr02 = rs.getstring("autr02"); String autr03 = rs.getstring("autr03"); String editra = rs.getstring("editra"); int an = rs.getint("an"); flat prec = rs.getflat("prec"); String livraria = rs.getstring("livraria"); String categria = rs.getstring("categria"); String apresentaca = rs.getstring("apresentaca"); int isbn = rs.getint("isbn"); //criand um bjet VO para setar as infrmações nas variaveis LivrV lv = new LivrV(); //setand s valres d banc em um bjet VO lv.settitul(titul); lv.setautr01(autr01); lv.setautr02(autr02); lv.setautr03(autr03); lv.seteditra(editra); lv.setan(an); lv.setprec(prec); lv.setlivraria(livraria); lv.setcategria(categria); lv.setapresentaca(apresentaca); 78

82 lv.setisbn(isbn); //adicinand bjet VO cm tdas as infrmações d banc na lista (ArrayList) lista.add(lv); finally{ if(cn!=null){ //fechand a cnexã cn.clse(); //retrna a lista cm s valres return lista; 79

83 ANEXO E Implementaçã da classe Dispsitiv. imprt db.livrsdb; imprt java.sql.sqlexceptin; imprt java.util.arraylist; imprt java.util.lgging.level; imprt java.util.lgging.lgger; //Criand um dispsitiv para exibiçã ds dads d banc de dads public class Dispsitiv { public static vid main(string[] args) { //criand um bjet de CatalgLivrs CatalgLivrs dn = new CatalgLivrs(); //criand um bjet de LivrsAll LivrsAll all = new LivrsAll(dn); //criand um bjet de LivrsDB LivrsDB db = new LivrsDB(); //criand um bjet de ArrayList ArrayList vet = new ArrayList(); try { //vet recebe s dads de tds s livrs que estã cadastrads n banc de dads vet = db.buscalivrs(); //envi vetr cm tds s dads ds livrs cadastrads n banc de dads para a classe bservada dn.getlivr(vet); catch (ClassNtFundExceptin ex) { Lgger.getLgger(Dispsitiv.class.getName()).lg(Level.SEVERE, null, ex); //Imprime lg de err System.ut.println("Err: " + ex); catch (SQLExceptin ex) { Lgger.getLgger(Dispsitiv.class.getName()).lg(Level.SEVERE, null, ex); //Imprime lg de err System.ut.println("Err: " + ex); 80

84 ANEXO F Implementaçã da classe LivrAll imprt java.util.observable; imprt java.util.observer; //A classe LivrAll implementa a interface Observer //Quand implementams esta interface a classe se trna uma bservadra public class LivrsAll implements Observer { //criand bjet Observable Observable bs; //declarand s camps d aplicativ private String titul; private String autr01; private String autr02; private String autr03; private String editra; private int an; private int isbn; private String idima; private String livraria; private String categria; private String apresentaca; private flat prec; //este metd utiliza um cnstrutr para pegar Observer e adicinams um bjet //de cndições atual cm um Observer public LivrsAll(Observable bs) { //adicinand um bservadr this.bs = bs; bs.addobserver(this); //implementaçã d metd update public vid update(observable bs, Object arg) { //Checams primeiramente se Observable é d tip CatalgLivrs. //Depis usams s metds de CatalgsLivrs para btençã das infrmações if (bs instancef CatalgLivrs) { CatalgLivrs dn = (CatalgLivrs) bs; this.titul = dn.gettitul(); this.autr01 = dn.getautr01(); this.autr02 = dn.getautr02(); this.autr03 = dn.getautr03(); this.editra = dn.geteditra(); this.an = dn.getan(); this.isbn = dn.getisbn(); this.livraria = dn.getlivraria(); this.categria = dn.getcategria(); this.apresentaca = dn.getapresentaca(); this.prec = dn.getprec(); //chama metd para imprimir s valres na tela visualizar(); 81

85 //este metd imprime s valres atualizads na tela public vid visualizar() { System.ut.println("Titul: " + titul + "\nautr01: " + autr01 + "\nautr02: " + autr02 + "\nautr03: " + autr03 + "\neditra: " + editra + "\nan: " + an + "\nisbn: " + isbn + "\nlivraria: " + livraria + "\ncategria: " + categria + "\napresentaçã " + apresentaca + "\nprec: " + "R$ " + prec + "\n\n\n"); 82

86 ANEXO G Saída de dads d aplicativ Figura 18- Saida de Dads - NetBeans 83

87 ANEXO H Tabela de banc de dads Figura 19 - Dads da tabela tbl_livrs 84

Design Patterns ABSTRACT FACTORY EMERSON BARROS DE MENESES

Design Patterns ABSTRACT FACTORY EMERSON BARROS DE MENESES Design Patterns ABSTRACT FACTORY EMERSON BARROS DE MENESES 1 Breve Históric Sbre Design Patterns A rigem ds Design Patterns (Padrões de Desenh u ainda Padrões de Prjet) vem d trabalh de um arquitet chamad

Leia mais

Desenho centrado em utilização

Desenho centrado em utilização Desenh centrad em utilizaçã Engenharia de Usabilidade Prf.: Clarind Isaías Pereira da Silva e Pádua Departament de Ciência da Cmputaçã - UFMG Desenh centrad em utilizaçã Referências Cnstantine, L.L., &

Leia mais

Projeto de Arquitetura Objetivos. Tópicos abordados. Arquitetura de software. Vantagens da arquitetura explícita

Projeto de Arquitetura Objetivos. Tópicos abordados. Arquitetura de software. Vantagens da arquitetura explícita Prjet de Arquitetura Objetivs Apresentar prjet de arquitetura e discutir sua imprtância Explicar as decisões de prjet de arquitetura que têm de ser feitas Apresentar três estils cmplementares de arquitetura

Leia mais

Aula 11 Bibliotecas de função

Aula 11 Bibliotecas de função Universidade Federal d Espírit Sant Centr Tecnlógic Departament de Infrmática Prgramaçã Básica de Cmputadres Prf. Vítr E. Silva Suza Aula 11 Biblitecas de funçã 1. Intrduçã À medida que um prgrama cresce

Leia mais

Projetos, Programas e Portfólios

Projetos, Programas e Portfólios Prjets, Prgramas e Prtfólis pr Juliana Klb em julianaklb.cm Prjet Segund PMBOK (2008): um prjet é um esfrç temprári empreendid para criar um nv prdut, serviç u resultad exclusiv. Esta definiçã, apesar

Leia mais

Matemática / 1ª série / ICC Prof. Eduardo. Unidade 1: Fundamentos. 1 - Introdução ao Computador

Matemática / 1ª série / ICC Prof. Eduardo. Unidade 1: Fundamentos. 1 - Introdução ao Computador Unidade 1: Fundaments 1 - Intrduçã a Cmputadr Cnceits básics e Terminlgias O cmputadr é uma máquina eletrônica capaz de realizar uma grande variedade de tarefas cm alta velcidade e precisã, desde que receba

Leia mais

Regulamento para realização do Trabalho de Conclusão de Curso

Regulamento para realização do Trabalho de Conclusão de Curso Universidade Federal d Ceará Campus de Sbral Curs de Engenharia da Cmputaçã Regulament para realizaçã d Trabalh de Cnclusã de Curs Intrduçã Este dcument estabelece as regras básicas para funcinament das

Leia mais

INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO

INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO A Lógica de Prgramaçã é necessária à tdas as pessas que ingressam u pretendem ingressar na área de Tecnlgia da Infrmaçã, send cm prgramadr, analista de sistemas u suprte.

Leia mais

Workflow. José Palazzo Moreira de Oliveira. Mirella Moura Moro

Workflow. José Palazzo Moreira de Oliveira. Mirella Moura Moro Pdems definir Wrkflw cm: Wrkflw Jsé Palazz Mreira de Oliveira Mirella Mura Mr "Qualquer tarefa executada em série u em paralel pr dis u mais membrs de um grup de trabalh (wrkgrup) visand um bjetiv cmum".

Leia mais

3 Formulação da Metodologia 3.1. Considerações Iniciais

3 Formulação da Metodologia 3.1. Considerações Iniciais 53 3 Frmulaçã da Metdlgia 3.1. Cnsiderações Iniciais O presente capítul tem cm finalidade prpr e descrever um mdel de referencia para gerenciament de prjets de sftware que pssa ser mensurável e repetível,

Leia mais

HARDWARE e SOFTWARE. O Computador é composto por duas partes: uma parte física (hardware) e outra parte lógica (software).

HARDWARE e SOFTWARE. O Computador é composto por duas partes: uma parte física (hardware) e outra parte lógica (software). HARDWARE e SOFTWARE O Cmputadr é cmpst pr duas partes: uma parte física (hardware) e utra parte lógica (sftware). Vcê sabe qual é a diferença entre "Hardware" e "Sftware"? Hardware: é nme dad a cnjunt

Leia mais

ISO 9001:2008 alterações à versão de 2000

ISO 9001:2008 alterações à versão de 2000 ISO 9001:2008 alterações à versã de 2000 Já passaram quase it ans desde que a versã da ISO 9001 d an 2000 fi publicada, que cnduziu à necessidade de uma grande mudança para muitas rganizações, incluind

Leia mais

WEB MANAGER. Conhecendo o Web Manager!

WEB MANAGER. Conhecendo o Web Manager! WEB MANAGER Cnhecend Web Manager! O Web Manager é uma pdersa ferramenta para gestã de Sites, prtais, intranets, extranets e htsites. Cm ela é pssível gerenciar ttalmente seus ambientes web. Integrad ttalmente

Leia mais

CONCORRÊNCIA AA Nº 05/2009 BNDES ANEXO II PROJETO BÁSICO: JORNADA AGIR

CONCORRÊNCIA AA Nº 05/2009 BNDES ANEXO II PROJETO BÁSICO: JORNADA AGIR CONCORRÊNCIA AA Nº 05/2009 BNDES ANEXO II PROJETO BÁSICO: JORNADA AGIR 1. Históric da Jrnada AGIR Ns ambientes crprativs atuais, a adçã de um mdel de gestã integrada é uma decisã estratégica n api às tmadas

Leia mais

TESTE DE SOFTWARE (Versão 2.0)

TESTE DE SOFTWARE (Versão 2.0) Universidade Luterana d Brasil Faculdade de Infrmática Disciplina de Engenharia de Sftware Prfessr Luís Fernand Garcia www.garcia.pr.br TESTE DE SOFTWARE (Versã 2.0) 9 Teste de Sftware Imprtância Dependência

Leia mais

3. TIPOS DE MANUTENÇÃO:

3. TIPOS DE MANUTENÇÃO: 3. TIPOS DE MANUTENÇÃO: 3.1 MANUTENÇÃO CORRETIVA A manutençã crretiva é a frma mais óbvia e mais primária de manutençã; pde sintetizar-se pel cicl "quebra-repara", u seja, repar ds equipaments após a avaria.

Leia mais

EIKON DOCUMENTS - ESPECIFICAÇÃO TÉCNICA

EIKON DOCUMENTS - ESPECIFICAÇÃO TÉCNICA EIKON DOCUMENTS - ESPECIFICAÇÃO TÉCNICA VERSÃO Eikn Dcuments 2007 Service Pack 5 (2.9.5) Fevereir de 2010 DATA DE REFERÊNCIA DESCRIÇÃO Sftware para implantaçã de sistemas em GED / ECM (Gerenciament Eletrônic

Leia mais

PIM TECNOLOGIA EM GERENCIAMENTO DE REDES DE COMPUTADORES (GR3P30)

PIM TECNOLOGIA EM GERENCIAMENTO DE REDES DE COMPUTADORES (GR3P30) UNIP Brasília - Crdenaçã CG/CW/GR/AD Senhres Aluns, Seguem infrmações imprtantes sbre PIM: 1. O QUE É? - Os PIM (Prjet Integrad Multidisciplinar) sã prjets brigatóris realizads els aluns ds curss de graduaçã

Leia mais

CRONOGRAMA DELPHI para turmas Aproximadamente 84 horas - aulas de 2 horas

CRONOGRAMA DELPHI para turmas Aproximadamente 84 horas - aulas de 2 horas CRONOGRAMA DELPHI para turmas Aprximadamente 84 hras - aulas de 2 hras Primeira Parte Lógica de Prgramaçã 5 aulas 10 hras AULA 1 OBJETIVO 1. Cnceits básics: Algritm, Tips de Variáveis, Tips e Expressões

Leia mais

Anexo V. Software de Registro Eletrônico em Saúde. Implantação em 2 (duas) Unidades de Saúde

Anexo V. Software de Registro Eletrônico em Saúde. Implantação em 2 (duas) Unidades de Saúde Anex V Sftware de Registr Eletrônic em Saúde Implantaçã em 2 (duas) Unidades de Saúde Índice 1 INTRODUÇÃO... 3 2 ESTRATÉGIAS E PROCEDIMENTOS DE IMPLANTAÇÃO... 3 4 INFRAESTRUTURA NAS UNIDADES DE SAÚDE -

Leia mais

Modelagem, qualificação e distribuição em um padrão para geoinformações

Modelagem, qualificação e distribuição em um padrão para geoinformações Mdelagem, qualificaçã e distribuiçã em um padrã para geinfrmações Julia Peixt 14h, 14 de junh de 2010. Mtivaçã Acerv de dads desde 1994 em diferentes áreas de pesquisa; Muitas pessas fazend muits trabalhs

Leia mais

REQUISITOS PRINCIPAIS: Regulamentação final sobre controles preventivos de alimentos para consumo humano Visão rápida

REQUISITOS PRINCIPAIS: Regulamentação final sobre controles preventivos de alimentos para consumo humano Visão rápida O FDA ferece esta traduçã cm um serviç para um grande públic internacinal. Esperams que vcê a ache útil. Embra a agência tenha tentad bter uma traduçã mais fiel pssível à versã em inglês, recnhecems que

Leia mais

Principais Informações

Principais Informações Principais Infrmações Quem é Benefix Sistemas? Frmada pr ex-executivs e equipe de tecnlgia da Xerx d Brasil, que desenvlvem e suprtam sluções e estratégias invadras para setr públic, especializada dcuments

Leia mais

ALTERAÇÕES NO SISTEMA ORION

ALTERAÇÕES NO SISTEMA ORION ALTERAÇÕES NO SISTEMA ORION Orin Versã 7.74 TABELAS Clientes Na tela de Cadastr de Clientes, fi inserid btã e um camp que apresenta códig que cliente recebeu após cálcul da Curva ABC. Esse btã executa

Leia mais

Processos de Apoio do Grupo Consultivo 5.5 Suporte Informático Direito de Acesso à Rede

Processos de Apoio do Grupo Consultivo 5.5 Suporte Informático Direito de Acesso à Rede Prcesss de Api d Grup Cnsultiv 5.5 Suprte Infrmátic Direit de Acess à Rede Suprte Infrmátic - Dcuments 5.5 Âmbit e Objectiv Frmuláris aplicáveis Obrigatóris Obrigatóris, se aplicável Frmulári de Mapa de

Leia mais

Academia FI Finanças

Academia FI Finanças Academia FI Finanças A Academia é melhr caminh para especializaçã dentr de um tema n ERP da SAP. Para quem busca uma frmaçã cm certificaçã em finanças, mais indicad é participar da próxima Academia de

Leia mais

Proposta. Projeto: VENSSO. Data 25/05/2005. Andrade Lima Damires Fernandes Andrade Lima Damires Fernandes. Responsável. Autor (s)

Proposta. Projeto: VENSSO. Data 25/05/2005. Andrade Lima Damires Fernandes Andrade Lima Damires Fernandes. Responsável. Autor (s) Prpsta Prjet: Data 25/05/2005 Respnsável Autr (s) Dc ID Andrade Lima Damires Fernandes Andrade Lima Damires Fernandes Lcalizaçã Versã d Template

Leia mais

REGULAMENTO CONCURSO DE IDEIAS OESTECIM A MINHA EMPRESA

REGULAMENTO CONCURSO DE IDEIAS OESTECIM A MINHA EMPRESA 1. Intrduçã e Objetivs a) O Cncurs de Ideias OESTECIM a minha empresa pretende ptenciar apareciment de prjets invadres na regiã d Oeste sempre numa perspetiva de desenvlviment ecnómic e scial. b) O Cncurs

Leia mais

Passo 1 - Conheça as vantagens do employeeship para a empresa

Passo 1 - Conheça as vantagens do employeeship para a empresa Manual Cm intrduzir emplyeeship na empresa Índice Intrduçã Pass 1 - Cnheça as vantagens d emplyeeship para a empresa Pass 2 - Saiba que é a cultura emplyeeship Pass 3 - Aprenda a ter "bns" empregads Pass

Leia mais

Universidade Luterana do Brasil Faculdade de Informática. Disciplina de Engenharia de Software Professor Luís Fernando Garcia www.garcia.pro.

Universidade Luterana do Brasil Faculdade de Informática. Disciplina de Engenharia de Software Professor Luís Fernando Garcia www.garcia.pro. Universidade Luterana d Brasil Faculdade de Infrmática Disciplina de Engenharia de Sftware Prfessr Luís Fernand Garcia www.garcia.pr.br EVOLUÇÃO EM ENGENHARIA DE SOFTWARE 10 Sistemas Legads O investiment

Leia mais

Anexo 03 Recomendação nº 3: estatuto padrão, estatuto fundamental e contrato social

Anexo 03 Recomendação nº 3: estatuto padrão, estatuto fundamental e contrato social Anex 03 Recmendaçã nº 3: estatut padrã, estatut fundamental e cntrat scial 1. Resum 01 Atualmente, Estatut da Crpraçã da Internet para a atribuiçã de nmes e númers (ICANN) tem um mecanism únic para alterações.

Leia mais

Art. 2º. Trata-se de uma promoção de caráter exclusivamente de estimulo cultural, profissional e acadêmico sem vínculo com sorteios.

Art. 2º. Trata-se de uma promoção de caráter exclusivamente de estimulo cultural, profissional e acadêmico sem vínculo com sorteios. Prêmi Data Pint de Criatividade e Invaçã - 2011 N an em que cmpleta 15 ans de atuaçã n mercad de treinament em infrmática, a Data Pint ferece à cmunidade a prtunidade de participar d Prêmi Data Pint de

Leia mais

5. PLANEJAMENTO E ORGANIZAÇÃO DA MANUTENÇÃO:

5. PLANEJAMENTO E ORGANIZAÇÃO DA MANUTENÇÃO: 5. PLANEJAMENTO E ORGANIZAÇÃO DA MANUTENÇÃO: 5.1 INTRODUÇÃO A rganizaçã da manutençã era cnceituada, até há puc temp, cm planejament e administraçã ds recurss para a adequaçã à carga de trabalh esperada.

Leia mais

Vensis PCP. Rua Américo Vespúcio, 71 Porto Alegre / RS (51) 3012-4444 comercial@vensis.com.br www.vensis.com.br

Vensis PCP. Rua Américo Vespúcio, 71 Porto Alegre / RS (51) 3012-4444 comercial@vensis.com.br www.vensis.com.br Vensis PCP Vensis PCP O PCP é módul de planejament e cntrle de prduçã da Vensis. Utilizad n segment industrial, módul PCP funcina de frma ttalmente integrada a Vensis ERP e permite às indústrias elabrar

Leia mais

Os novos usos da tecnologia da informação nas empresas Sistemas de Informação

Os novos usos da tecnologia da informação nas empresas Sistemas de Informação Os nvs uss da tecnlgia da infrmaçã nas empresas Sistemas de Infrmaçã Prf. Marcel da Silveira Siedler siedler@gmail.cm SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS Planejament

Leia mais

GESTÃO DE PROJETOS. Uma visão geral Baseado nas diretrizes do PMI

GESTÃO DE PROJETOS. Uma visão geral Baseado nas diretrizes do PMI GESTÃO DE PROJETOS Uma visã geral Bead n diretrizes d PMI 1 Intrduçã Objetiv da Apresentaçã O bjetiv é frnecer uma visã geral ds prcesss de Gestã de Prjets aplicads à Gestã de Empreendiments. O que é Prjet?

Leia mais

Capítulo VII Projetos de eficiência energética em iluminação pública Por Luciano Haas Rosito*

Capítulo VII Projetos de eficiência energética em iluminação pública Por Luciano Haas Rosito* 20 Api O Setr Elétric / Julh de 2009 Desenvlviment da Iluminaçã Pública n Brasil Capítul VII Prjets de eficiência energética em iluminaçã pública Pr Lucian Haas Rsit* Neste capítul abrdarems s prjets de

Leia mais

Por favor, considere a proteção ao meio ambiente antes de imprimir esse documento

Por favor, considere a proteção ao meio ambiente antes de imprimir esse documento Interbrs Tecnlgia e Sluções de Internet Ltda. Rua Dr. Guilherme Bannitz, 126 2º andar Cnj. 21 /179 Itaim Bibi - Sã Paul- SP - 04532-060 Fne: 55 11 9209-3717 / 55 11 8162-0161 Pr favr, cnsidere a prteçã

Leia mais

GUIA RÁPIDO DE CONFIGURAÇÃO PARA WINDOWS

GUIA RÁPIDO DE CONFIGURAÇÃO PARA WINDOWS GUIA RÁPIDO DE CONFIGURAÇÃO PARA WINDOWS CONTEÚDO 1. Intrduçã... 3 2. Requisits de Sftware e Hardware:... 3 3. Usuári e Grups:... 3 3.1. Cnfigurand cm Micrsft AD:... 3 3.2. Cnfigurand s Grups e Usuáris:...

Leia mais

PRINCIPAIS REQUISITOS: Regra final sobre Programas de Verificação do Fornecedor Estrangeiro Em resumo

PRINCIPAIS REQUISITOS: Regra final sobre Programas de Verificação do Fornecedor Estrangeiro Em resumo O FDA ferece esta traduçã cm um serviç para um grande públic internacinal. Esperams que vcê a ache útil. Embra a agência tenha tentad bter uma traduçã mais fiel pssível à versã em inglês, recnhecems que

Leia mais

Apresentação do Curso

Apresentação do Curso At endi m ent acl i ent e Apr es ent aç ãdc ur s Apresentaçã d Curs O curs Atendiment a Cliente fi elabrad cm bjetiv de criar cndições para que vcê desenvlva cmpetências para: Identificar s aspects que

Leia mais

Ontologias: da Teoria à Prática

Ontologias: da Teoria à Prática Ontlgias: da Teria à Prática I Escla de Ontlgias UFAL-USP Endhe Elias e Olav Hlanda Núcle de Excelência em Tecnlgias Sciais - NEES Universidade Federal de Alagas UFAL Rteir Mtivaçã Ontlgias Engenharia

Leia mais

Agenda. A interface de Agendamento é encontrada no Modulo Salão de Vendas Agendamento Controle de Agendamento, e será apresentada conforme figura 01.

Agenda. A interface de Agendamento é encontrada no Modulo Salão de Vendas Agendamento Controle de Agendamento, e será apresentada conforme figura 01. Agenda Intrduçã Diariamente cada um ds trabalhadres de uma empresa executam diversas atividades, muitas vezes estas atividades tem praz para serem executadas e devem ser planejadas juntamente cm utras

Leia mais

Administração de Redes Servidores de Aplicação

Administração de Redes Servidores de Aplicação 1 MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS SÃO JOSÉ SANTA CATARINA Administraçã de Redes Servidres de Aplicaçã

Leia mais

ENCONTROCAS 2º SEMESTRE 2012 - ORIENTAÇÕES GERAIS PARA O CURSO DE PEDAGOGIA. O ENCONTROCAS é um evento semestral realizado pelo Instituto Superior de

ENCONTROCAS 2º SEMESTRE 2012 - ORIENTAÇÕES GERAIS PARA O CURSO DE PEDAGOGIA. O ENCONTROCAS é um evento semestral realizado pelo Instituto Superior de Faculdade de Ciências Sciais Aplicadas de Bel Hriznte Institut Superir de Educaçã Curs de Pedaggia ENCONTROCAS 2º SEMESTRE 2012 - ORIENTAÇÕES GERAIS PARA O CURSO DE PEDAGOGIA O ENCONTROCAS é um event semestral

Leia mais

Gestão do Escopo 1. Planejamento da Gestão do Escopo: 2. Definição do Escopo: 3. Elaboração da EDT(EAP): 4. Verificação do Escopo:

Gestão do Escopo 1. Planejamento da Gestão do Escopo: 2. Definição do Escopo: 3. Elaboração da EDT(EAP): 4. Verificação do Escopo: Gestã d Escp 1. Planejament da Gestã d Escp: i. Autrizaçã d prjet ii. Definiçã d escp (preliminar) iii. Ativs em cnheciments rganizacinais iv. Fatres ambientais e rganizacinais v. Plan d prjet i. Plan

Leia mais

PRÊMIO INOVAÇÃO PGQP 2014

PRÊMIO INOVAÇÃO PGQP 2014 QUALIDADE RS PGQP PROGRAMA GAÚCHO DA QUALIDADE E PRODUTIVIDADE PRÊMIO INOVAÇÃO PGQP 2014 GUIA PARA CANDIDATURA SUMÁRIO 1. O PRÊMIO INOVAÇÃO PGQP... 3 1.1 Benefícis... 3 2. PREMIAÇÃO... 3 2.1 Diretrizes

Leia mais

MANUAL DO USUÁRIO ANTECEDENTES CRIMINAIS

MANUAL DO USUÁRIO ANTECEDENTES CRIMINAIS SISTEMA DE INFORMAÇÃO E GESTÃO INTEGRADA POLICIAL Elabrad: Equipe SAG Revisad: Aprvad: Data: 11/09/2008 Data: 10/10/2008 Data: A autenticaçã d dcument cnsta n arquiv primári da Qualidade Referencia: Help_Online_Antecedentes_Criminais.dc

Leia mais

Manual de Instalação e Configuração

Manual de Instalação e Configuração Manual de Instalaçã e Cnfiguraçã Prdut:n-ReleaserEmbedded fr Lexmark Versã 1.2.1 Versã d Dc.:1.0 Autr: Lucas Machad Santini Data: 14/04/2011 Dcument destinad a: Clientes e Revendas Alterad pr: Release

Leia mais

Novo Sistema Almoxarifado

Novo Sistema Almoxarifado Nv Sistema Almxarifad Instruções Iniciais 1. Ícnes padrões Existem ícnes espalhads pr td sistema, cada um ferece uma açã. Dentre eles sã dis s mais imprtantes: Realiza uma pesquisa para preencher s camps

Leia mais

1 Criando uma conta no EndNote

1 Criando uma conta no EndNote O EndNte Basic (anterirmente cnhecid pr EndNte Web), é um sftware gerenciadr de referências desenvlvid pela Editra Thmsn Reuters. Permite rganizar referências bibligráficas para citaçã em artigs, mngrafias,

Leia mais

MODELO DE PROGRAMAÇÃO DO WINDOWS AZURE

MODELO DE PROGRAMAÇÃO DO WINDOWS AZURE MODELO DE PROGRAMAÇÃO DO WINDOWS AZURE DAVID CHAPPELL OUTUBRO DE 2010 PATROCINADO PELA MICROSOFT CORPORATION SUMÁRIO Pr que criar um nv mdel de prgramaçã?... 3 Três regras d mdel de prgramaçã d Windws

Leia mais

2º Passo Criar a conexão via ODBC (Object DataBase Conection)

2º Passo Criar a conexão via ODBC (Object DataBase Conection) Prjet de Sexta-feira: Prfessra Lucélia 1º Pass Criar banc de dads u selecinar banc de dads. Ntas: Camps nas tabelas nã pdem cnter caracteres acentuads, especiais e exclusivs de línguas latinas. Nã há necessidade

Leia mais

MANUAL DO USUÁRIO EVENTOS

MANUAL DO USUÁRIO EVENTOS SISTEMA DE INFORMAÇÃO E GESTÃO INTEGRADA POLICIAL Elabrad: Equipe SAG Revisad: Data: 17-09-2008 Data: Aprvad: Data: A autenticaçã d dcument cnsta n arquiv primári da Qualidade Referencia: Help_Online_Events.dc

Leia mais

Plano de aulas 2010 1ª série 1ª aula 2ª etapa

Plano de aulas 2010 1ª série 1ª aula 2ª etapa Plan de aulas 2010 1ª série 1ª aula 2ª etapa Escla Clégi Eng Juarez Wanderley Prfessr Fernand Nishimura de Aragã Disciplina Infrmática Objetivs Cnstruçã de um website pessal para publicaçã de atividades

Leia mais

Alterações na aplicação do Critério Brasil, válidas a partir de 01/01/2013

Alterações na aplicação do Critério Brasil, válidas a partir de 01/01/2013 Alterações na aplicaçã d Critéri Brasil, válidas a partir de 01/01/2013 A dinâmica da ecnmia brasileira, cm variações imprtantes ns níveis de renda e na psse de bens ns dmicílis, representa um desafi imprtante

Leia mais

REGULAMENTO 1- OBJETIVO

REGULAMENTO 1- OBJETIVO REGULAMENTO 1- OBJETIVO O Prgrama Nv Temp é um iniciativa da Cargill Agricla SA, que visa ferecer as seus funcináris e das empresas patrcinadras ds plans de previdência sb a gestã da CargillPrev Sciedade

Leia mais

Metodologia de Desenvolvimento de Sistemas

Metodologia de Desenvolvimento de Sistemas Guia d Prcess de Sftware d MAPA Metdlgia de Desenvlviment de Sistemas Versã 1.0 Dcument cnfidencial e prprietári Versã d mdel: 1.1 Históric das Revisões Data Versã Descriçã Autr 24/03/2008 1.0 Iníci da

Leia mais

Gerenciamento do Escopo

Gerenciamento do Escopo Pós-graduaçã Gestã Empresarial Módul GPE Gestã de Prjets Empresariais Prf. MSc Jsé Alexandre Mren prf.mren@ul.cm.br agst_setembr/2009 1 Gerenciament d Escp 3 Declaraçã d escp Estrutura Analítica d Prjet

Leia mais

REGULAMENTO DE ESTÁGIO DE INICIAÇÃO PROFISSIONAL

REGULAMENTO DE ESTÁGIO DE INICIAÇÃO PROFISSIONAL REGULAMENTO DE ESTÁGIO DE INICIAÇÃO PROFISSIONAL Intrduçã O presente Regulament cnstitui um dcument intern d curs de Ciências Cntábeis e tem pr bjetiv reger as atividades relativas a Estági de Iniciaçã

Leia mais

Modelo de Negócios. TRABALHO REALIZADO POR: Antonio Gome- 2007009 // Jorge Teixeira - 2008463

Modelo de Negócios. TRABALHO REALIZADO POR: Antonio Gome- 2007009 // Jorge Teixeira - 2008463 Mdel de Negócis Trabalh n âmbit da disciplina de Mdelaçã de dads. Criaçã de uma platafrma utilizand as tecnlgias SQL PHP e Javascript.. TRABALHO REALIZADO POR: Antni Gme- 2007009 // Jrge Teixeira - 2008463

Leia mais

é a introdução de algo novo, que atua como um vetor para o desenvolvimento humano e melhoria da qualidade de vida

é a introdução de algo novo, que atua como um vetor para o desenvolvimento humano e melhoria da qualidade de vida O que é invaçã? Para a atividade humana: é a intrduçã de alg nv, que atua cm um vetr para desenvlviment human e melhria da qualidade de vida Para as empresas: invar significa intrduzir alg nv u mdificar

Leia mais

FRWTC-200 INTRODUÇÃO JAVA SE

FRWTC-200 INTRODUÇÃO JAVA SE FRWTC-200 INTRODUÇÃO JAVA SE SOBRE A FRAMEWORK A Framewrk (www.frwtc.cm) atua diretamente cm prfissinais d segment de tecnlgia em busca de capacitaçã, atualizaçã e certificaçã, curss IN-COMPANY persnalizads

Leia mais

Guia Sphinx: Instalação, Reposição e Renovação

Guia Sphinx: Instalação, Reposição e Renovação Guia Sphinx: Instalaçã, Repsiçã e Renvaçã V 5.1.0.8 Instalaçã Antes de instalar Sphinx Se vcê pssuir uma versã anterir d Sphinx (versões 1.x, 2.x, 3.x, 4.x, 5.0, 5.1.0.X) u entã a versã de Demnstraçã d

Leia mais

3 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

3 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Matéria: O Prcess de Desenvlviment de Sftware Página: 29 3 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE É mais fácil escrever um prgrama incrret d que entender um crret. [Alan Perlis] Um prcess define quem

Leia mais

Manual do Novo Pátio. Revenda. Versão 2.0

Manual do Novo Pátio. Revenda. Versão 2.0 Manual d Nv Páti Revenda Versã 2.0 1 Cnteúd INTRODUÇÃO... 3 1.LOGIN... 4 2.ANUNCIANTE... 4 2.1 Listar Usuáris... 4 2.2 Criar Usuári... 5 2.2.1 Permissões:... 6 3.SERVIÇOS... 7 3.1 Serviçs... 7 3.2 Feirã...

Leia mais

GESTÃO DE LABORATÓRIOS

GESTÃO DE LABORATÓRIOS Seminári Luanda, 26,27,28,29 e 30 de Mai de 2014 - Htel **** Guia Prática GESTÃO DE LABORATÓRIOS Finanças Assegure uma gestã eficaz de tdas as áreas 40 hras de Frmaçã Especializada Cnceits ecnómic-financeirs

Leia mais

DISCIPLINA: Matemática. MACEDO, Luiz Roberto de, CASTANHEIRA, Nelson Pereira, ROCHA, Alex. Tópicos de matemática aplicada. Curitiba: Ibpex, 2006.

DISCIPLINA: Matemática. MACEDO, Luiz Roberto de, CASTANHEIRA, Nelson Pereira, ROCHA, Alex. Tópicos de matemática aplicada. Curitiba: Ibpex, 2006. DISCIPLINA: Matemática 1- BIBLIOGRAFIA INDICADA Bibliteca Virtual Pearsn MACEDO, Luiz Rbert de, CASTANHEIRA, Nelsn Pereira, ROCHA, Alex. Tópics de matemática aplicada. Curitiba: Ibpex, 2006. PARKIN, Michael.

Leia mais

FRWTC-300 DESENVOLVIMENTO C# E ORIENTAÇÃO POR OBJETOS

FRWTC-300 DESENVOLVIMENTO C# E ORIENTAÇÃO POR OBJETOS FRWTC-300 DESENVOLVIMENTO C# E ORIENTAÇÃO POR OBJETOS SOBRE A FRAMEWORK A Framewrk (www.frwtc.cm) atua diretamente cm prfissinais d segment de tecnlgia em busca de capacitaçã, atualizaçã e certificaçã,

Leia mais

Profa. Dra. Silvia M de Paula

Profa. Dra. Silvia M de Paula Prfa. Dra. Silvia M de Paula Espelhs Esférics Certamente tds nós já estivems diante de um espelh esféric, eles sã superfícies refletras que têm a frma de calta esférica. Em nss ctidian ficams diante de

Leia mais

Fundamentos de Informática 1ºSemestre

Fundamentos de Informática 1ºSemestre Fundaments de Infrmática 1ºSemestre Aula 4 Prf. Nataniel Vieira nataniel.vieira@gmail.cm SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS Descrevend Sistemas de um Cmputadr

Leia mais

REP REGISTO DOS PROFISSIONAIS DO EXERCICIO

REP REGISTO DOS PROFISSIONAIS DO EXERCICIO REP REGISTO DOS PROFISSIONAIS DO EXERCICIO Um prject eurpeu em clabraçã cm a EHFA Eurpean Health and Fitness Assciatin, cm sede em Bruxelas Regist ds Prfissinais Intrduçã Estams numa fase em que a Tutela

Leia mais

10ª JORNADA DE EXTENSÃO UNIVERSITÁRIA Extensão Universitária e Políticas Públicas

10ª JORNADA DE EXTENSÃO UNIVERSITÁRIA Extensão Universitária e Políticas Públicas SERVIÇO PÚBLICO FEDERAL UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE EXTENSÃO 10ª JORNADA DE EXTENSÃO UNIVERSITÁRIA Extensã Universitária e Plíticas Públicas Períd 05 a 07 de dezembr de 2007 A 10ª Jrnada

Leia mais

Código: Data: Revisão: Página: SUMÁRIO

Código: Data: Revisão: Página: SUMÁRIO UC_REQ-MK_ACF-001 27/01/2015 00 1 / 12 SUMÁRIO INTRODUÇÃO... 2 Objetiv... 2 Públic Alv... 2 Escp... 2 Referências... 2 DESCRIÇÃO GERAL DO PRODUTO... 2 Características d Usuári... 2 Limites, Supsições e

Leia mais

Como identificar, vender e comercializar com os prospectos de pequenas empresas Parte 2/3

Como identificar, vender e comercializar com os prospectos de pequenas empresas Parte 2/3 Cm identificar, vender e cmercializar cm s prspects de pequenas empresas Parte 2/3 A pequena empresa é um mercad massiv em imprtante cresciment, que alcançu uma maturidade em terms de prtunidade para s

Leia mais

Versões Todos os módulos devem ser atualizados para as versões a partir de 03 de outubro de 2013.

Versões Todos os módulos devem ser atualizados para as versões a partir de 03 de outubro de 2013. Serviç de Acess as Móduls d Sistema HK (SAR e SCF) Desenvlvems uma nva ferramenta cm bjetiv de direcinar acess ds usuáris apenas as Móduls que devem ser de direit, levand em cnsideraçã departament de cada

Leia mais

Regulamento da Feira de Ciência

Regulamento da Feira de Ciência Regulament da Feira de Ciência A Feira A Feira de Ciência é um é um prject rganizad pel Núcle de Física d Institut Superir Técnic (NFIST). Esta actividade cnsiste em desenvlver um prject científic pr um

Leia mais

III.3. SISTEMAS HÍBRIDOS FIBRA/COAXIAL (HFC)

III.3. SISTEMAS HÍBRIDOS FIBRA/COAXIAL (HFC) 1 III.3. SISTEMAS HÍBRIDOS FIBRA/COAXIAL (HFC) III.3.1. DEFINIÇÃO A tecnlgia HFC refere-se a qualquer cnfiguraçã de fibra ótica e cab caxial que é usada para distribuiçã lcal de serviçs de cmunicaçã faixa

Leia mais

Versão 14.0 Junho 2015 www.psr-inc.com Contato: sddp@psr-inc.com. Representação mais detalhada da operação em cada estágio: 21 blocos

Versão 14.0 Junho 2015 www.psr-inc.com Contato: sddp@psr-inc.com. Representação mais detalhada da operação em cada estágio: 21 blocos Versã 14.0 Junh 2015 www.psr-inc.cm Cntat: sddp@psr-inc.cm SDDP VERSÃO 14.0 Nvidades Representaçã mais detalhada da peraçã em cada estági: 21 blcs Tradicinalmente, a peraçã de cada estági (semana u mês)

Leia mais

Os Oito Principais de Sistemas de

Os Oito Principais de Sistemas de Infrme Especial Os Oit Principais in Yur DSD Mits Mbile de Sistemas de Security Strategy Gerenciament de Armazém para empresas de pequen e médi prte. Intrduçã A era das perações manuais em Armazéns está

Leia mais

UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE CIÊNCIAS APLICADAS Cidade Universitária de Limeira

UNIVERSIDADE ESTADUAL DE CAMPINAS FACULDADE DE CIÊNCIAS APLICADAS Cidade Universitária de Limeira DIRETRIZES PARA ESTÁGIO CURRICULAR OBRIGATÓRIO DOS CURSOS DE GESTÃO 1 Sumári I. O Estági em Gestã...3 II. O Estági curricular...4 III. Acmpanhament e avaliaçã...5 IV. Mdels de Plan de Atividades e de Relatóri...5

Leia mais

Manual de Instalação

Manual de Instalação Manual de Instalaçã Prdut: n-hst Versã d prdut: 4.1 Autr: Aline Della Justina Versã d dcument: 1 Versã d template: Data: 30/07/01 Dcument destinad a: Parceirs NDDigital, técnics de suprte, analistas de

Leia mais

Software Para Controle de Acesso e Ponto

Software Para Controle de Acesso e Ponto Sftware Para Cntrle de Acess e Pnt Características e Funcinalidades Versã 2.0 Inipass é marca registrada da Prjedata Infrmática Ltda. Tds s direits reservads à Prjedata Infrmática Ltda. Características

Leia mais

Pessoal, vislumbro recursos na prova de conhecimentos específicos de Gestão Social para as seguintes questões:

Pessoal, vislumbro recursos na prova de conhecimentos específicos de Gestão Social para as seguintes questões: Pessal, vislumbr recurss na prva de cnheciments específics de Gestã Scial para as seguintes questões: Questã 01 Questã 11 Questã 45 Questã 51 Questã 56 Vejams as questões e arguments: LEGISLAÇÃO - GESTÃO

Leia mais

CONSIDERAÇÕES DA CAPGEMINI

CONSIDERAÇÕES DA CAPGEMINI CONSIDERAÇÕES DA CAPGEMINI 6.1 Requisits de Capacidade e Experiência d Prestadr A ANEEL deveria exigir um puc mais quant a estes requisits, de frma a garantir uma melhr qualificaçã da empresa a ser cntratada.

Leia mais

UFES Universidade Federal do Espírito Santo CEUNES Centro Universitário Norte do Espírito Santo DECOM Departamento de Engenharias e Computação

UFES Universidade Federal do Espírito Santo CEUNES Centro Universitário Norte do Espírito Santo DECOM Departamento de Engenharias e Computação UFES Universidade Federal d Espírit Sant CEUNES Centr Universitári Nrte d Espírit Sant DECOM Departament de Engenharias e Cmputaçã CURSO DE ENGENHARIA DE COMPUTAÇÃO Cmpilaçã de Texts pr Maria das Graças

Leia mais

Novas Salvaguardas Ambientais e Sociais

Novas Salvaguardas Ambientais e Sociais Nvas Salvaguardas Ambientais e Sciais Discussões Técnicas de Gvern ESS10 Acess a Infrmaçã e engajament de stakehlders 15 de utubr, 2014 Objetivs da ESS10 (1/2) Delinear uma abrdagem sistemática para engajament

Leia mais

Channel. Colaboradores. Tutorial. Atualizado com a versão 3.9

Channel. Colaboradores. Tutorial. Atualizado com a versão 3.9 Channel Clabradres Tutrial Atualizad cm a versã 3.9 Cpyright 2009 pr JExperts Tecnlgia Ltda. tds direits reservads. É pribida a reprduçã deste manual sem autrizaçã prévia e pr escrit da JExperts Tecnlgia

Leia mais

PDF Livre com o Ghostscript

PDF Livre com o Ghostscript PDF Livre cm Ghstscript Um tutrial para criaçã de um geradr de arquivs PDF em Windws, basead em ferramentas gratuitas. Márci d'ávila, 05 de mai de 2004. Revisã 8, 20 de setembr de 2007. Categria: Text

Leia mais

SDK (Software Development Kit) do Microsoft Kinect para Windows

SDK (Software Development Kit) do Microsoft Kinect para Windows SDK (Sftware Develpment Kit) d Micrsft Kinect para Windws Os presentes terms de licença cnstituem um acrd entre a Micrsft Crpratin (u, dependend d lcal n qual vcê esteja dmiciliad, uma de suas afiliadas)

Leia mais

SGCT - Sistema de Gerenciamento de Conferências Tecnológicas

SGCT - Sistema de Gerenciamento de Conferências Tecnológicas SGCT - Sistema de Gerenciament de Cnferências Tecnlógicas Versã 1.0 09 de Setembr de 2009 Institut de Cmputaçã - UNICAMP Grup 02 Andre Petris Esteve - 070168 Henrique Baggi - 071139 Rafael Ghussn Can -

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS CST em Análise e Desenvlviment de Sistemas 3ª série Fundaments de Sistemas Operacinais A atividade prática supervisinada (ATPS) é um métd de ensinaprendizagem desenvlvid

Leia mais

MASTERCOMP ESCOLA DE INFORMÁTICA

MASTERCOMP ESCOLA DE INFORMÁTICA www.mastercmp.net 1 www.mastercmp.net www.mastercmp.net INFORMAÇO ES ADICIONAIS DO CURSO DE PROMODEL E MS PROJECT Prgramaçã: Carga hrária: 32 Hras Lcal: Sã Sebastiã d Paraís MG Prgramas usads n curs: MS

Leia mais

Lições de liderança aprendidas à duras penas Bill Hybels Duração 62:34

Lições de liderança aprendidas à duras penas Bill Hybels Duração 62:34 The Glbal Leadership Summit Ntas d Facilitadr Lições de liderança aprendidas à duras penas Bill Hybels Duraçã 62:34 Resum da Sessã Lições de liderança e estratégias que geram resultads tangíveis em nssas

Leia mais

Dissídio Retroativo. Cálculos INSS, FGTS e geração da SEFIP

Dissídio Retroativo. Cálculos INSS, FGTS e geração da SEFIP Dissídi Retrativ Cálculs INSS, FGTS e geraçã da SEFIP A rtina de Cálcul de Dissídi Retrativ fi reestruturada para atender a legislaçã da Previdência Scial. A rtina de Aument Salarial (GPER200) deve ser

Leia mais

Requisitos técnicos de alto nível da URS para registros e registradores

Requisitos técnicos de alto nível da URS para registros e registradores Requisits técnics de alt nível da URS para registrs e registradres 17 de utubr de 2013 Os seguintes requisits técnics devem ser seguids pels peradres de registr e registradres para manter a cnfrmidade

Leia mais

TEXTO AULA 9: Técnicas de apresentação / Apresentação do Projeto.

TEXTO AULA 9: Técnicas de apresentação / Apresentação do Projeto. TEXTO AULA 9: Técnicas de apresentaçã / Apresentaçã d Prjet. 9.1 Técnicas de apresentaçã Cm apresentar cm sucess? A qualidade d prdut u d u d serviç quase sempre é cnfundida cm a qualidade da apresentaçã.

Leia mais

Uma leitura sobre a propriedade do conhecimento no software livre e copyleft a partir de conceitos da filosofia grega.

Uma leitura sobre a propriedade do conhecimento no software livre e copyleft a partir de conceitos da filosofia grega. XXVII Cngres de la Asciación Latinamericana de Scilgía. VIII Jrnadas de Scilgía de la Universidad de Buens Aires. Asciación Latinamericana de Scilgía, Buens Aires, 2009. Uma leitura sbre a prpriedade d

Leia mais

METAS DE COMPREENSÃO:

METAS DE COMPREENSÃO: 1. TÓPICO GERADOR: Vivend n sécul XXI e pensand n futur. 2. METAS DE COMPREENSÃO: Essa atividade deverá ter cm meta que s aluns cmpreendam: cm se cnstrói saber científic; cm as áreas d saber estã inter-relacinadas

Leia mais

Diferenciais do QlikView Versus Tecnologias Tradicionais

Diferenciais do QlikView Versus Tecnologias Tradicionais Diferenciais d QlikView Versus Tecnlgias Tradicinais Índice Tecnlgia MOLAP... 3 Demanda criaçã de Datawarehuse... 3 Númer limitad de dimensões... 3 Inflexível... 3 Cnsultas smente nline... 3 Tecnlgia ROLAP...

Leia mais