RICARDO ISHIBASHI MOREIRA DE ALMEIDA UTILIZAÇÃO DE PADRÕES DE PROJETO NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM PHP 5 RELATÓRIO FINAL DE ESTÁGIO

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

Download "RICARDO ISHIBASHI MOREIRA DE ALMEIDA UTILIZAÇÃO DE PADRÕES DE PROJETO NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM PHP 5 RELATÓRIO FINAL DE ESTÁGIO"

Transcrição

1 RICARDO ISHIBASHI MOREIRA DE ALMEIDA UTILIZAÇÃO DE PADRÕES DE PROJETO NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM PHP 5 RELATÓRIO FINAL DE ESTÁGIO PALMAS 2004

2 2 RICARDO ISHIBASHI MOREIRA DE ALMEIDA UTILIZAÇÃO DE PADRÕES DE PROJETO NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM PHP 5 Monografia apresentada como requisito parcial da disciplina Prática de Sistemas de Informação I (Estágio) do curso de Sistemas de Informação, coordenada pelo Prof. Fernando Luiz de Oliveira. PALMAS 2004

3 3 RICARDO ISHIBASHI MOREIRA DE ALMEIDA UTILIZAÇÃO DE PADRÕES DE PROJETO NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM PHP 5 Monografia apresentada como requisito parcial da disciplina Prática de Sistemas de Informação I (Estágio) do curso de Sistemas de Informação, coordenada pelo Prof. Fernando Luiz de Oliveira. Aprovada em dezembro de BANCA EXAMINADORA Prof. Fernando L. Oliveira Centro Universitário Luterano de Palmas Prof. Ricardo Marx Costa Soares de Jesus Centro Universitário Luterano de Palmas Prof. Msc. Eduardo Leal Centro Universitário Luterano de Palmas PALMAS 2004

4 4 SUMÁRIO 1. INTRODUÇÃO REVISÃO DE LITERATURA PHP PHP e a Orientação a Objetos Construtores e Destrutores Herança Encapsulamento Propriedades Estáticas Interface Classes Abstratas Padrões de Projeto Conceito Motivos para se adotar Padrões de Projeto Padrões de Responsabilidade Singleton Padrões de Construção Abstract Factory Padrões de Operação Template Method Padrões de Extensão MATERIAL E MÉTODOS Local e Período Materiais Hardware Software Bibliografia Utilizada Métodos RESULTADOS E DISCUSSÃO Descrição da Aplicação: Ordem do Dia...30

5 Situações e Soluções Propostas Comunicação com o Banco de Dados Gerenciamento de Sessões de Usuário Redefinição de Usuários CONSIDERAÇÕES FINAIS Trabalhos futuros REFERÊNCIAS BIBLIOGRÁFICAS...41

6 6 LISTA DE FIGURAS Figura 1: Tecnologia server-side (MORGAN & PARK & CONVERSE, 2004)...12 Figura 2: Construtores e destrutores...14 Figura 3: Modelo de Herança...15 Figura 4: Herança...15 Figura 5: Encapsulamento...16 Figura 6: Propriedades Estáticas...17 Figura 7: Interface (DALL OGLIO, 2004)...18 Figura 8: Classes Abstratas...18 Figura 9: Singleton (DALL OGLIO, 2004)...22 Figura 10: Abstract Factory 1 (DALL OGLIO, 2004)...23 Figura 11: Abstract Factory 2 (DALL OGLIO, 2004)...24 Figura 12: Template Method (DALL OGLIO, 2004)...25 Figura 13: Singleton Implementação da classe conexao...32 Figura 14: Abstract Factory - Implementação da classe membro...33 Figura 15: Abstract Factory - Implementação da classe participantes...34 Figura 16: Abstract Factory - Implementação da classe Factory...35 Figura 17: Abstract Factory - Exemplo de Utilização...35 Figura 18: Template Method - Implementação da classe usuario...37 Figura 19: Template Method - Implementação das subclasses admin e funcionario...38

7 7 RESUMO Esse trabalho possui como foco a utilização de metodologias de desenvolvimento baseadas em Padrões de Projeto para o desenvolvimento de uma ferramenta voltada para a Web. A ferramenta a ser utilizada como estudo de caso é denominada Ordem do Dia, e tem por objetivo auxiliar a Assembléia Legislativa do Estado do Tocantins a organizar os documentos referentes à pauta de cada sessão parlamentar realizada na referida Instituição. Como um dos objetivos da Assembléia Legislativa é aumentar sua transparência para com a sociedade, definiu-se que a ferramenta seria desenvolvida para estar disponível via Web. Assim, optou-se por utilizar a linguagem de desenvolvimento Web PHP 5, que é Orientada a Objetos e com isso, proporciona maiores benefícios ao desenvolvimento. O objetivo desse trabalho é enfocar a utilização dos Padrões de Projeto juntamente com o paradigma da Orientação a Objetos no desenvolvimento da ferramenta Ordem do Dia e não a ferramenta propriamente dita. Por isto, a mesma não será apresentada integralmente, abordando apenas situações e partes do seu desenvolvimento que foram solucionadas com a utilização de Padrões de Projeto.

8 8 ABSTRACT This article focus the application of methodologies based on Design Patterns in the web tools development. It was based on a case study: the Ordem do Dia (Order of the Day) tool development. That tool supports the organization of the documentation that reports each Tocantins State Legislature parliamentary session. The tool also provides that documentation through the Web, so the Tocantins State Legislature will make them totally available to the people. It was implemented using PHP 5, so that, benefiting the project with all the advantages provided by that object oriented programming language. However, it is important to mention that the target is not the tool itself but the application of Design Patterns in the software development. So, the tool will not be integrally presented, but we will present situations and parts of its development where Design Patterns solutions were adopted successfully.

9 9 1. INTRODUÇÃO O cenário mundial, cada vez mais globalizado e competitivo, cria um ciclo vicioso que exige das organizações um constante investimento em tecnologia. Assim, qualquer micro empresa nos dias de hoje passa a se preocupar em ter pelo menos algum sistema que dê suporte a seus processos gerenciais, para que, assim, não corra o risco de ficar totalmente fora do mercado. Porém, com a quantidade e velocidade que as informações e as tecnologias surgem atualmente, os sistemas precisam ser cada vez mais robustos e ágeis para que possibilitem uma boa aquisição e gerência dessas informações. E, para que isso seja possível, é necessário construir softwares seguindo metodologias que permitam um desenvolvimento otimizado, e que minimize as falhas. Com esse cenário, aplicam-se os Padrões de Projeto, que se tornam uma alternativa para solucionar esse problema. Nesse contexto, onde as informações são cada vez mais volumosas e rápidas, estar ligado a Internet tornou-se um fator de extrema importância para uma organização. Junto com essa necessidade cresce a importância das linguagens voltadas para o desenvolvimento de ferramentas para Internet. Esse desenvolvimento vem acontecendo com o surgimento de linguagens cada vez mais confiáveis. O PHP 5 é uma destas linguagens que visa o desenvolvimento Web que, a cada versão, foi se aprimorando e agregando suporte ao Paradigma da Orientação a Objetos. Aliado a esse paradigma, acrescenta-se, metodologias de Padrões de Projeto associadas, o que traz para o ambiente de desenvolvimento avanços significativos na área de desenvolvimentos de ferramentas Web. A Assembléia Legislativa do Estado do Tocantins, como uma instituição pública, tem o dever de deixar a sociedade bem informada sobre todas as decisões tomadas pelos seus parlamentares e, portanto, necessita que suas informações sejam trabalhadas de uma

10 10 forma transparente e com agilidade. Buscando esse propósito, a Assembléia Legislativa do Estado do Tocantins propôs uma reformulação em dois dos sistemas existentes na Instituição. O primeiro refere-se à reformulação do seu website e o outro se refere ao sistema Ordem do Dia. Esse trabalho utilizará o sistema Ordem do Dia como estudo de caso. Porém, não apresentará o seu desenvolvimento em detalhes. O objetivo se concentra em usar Padrões de Projeto, implementados em PHP 5, como possíveis soluções para determinadas situações detectadas durante o desenvolvimento do sistema Ordem do Dia, buscando sempre otimizar o código, aproveitando as características advindas e proporcionadas pela Programação Orientada a Objetos. Esse trabalho está assim organizado: a seção 2 trata da fundamentação teórica deste trabalho, abordando os conceitos da linguagem de desenvolvimento Web PHP5, além dos conceitos da metodologia de Padrões de Projeto. A seção 3 trata dos tipos de fontes de pesquisas e dos recursos utilizados para realização deste trabalho. A seção 4 aborda os resultados e discussão, gerados por esse trabalho a partir do estudo de caso do desenvolvimento do sistema Ordem do Dia. A seção 5 contém as conclusões e considerações finais do trabalho. E por fim, a seção 6 aborda as referências bibliográficas utilizadas para o desenvolvimento desse trabalho.

11 11 2. REVISÃO DE LITERATURA Esta seção apresenta os conceitos necessários para a fundamentação e para o desenvolvimento deste trabalho. Para tanto, será abordada a linguagem de programação Web PHP 5, verificando a sua adequação ao paradigma da Orientação a Objetos. Na seqüência serão abordados alguns padrões de projetos que auxiliam o desenvolvimento de software, sendo esses descritos e exemplificados, de acordo com a necessidade para o desenvolvimento do trabalho. 2.1 PHP 5 O PHP é uma linguagem voltada para o desenvolvimento Web, que foi desenvolvida para trabalhar em conformidade com a estrutura cliente-servidor. Nessa estrutura, o servidor é o responsável por interpretar os scripts que compõem o documento solicitado, transformá-los em código HTML (HyperText Markup Language) e enviar o resultado ao cliente, que fez a solicitação. Dessa forma, O PHP permite a criação de sites Web dinâmicos com a utilização de consultas a Banco de Dados, controle de cookies e váriáveis de seção, dentre muitos outros recursos. A figura a seguir de MORGAN & PARK & CONVERSE (2004) ilustra o funcionamento da tecnologia server-side.

12 12 Figura 1: Tecnologia server-side (MORGAN & PARK & CONVERSE, 2004) O PHP vem demonstrando ao longo de suas versões um grande amadurecimento como linguagem de programação, e no decorrer do tempo veio agregando características de Orientação a Objetos (OO). Na sua versão 4 já era possível utilizar vários destes recursos, mas somente em sua versão 5 é que o PHP se aproximou mais de uma linguagem OO, oferecendo suporte às principais características desse paradigma, porém, sem deixar de dar suporte aos scripts escritos nas suas versões anteriores. Os conceitos e o suporte a OO pelo PHP serão discutidos com mais detalhes nas seções seguintes PHP e a Orientação a Objetos Seguindo a vertente adotada pela maior parte das linguagens de programação, o PHP aos poucos foi agregando os conceitos da Orientação a Objetos. Esta adequação culminou no desenvolvimento da versão 5, que engloba a maior parte destes conceitos. Essa adequação possibilitou aos desenvolvedores usufruir das principais vantagens advindas com a OO no processo de desenvolvimento de aplicações, tais como reutilização de código, métodos construtores e destrutores, herança, encapsulamento.

13 13 Dessa forma, a camada de negócios de uma aplicação Web passa a ser trabalhada tal como seria desenvolvida em um aplicativo desktop, se apoiando em padrões de desenvolvimento que facilitem a manutenção e a reusabilidade de código. As seções seguintes abordam os conceitos implementados pela linguagem PHP, os quais serão descritos e exemplificados Construtores e Destrutores Segundo LINDEN (1997), um construtor é um tipo de método especial que inicializa um objeto. LINDEN (1997) afirma ainda que a necessidade do construtor se faz porque apenas os membros da mesma classe conseguem acessar dados cujo escopo seja limitado (dados geralmente do tipo private ou protected), não permitindo acesso externo. Por essa razão existe a necessidade de uma função com privilégios dentro da classe para preencher os valores iniciais dos dados de um objeto recém-criado. Já os destrutores são métodos que alertam o sistema quando um objeto chegou ao fim de sua execução. Eles são, portanto, o oposto dos contrutores, pois ao invés de inicializar um objeto, os destrutores desalocam o objeto. A versão anterior do PHP já dispunha de construtores, porém não de destrutores de objetos. O construtor era definido especificando um método com o mesmo nome da classe. Porém, a partir da versão 5, o PHP passou a dispor de dois métodos para implementar estas propriedades ( construct() e destruct()), os quais são executados no momento da construção e destruição de um objeto. A seguir será apresentado o código em PHP que corresponde à implementação destas propriedades.

14 14 class usuario { Function construct() { //construtor new usuario Function destruct() { //destrutor Figura 2: Construtores e destrutores Herança Herança é uma forma de reutilização de software em que novas classes são criadas a partir de classes existentes, absorvendo seus atributos e comportamentos e sofisticando-os com capacidades que as novas classes exigem (DEITEL, 2001). O conceito de herança é outra novidade do PHP 5 que não estava presente nas versões anteriores da linguagem. O PHP 5 implementa a herança chamando o método construtor da classe herdada (classe pai) no interior do construtor da classe herdante (classe filha). A figura a seguir apresenta um exemplo de herança, onde a classe Automóvel é a classe pai e possui as classes Moto, Carro e Ônibus como classes filhas.

15 15 Automóvel roda combustivel construct() Moto Carro Onibus Figura 3: Modelo de Herança A seguir é apresentado o código em PHP que representa um exemplo de implementação da figura acima. class automovel{ $roda; $combustivel; Function construct(){ //contruindo classe automovel class carro extends automovel{ Function construct(){ parent:: construct(); //Chama construtor do pai $roda = 4; $combustivel = gasolina; class moto extends automovel{ Function construct(){ parent:: construct(); //Chama construtor do pai $roda = 2; $combustivel = gasolina; class onibus extends automovel{ Function construct(){ parent:: construct(); //Chama construtor do pai $roda = 6; $combustivel = diesel; Figura 4: Herança

16 Encapsulamento Segundo LINDEN (1997), encapsulamento é a maneira de se associar os dados e as operações executadas neles de forma organizada, especificando claramente quais delas podem ser executadas em quais objetos. O PHP 5 introduziu os operadores de encapsulamento Public, Protected e Private para que se possa garantir quem terá acesso ou não a cada um dos objetos de uma classe. Cada operador de encapsulamento tem suas características, as quais serão apresentadas a seguir: Public: permite acesso irrestrito ao objeto; Protected: permite que apenas objetos da mesma classe e de suas classes filhas acessem o objeto desse tipo; Private: apenas objetos da mesma classe podem acessar um objeto Private. Com o intuito de manter a compatibilidade com as versões anteriores do PHP, se não for especificado nenhum operador de encapsulamento, o PHP entenderá como sendo do tipo Public. O código a seguir apresenta um exemplo de implementação deste conceito no PHP 5. class usuario{ protected $nome; protected function getidade(){ Return $this->idade; class funcionario extends usuario{ function maiordeidade(){ if(usuario::getidade()>=18){ return true; else{ return false; function getnome(){ return $this->nome; Figura 5: Encapsulamento

17 Propriedades Estáticas Segundo LINDEN (1997), um item estático é alguma coisa em uma classe que ocorre apenas uma vez, ao invés de ocorrer uma vez em cada instância da classe. Em sua versão 4, o PHP já permitia fazer chamada a métodos estáticos, ou seja, executar um método sem instanciar uma classe (DALL OGLIO, 2004). Porém, o PHP 5 ampliou a aplicação deste conceito, acrescentando esta propriedade aos atibutos de classe. class funcionario { static $salario=1; function getsalario() { return funcionario::$salario; static function getempresa() { return Empresa do Fulano S.A ; Figura 6: Propriedades Estáticas Interface Interface define um conjunto de funções que devem, obrigatoriamente, ser implementadas por uma classe. Na figura 7, que foi baseada em DALL OGLIO (2004), a interface Automovel define a função Ligar que deve ser, obrigatoriamente, implementada pela classe Palio.

18 18 interface Automovel { public function Ligar(); class Palio implements Automovel { public function Ligar() { //classe obrigatória Figura 7: Interface (DALL OGLIO, 2004) Classes Abstratas Uma classe abstrata é uma classe que não é concebida para criar instâncias. Seu propósito é servir como uma superclasse para outras classes (BARNES, 2004). Uma classe abstrata não pode conter instâncias diretas, podendo apenas ser herdada. O código abaixo exemplifica a utilização de uma classe abstrata no PHP 5. abstract class Automovel { //Classe abstrata class Fiat extends Automovel { //classe Fiat subclasse de Automovel $Palio = new Fiat; Figura 8: Classes Abstratas No exemplo da figura 8 a classe Fiat é uma subclasse de Automóvel que se trata de uma classe abstrata. Ao inicializar a variável Palio, deve-se instanciar a classe Fiat, pois a classe Automovel, por ser abstrata, não pode ser instanciada.

19 Padrões de Projeto Conceito Padrões de Projeto, também conhecido como Design Patterns, têm como objetivo encontrar métodos eficazes de se atingir um objetivo, ou resolver problemas (METSKER, 2004). Para tanto, podem-se aplicar padrões tanto na área de desenvolvimento de software, como também a qualquer meio onde se tenha um problema a ser solucionado. Erich Gamma, Richard Helm, Ralph Jonhson e John Vlissides, foram os precursores do movimento de Padrões de Projeto na área da Computação com o lançamento do livro "Design Patterns: Elements of Reusable Object-Oriented Software". Porém, a partir destes, inúmeros outros surgiram e estão surgindo para resolver os mais variados problemas. Problemas estes que são classificados em diversas formas. Por exemplo, em GAMMA (2000), são apresentados vinte e três (23) padrões, classificados em 3 categorias: Criacional, Estrutural e Comportamental. Já em METSKER (2004), são apresentados diversos padrões, os quais estão classificados em: Interface, Responsabilidade, Construção, Operação e Extensão. Este trabalho irá utilizar esta segunda vertente, porém, não irá abordar padrões de todas as categorias, se restringindo a alguns que serão úteis para o desenvolvimento do mesmo Motivos para se adotar Padrões de Projeto A utilização de Padrões de Projeto proporciona vários benefícios, onde ALUR & CRUPI & MALKS (2001) e ARRINGTON (2001), destacam: Alavancar o uso de uma solução comprovada: após comprovado o sucesso de um padrão, este pode ser reutilizado em tantos outros projetos futuros quantos forem necessários, prevenindo redundâncias comuns em projetos de software;

20 20 Prover um vocabulário comum: geralmente um projeto de software é desenvolvido por uma equipe e a comunicação é um fator crucial para o sucesso deste projeto. Padrões de projeto podem otimizar a comunicação entre a equipe, melhorar a troca de idéias e aumentar o nível de abstração, resultando em uma diminuição do risco de interpretaçõe errôneas; Restringir o domínio da solução: Padrões de Projeto evitam o emprego de soluções muito sobrecarregadas, levando o projeto a um caminho de soluções mais simples e rápidas; Facilidade de uso: desde o início do movimento existe um grande esforço para promover a documentação dos padrões criados, englobando as mais diversas áreas de aplicação, assim como um esforço para tornar essa documentação acessível; Reforçar a teoria OO: a prática demonstrou que a teoria OO não é facilmente assimilável para a maioria das pessoas. No entanto, por trabalhar com um universo bem delimitado, os padrões de projeto desenvolvidos segundo os conceitos da OO, tornam-se excelentes estudos de casos sobre a Orientação a Objetos Padrões de Responsabilidade Os padrões que compõem esta categoria são implementados como objetos que delegam tarefas vindas de um ambiente externo para outros objetos ou para uma unidade central. Uma boa maneira de se controlar a responsabilidade de cada objeto do sistema é utilizar nomes adequados e que indiquem exatamente o que eles fazem. A utilização de padrões de responsabilidade é uma boa maneira para se aplicar encapsulamento no sistema. Os padrões orientados a responsabilidade endereçam contextos nos quais precisamos nos desviar da regra normal de que a responsabilidade deveria ser distribuída tanto quanto possível (METSKER, 2004).

21 21 Existem diversos padrões de responsabilidade, cada qual com sua característica e aplicação. METSKER (2004) destaca os seguintes padrões: Singleton: centraliza a responsabilidade em uma única instância de uma classe; Observer: define uma dependência, de modo que quando um objeto mudar de estado, todos os seus dependentes sejam modificados e atualizados automaticamente; Mediator: centraliza a responsabilidade em uma classe responsável por supervisionar como um conjunto de outros objetos; Proxy: deixa um objeto agir em benefício de outro objeto; Chain of Responsibility: permite que uma solicitação percorra uma cadeia de objetos até que um desses objetos lide com ela; Flyweight: centraliza a responsabilidade em objetos compartilhados. Neste trabalho não serão discutidos todos os tipos de padrões, mas apenas alguns que se mostram úteis ao projeto deste estágio. Dos padrões de responsabilidade citados acima, será detalhado na próxima seção apenas o padrão Singleton Singleton O padrão Singleton caracteriza-se por centralizar a responsabilidade em uma única instância de uma classe. Assim, segundo METSKER (2004), utiliza-se Singleton quando se precisa garantir que uma classe só tenha uma instância e que forneça um ponto global de acesso a ela. A intenção do padrão Singleton sugere que um objeto específico carrega uma responsabilidade da qual outros objetos dependem (METSKER, 2004). No PHP, o padrão Singleton pode ser implementado associando os conceitos de propriedades estáticas a um método qualquer, que no caso da Figura 9 foi definido um para

22 retornar uma instância da conexão a um Banco de Dados. A figura a seguir de DALL OGLIO (2004), apresenta essa situação. 22 class conexao { private static $instancia = null; private function construct() { public static function RetornaInstancia(){ if(self::$instancia == null){ self::$instancia = new conexao; return self::$instancia; Figura 9: Singleton (DALL OGLIO, 2004) Padrões de Construção Segundo METSKER (2004), os padrões orientados para construção permitem a construção de um novo objeto mediante outros meios que não a chamada de um método construtor de classes. METSKER (2004) destaca os seguintes padrões de construção: Builder: Reúne informações para um objeto gradualmente, antes de solicitar sua construção; Factory Method: Posterga a decisão de qual classe instanciar; Abstract Factory: Constrói uma família de objetos que compartilhem uma característica; Prototype: Especifica um objeto a criar a partir de um exemplo existente; Memento: Reconstrói um objeto a partir de uma versão inativa que contenha apenas o estado interno do objeto. A seguir será discutido o Padrão de Construção Abstract Factory Abstract Factory

23 23 A intenção do padrão Abstract Factory é proporcionar a criação de uma família de objetos relacionados ou dependentes (METSKER, 2004). Este padrão atua centralizando a criação dos objetos de maneira a facilitar e padronizar a manutenção do código. A seguir é apresentado um exemplo de implementação em PHP para o padrão Abstract Factory retirado de DALL OGLIO (2004). # Classe Cliente Class Cliente{ function Cliente(){ echo "cliente...\n"; # Classe Fornecedor class Fornecedor{ function Fornecedor(){ echo "fornecedor...\n"; Figura 10: Abstract Factory 1 (DALL OGLIO, 2004) Na figura 10 são criadas as classes Cliente e Fornecedor, porém, verifica-se que em nenhuma delas há a presença de um construtor, pois como dito anteriormente, no Abstract Factory, a criação dos objetos é feita em uma classe centralizadora. Neste exemplo a classe centralizadora será a classe Factory que é apresentada na figura 11.

24 24 # Classe Fábrica de Objetos Class Factory { function CriarCliente($nome) { return new Cliente($nome); function CriarFornecedor($nome) { return new Fornecedor($nome); # Cria objeto Factory $Fabrica = new Factory; # Cria instancias de objetos. $Joao = $Fabrica->CriarCliente('joao'); $Jose = $Fabrica->CriarFornecedor('jose'); # Exibe resultado var_dump($joao); var_dump($jose); Figura 11: Abstract Factory 2 (DALL OGLIO, 2004) Padrões de Operação Os padrões orientados à operação tratam de contextos em que precisamos de mais de um método, geralmente com a mesma assinatura, para participar de um Projeto (METSKER, 2004). METSKER (2004) afirma ainda que classes diferentes podem implementar uma operação de maneira diferente, caracterizando o polimorfismo. Dentre os padrões orientados a operação, destacam-se: Template Method: implementa um algoritmo em um método, postergando a definição de alguns passos do algoritmo para que as subclasses possam redefini-los; State: Distribui uma operação de modo que cada classe represente um estado diferente;

25 25 Strategy: Encapsula uma operação, tornando as implementações intercambiáveis; Command: Encapsula uma chamada de método em um objeto; Interpreter: Distribui uma operação para que cada implementação se aplique a um tipo diferente de composição. A seguir será discutido o Padrão de Operação Template Method Template Method O Template Method é um padrão onde as subclasses podem redefinir o comportamento das classes sem alterar sua estrutura. As partes invariantes são implementadas na superclasse e as variantes são customizadas na subclasse. DALL OGLIO (2004), com o exemplo a seguir, ilustra a implementação de uma classe abstrata Casa, onde o próprio método construtor é o Template Method. # Classe abstrata Casa abstract class Casa{ #Método Construtor public final function Casa(){ print "Template::Construção\n"; // Chama métodos específicos $this->eletricidade(); $this->garagem(); // declara método como obrigatório protected abstract function Eletricidade(); // método opcional protected function Garagem() { # SubClasse MinhaCasa class MinhaCasa extends Casa{ // Método Instalação Elétrica protected function Eletricidade(){ print "Concreta::Eletricidade\n"; // Método Constrói Garagem protected function Garagem(){ print "Concreta::Garagem\n"; # Cria nova instância de MinhaCasa. $a = new MinhaCasa; Figura 12: Template Method (DALL OGLIO, 2004)

26 No exemplo da figura 12 a subclasse MinhaCasa redefine os métodos Eletricidade e Garagem da sua super classe Padrões de Extensão Os padrões orientados à extensão tratam de contextos nos quais precisamos acrescentar comportamento específico para uma coleção de objetos ou acrescentar novos comportamentos a um objeto sem alterar sua classe (METSKER, 2004). Ainda de acordo com METSKER (2004), tem-se os seguintes padrões que implementam Extensão: Template Method: permite a inserção de uma operação dentro de um algoritmo; Command: permite a implementação de uma nova operação que executa em resposta a um evento; Decorator: anexa responsabilidades adicionais a um objeto dinamicamente; Iterator: Fornece um meio de acessar uma coleção de instâncias de uma classe criada; Visitor: permite o acréscimo de novas operações em uma classe, sem alterá-la. Não será discutido nenhum Padrão de Extensão neste capítulo, pois já foi discutido no capítulo anterior o padrão Template Method que também é considerado um Padrão de Extensão.

27 27 3. MATERIAL E MÉTODOS Este trabalho foi realizado com o auxílio de materiais bibliográficos, apoiado por recursos de software e hardware que, juntamente com metodologias e orientação, tornaram possível a realização do mesmo. 3.1 Local e Período O desenvolvimento desse trabalho se deu no segundo semestre do ano de 2004 como parte da disciplina Prática em Sistemas de Informação I. Para tanto, o mesmo foi desenvolvido basicamente no setor de desenvolvimento de softwares da Assembléia Legislativa do Estado do Tocantins. 3.2 Materiais Os materiais utilizados para o desenvolvimento deste trabalho são em sua maioria patrimônio da Assembléia Legislativa do Estado do Tocantins, tendo também alguns recursos pessoais agregados para o auxílio no desenvolvimento Hardware Atlhon 1.4Ghz, 512Mb de RAM (Computador pessoal); Athlon XP 1.8Ghz, 256Mb de RAM (Recurso da Assembléia); Pentium IV 2.4Ghz, 768Mb de RAM (Recurso da Assembléia).

28 Software Microsoft Windows XP Professional; Microsoft Office XP Professional; Macromedia Dreamweaver MX; Macromedia Fireworks MX; Internet Explorer 6.0; Adobe Acrobat Reader 6.0; Microsoft SQLServer 2000; Rational Rose Bibliografia Utilizada Livros; Sites diversos; Artigos técnicos; Artigos científicos; Trabalhos de Conclusão de Curso. 3.3 Métodos Foram feitos levantamentos bibliográficos sobre Padrões de Projetos. A partir da identificação da popularidade e fácil usabilidade da linguagem PHP, entre as demais existentes, foram levantadas as características básicas da linguagem, bem como seu suporte à Orientação a Objetos. Foram encontradas situações onde a aplicação das metodologias de Padrões de Projeto juntamente com a linguagem PHP 5 se mostraram eficazes para a solução de tais problemas.

29 29 4. RESULTADOS E DISCUSSÃO Com a crescente globalização e o crescimento da Internet, as organizações percebem cada vez mais a necessidade de um modelo de negócios que lhe permita comunicar e estar inseridas dentro desse novo mundo virtual. Com esse novo cenário, as aplicações desktop tendem cada vez mais a serem integradas, ou até mesmo substituídas por versões para Web. Tal cenário também traz a necessidade de que novas tecnologias surjam para dar suporte ao crescimento acelerado da Web. O PHP 5 aparece como uma ferramenta preparada para atender essas necessidades e vem demonstrando um grande amadurecimento enquanto linguagem, mostrando que a Web está cada vez mais ganhando espaço, deixando de ser considerada como fator secundário nas tecnologias. Esse amadurecimento possibilita que se aplique em ferramentas Web conceitos e metodologias particulares ao desenvolvimento desktop. Outra característica decorrente desta situação trata da evolução das linguagens de desenvolvimento Web, que estão buscando agregar teorias mais consolidadas e que podem proporcionar vantagens no desenvolvimento de software, tal como ocorreu com a adequação da maior parte das linguagens com a Orientação a Objetos. Em decorrência disto, muito do que foi desenvolvido baseado na POO passa a ser utilizado no desenvolvimento de sistemas Web, tal como ocorre com muitos dos Padrões de Projeto existentes e disponibilizados para auxiliar na construção mais eficiente de sistemas computacionais. Para aplicar os conhecimentos adquiridos por esse trabalho, bem como verificar a validade das vantagens acima citadas, optou-se pelo desenvolvimento de um sistema, denominado Ordem do Dia, para a Assembléia Legislativa do Estado do Tocantins, no qual serão aplicados alguns Padrões de Projeto, assim como a utilização da linguagem PHP 5 para o seu desenvolvimento. O objetivo do referido sistema é possibilitar à Assembléia Legislativa mecanismos para organizar os documentos referentes às sessões ordinárias e

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org)

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org) Padrões de J930 Projeto Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

1Introdução Helder da Rocha (helder@acm.org)

1Introdução Helder da Rocha (helder@acm.org) J930 Padrões Projeto de 1Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

Programação Orientada a Objetos. Padrões de Criação

Programação Orientada a Objetos. Padrões de Criação Programação Orientada a Objetos Padrões de Criação Cristiano Lehrer, M.Sc. Objetivos Apresentar cada um dos 23 padrões clássicos descrevendo: O problema que solucionam. A solução. Diagramas UML (Unified

Leia mais

Introdução à Padrões de Projeto. Glauber Magalhães Pires

Introdução à Padrões de Projeto. Glauber Magalhães Pires Introdução à Padrões de Projeto Glauber Magalhães Pires Agenda O que são padrões de projeto? Para que servem e por que utilizá-los? Elementos constituintes Como escolher o padrão a ser usado? Como são

Leia mais

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Padrões de Projeto Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Apresentação Conceitos Definição Ponto de vista prático História Padrões de Projeto Conhecidos

Leia mais

Curso - Padrões de Projeto Módulo 1: Introdução

Curso - Padrões de Projeto Módulo 1: Introdução Curso - Padrões de Projeto Módulo 1: Introdução Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1 Design Patterns Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/2012.1/es1 Sumário Reuso de Software Introdução Benefícios e Desvantagens Visão do Reuso Padrões de Projeto

Leia mais

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS. PADRÕES DE SOFTWARE 1 Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade Grupo de Padrões de Software da UECE (GPS.UECE) Julho-2009 CONTEÚDO Introdução aos Padrões de Software O quê são padrões?

Leia mais

PS: Este artigo é destinado a quem já possui conhecimentos razoáveis em orientação a objetos. Não entrando em muitos detalhes conceituais.

PS: Este artigo é destinado a quem já possui conhecimentos razoáveis em orientação a objetos. Não entrando em muitos detalhes conceituais. O PHP5 traz diversas novidades em termos de recursos, principalmente em relação à Orientação a Objetos. Neste artigo iremos ver de forma sucinta quais são estes recursos e de que forma podemos aplicálos

Leia mais

Design Patterns STRATEGY EMERSON BARROS DE MENESES

Design Patterns STRATEGY EMERSON BARROS DE MENESES Design Patterns STRATEGY EMERSON BARROS DE MENESES 1 Breve Histórico Sobre Design Patterns A origem dos Design Patterns (Padrões de Desenho ou ainda Padrões de Projeto) vem do trabalho de um arquiteto

Leia mais

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos Programação Avançada Padrões de Projeto de Software 1 Fonte: Oswaldo B. Peres e K19 Treinamentos Introdução Projetar software OO reusável e de boa qualidade é uma tarefa difícil; Para realizar essa tarefa

Leia mais

Novemax Biblioteca OO para abstração de componentes HTML, desenvolvida em PHP

Novemax Biblioteca OO para abstração de componentes HTML, desenvolvida em PHP Novemax Biblioteca OO para abstração de componentes HTML, desenvolvida em PHP Isac Velezo de C. Aguiar isacaguiar@gmail.com Jailson Oliveira da Boa Morte jailsonboamorte@gmail.com Instituto de Matemática

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

PHP INTRODUÇÃO CLASSES E OBJETOS

PHP INTRODUÇÃO CLASSES E OBJETOS INTRODUÇÃO PHP AULA 8 ORIENTAÇÃO A OBJETOS Professor: Leonardo Pereira E-mail: leongamerti@gmail.com Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si A orientação a objetos ou OO é o paradigma

Leia mais

ProgramaTchê programatche.net Programação OO com PHP

ProgramaTchê programatche.net Programação OO com PHP Roteiro 2 Objetivos: * Apresentar a sintaxe básica para utilização de Orientação a Objetos em PHP. Ferramentas necessárias Navegador, NetBeans, Servidor Apache. 1 Orientação a Objetos em PHP PHP é uma

Leia mais

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto de Software Orientado a Objetos Padrões de Projeto de Software Orientado a Objetos Ricardo Argenton Ramos [Baseado nos slides do professor Fabio Kon - USP] 1 Padrões de Projeto de Software OO Também conhecidos como Padrões de Desenho

Leia mais

PHP: Programando com Orientação a Objetos

PHP: Programando com Orientação a Objetos PHP: Programando com Orientação a Objetos Pablo Dall'Oglio Adianti Solutions www.adianti.com.br Roteiro Conceitos de Orientação a Objetos; Classes, objetos, propriedades, métodos; Métodos construtores

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Projeto

Leia mais

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme. sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.la/rogerio definição - é uma forma de programar e organizar um sistema

Leia mais

Prof.ª Esp. Talita Pagani

Prof.ª Esp. Talita Pagani Especialização em Engenharia de Software Prof.ª Esp. Talita Pagani talita.cpb@gmail.com @talitapagani 21/02/2014 Design Patterns Aula 1 Prof.ª Esp. Talita Pagani 1 Informações gerais 1. Definição de Design

Leia mais

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Padrões GoF Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução Padrões de Criação Padrões de Estrutura Padrões de comportamento Leonardo Murta Padrões GoF 2 Introdução Os padrões GoF (Gamma

Leia mais

Testes com Design Patterns

Testes com Design Patterns Helder da Rocha (helder.darocha@gmail.com) 31 de março de 2005 71. Que padrão de design pode ser usado para permitir que uma implementação específica e uma hierarquia de abstrações possa variar independentemente?

Leia mais

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Pessoal, fiz uma coletânea das questões mais recentes de concursos públicos de TODO o Brasil de várias bancas diferentes sobre os assuntos Orientação

Leia mais

Parte I. Orientação a objetos no PHP. Contato: Site: http://professores.chapeco.ifsc.edu.br/lara/

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site: http://professores.chapeco.ifsc.edu.br/lara/ Parte I Programação para WEB II Orientação a objetos no PHP Contato: Site: http://professores.chapeco.ifsc.edu.br/lara/ Programação para WEB II 1 PHP Estruturado Os programadores

Leia mais

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,

Leia mais

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma Pasteur Ottoni de Miranda Junior Alguns Padrões de Projeto Gamma Padrões Gamma de Projeto(ou Gang-of-Four, gof) Os padrões gof foram publicados por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 07 Padrões GoF (Command e Template Method) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS Introdução

Leia mais

Padrões clássicos ou padrões GoF O livro "Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de

Padrões clássicos ou padrões GoF O livro Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de Padrões de Projeto Disciplina: Engenharia de Software - 2009.1 Professora: Rossana Maria de Castro Andrade Assistente da disciplina: Ricardo Fernandes de Almeida 1 O que é um Padrão? Um padrão descreve

Leia mais

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê? Bibliografia Desenvolvimento Orientado a Objetos Prof.: Edson dos Santos Cordeiro LARMAN, Graig. Utilizando UML e padrões. Porto Alegre: Bookman, 2000. STAA, Arndt von. Programação modular. Rio de Janeiro:

Leia mais

Padrões de Projeto em PHP

Padrões de Projeto em PHP Aprendendo Padrões de Projeto em PHP William Sanders Novatec Authorized Portuguese translation of the English edition of titled Learning PHP Design Patterns ISBN 9781449344917 2013 William B. Sanders.

Leia mais

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação Última actualização: 25 de Outubro de 2008 Ano Lectivo 2008/2009 1º Semestre ção com Objectos ção Centrada em Objectos Docente: Paulo Leocádio Web: www.uac.pt/~pleocadio E-mail: pleocadio@uac.pt : Competências:

Leia mais

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS Jean Henrique Zenzeluk* Sérgio Ribeiro** Resumo. Este artigo descreve os conceitos de Orientação a Objetos na linguagem de programação

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC Uma Introdução aos Padrões de Projeto com Java Roberto Willrich INE-CTC-UFSC 1 Introdução aos Padrões de Projeto Programação Introdução Motivação, Definição, Características, Histórico Descrição de um

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 8 Modelagem de classes de projeto A perfeição (no projeto) é alcançada, não quando não há

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Padrões de projeto 1

Padrões de projeto 1 Padrões de projeto 1 Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2 Responsabilidades Booch e Rumbaugh Responsabilidade é um contrato ou obrigação de um tipo ou classe. Dois

Leia mais

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE Nelson Ribeiro de Carvalho Júnior 1 RESUMO Atualmente o cenário mundial cuja dependência do software está cada vez mais evidente requer que

Leia mais

PADRÕES DE PROJETO. Cleviton Monteiro (cleviton@gmail.com)

PADRÕES DE PROJETO. Cleviton Monteiro (cleviton@gmail.com) PADRÕES DE PROJETO Cleviton Monteiro (cleviton@gmail.com) Roteiro Atributos de qualidade Boas práticas de projeto Code Smell Padrões de Projeto Atributos de qualidade Coesão Acoplamento Atributos de qualidade

Leia mais

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento PHP Profissional APRENDA A DESENVOLVER SISTEMAS PROFISSIONAIS ORIENTADOS A OBJETOS COM PADRÕES DE PROJETO Alexandre Altair de Melo Mauricio G. F. Nascimento Novatec Sumário Agradecimentos...13 Sobre os

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR FACULDADE DE CIÊNCIAS APLICADAS SAGRADO CORAÇÃO DIRETORIA DE ENSINO SUPERIOR COORDENAÇÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO GUSTAVO ANDRÉ DE FREITAS RILIANE ALPOIM PARIS RODRIGO SILVA DE SOUZA PADRÕES

Leia mais

UML Unified Modeling Language

UML Unified Modeling Language UML Unified Modeling Language Linguagem de Modelagem Unificada A linguagem UML UML (Unified Modeling Language) Linguagem de Modelagem Unificada É uma linguagem para especificação, É uma linguagem para

Leia mais

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO CURSO Engenharia Eletrônica MATRIZ FUNDAMENTAÇÃO LEGAL (Resolução do COEPP que aprovou a matriz curricular

Leia mais

Desafios na construção de um Framework de acesso a dados em PHP

Desafios na construção de um Framework de acesso a dados em PHP 4 5 Desafios na construção de um Framework de acesso a dados em PHP Dimas Ferreira Vidal O presente artigo procura mostrar os principais desafios no processo de desenvolvimento do framework PHPO2_DB de

Leia mais

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB GLAUBER VOLKMER SILVIO DANILO DE OLIVEIRA MARÇAL DE LIMA HOKAMA Resumo. Os padrões de projetos tratam

Leia mais

Design Pattern Implementation in Java and AspectJ

Design Pattern Implementation in Java and AspectJ Design Pattern Implementation in Java and AspectJ Jan Hannemann Gregor Kiczales In Proceedings of 2002 ACM SIGPLAN conference on OOPSLA. NY, USA. Introdução 2 Introdução 3 Introdução 4 Introdução 5 Introdução

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Histórico A orientação a objetos (OO) foi concebida na década de 70. Origem na linguagem SIMULA-67 (década

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Programação com Objectos

Programação com Objectos Programação com Objectos PADRÕES DE DESENHO Classificaçã Objectivo Criação Estrutura Comportamento Introdução Alguns Padrões de Desenho Classe Factory Method Adapter Interpreter Template Method O que é

Leia mais

FERRAMENTAS PARA DESENVOLVIMENTO EM C#

FERRAMENTAS PARA DESENVOLVIMENTO EM C# FERRAMENTAS PARA DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Wyllian Fressatti 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wyllian@unipar.br Resumo. Este artigo

Leia mais

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Padrões de Desenho (Design Patterns)

Padrões de Desenho (Design Patterns) Padrões de Desenho (Design Patterns) O que são padrões de desenho Porque são úteis Conhecer alguns padrões 1 Padrões (Patterns) Design Patterns Explained: A New Perspective on Object-Oriented Design, Alan

Leia mais

João Filho Borges Leite

João Filho Borges Leite João Filho Borges Leite DESENVOLVIMENTO DE UM SISTEMA WEB DE GERENCIAMENTO PARA AS DISCIPLINAS DE MODELAGEM E DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO Palmas 2006 i João Filho Borges Leite DESENVOLVIMENTO

Leia mais

MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET

MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET Átila Correia Cunha 1, 2, Glaucon Henrique Mauricio Maia 1, 2, Waner Ferreira Tavares 1, 2, Jorge Bergson¹, Rui Gomes Patrício 3

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Histórico de revisões

Histórico de revisões Design Patterns Histórico de revisões Data Versão Descrição Autor 15/1/2014 1.0 Finalização da primeira versão HEngholmJr OBJETIVOS Fornecer uma visão geral sobre Design Patterns visando atingir os requisitos

Leia mais

PROVA DE NÍVEL SUPERIOR. CARGO: Técnico de Nível Superior Júnior II - TECNOLOGIA DA INFORMAÇÃO

PROVA DE NÍVEL SUPERIOR. CARGO: Técnico de Nível Superior Júnior II - TECNOLOGIA DA INFORMAÇÃO PROVA DE NÍVEL SUPERIOR CARGO: Técnico de Nível Superior Júnior II - TECNOLOGIA DA INFORMAÇÃO 1. O ambiente Delphi suporta o desenvolvimento de aplicações orientadas a objetos por meio da linguagem Object

Leia mais

PictureFrame: Um padrão para criação de imagens reutilizáveis

PictureFrame: Um padrão para criação de imagens reutilizáveis PictureFrame: Um padrão para criação de imagens reutilizáveis Paulo A. S. Costa 1,2,3, Ismayle S. Santos 1,2,3, Rossana M. C. Andrade 1,2,4 1 Grupo de Redes, Engenharia de Software e Sistemas - GREaT 2

Leia mais

Módulo 07 Características Avançadas de Classes

Módulo 07 Características Avançadas de Classes Módulo 07 Características Avançadas de Classes Última Atualização: 15/06/2010 1 Objetivos Descrever variáveis, métodos e iniciadores static Descrever a semântica do modificador final em classes, métodos

Leia mais

Frameworks. Pasteur Ottoni de Miranda Junior

Frameworks. Pasteur Ottoni de Miranda Junior Frameworks Pasteur Ottoni de Miranda Junior 1-Definição Apesar do avanço das técnicas de desenvolvimento de software, a construção de software ainda é um processo extremamente complexo.a reutilização tem

Leia mais

NEVA: Programa para aumento de performance de sites web usando o algoritmo de esteganografia

NEVA: Programa para aumento de performance de sites web usando o algoritmo de esteganografia NEVA: Programa para aumento de performance de sites web usando o algoritmo de esteganografia MÁRCIO PANTOJA LOBATO 1, PEDRO VICTOR PONTES PINHEIRO 1, ROBERTO YURI DA SILVA FRANCO 1, ALESSANDRA NATASHA

Leia mais

OO IMPACTO DA UTILIZAÇÃO DE DESIGN

OO IMPACTO DA UTILIZAÇÃO DE DESIGN OO IMPACTO DA UTILIZAÇÃO DE DESIGN PATTERNS NAS MÉTRICAS E ESTIMATIVAS DE PROJETOS DE SOFTWARE: a utilização de padrões tem alguma influência nas estimativas? Ricardo Alexsandro de Medeiros Valentim 1

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS CST em Análise e Desenvolvimento de Sistemas 3 ª Série Programação Orientada a Objetos A Atividade Prática Supervisionada (ATPS) é um procedimento metodológico de ensino-aprendizagem

Leia mais

Apostila do Curso de PHP Orientado a Objetos

Apostila do Curso de PHP Orientado a Objetos PHP OO Universidade Federal de Uberlândia Faculdade de Computação PET Sistemas de Informação Apostila do Curso de PHP Orientado a Objetos PHP O.O 1 Sumário O que é o PHP?...4 Como funciona o PHP?...4 O

Leia mais

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - MÓDULO 3 - MODELAGEM DE SISTEMAS ORIENTADA A OBJETOS COM UML 1. INTRODUÇÃO A partir de 1980, diversos métodos de desenvolvimento de sistemas surgiram para apoiar o paradigma orientado a objetos com uma

Leia mais

PROJECT FRAMEWORK MODEL PMF: PARA O DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO ORIENTADOS A OBJETOS Leandro Doutor Branquinho Sérgio Teixeira de

PROJECT FRAMEWORK MODEL PMF: PARA O DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO ORIENTADOS A OBJETOS Leandro Doutor Branquinho Sérgio Teixeira de PROJECT FRAMEWORK MODEL PMF: PARA O DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO ORIENTADOS A OBJETOS Leandro Doutor Branquinho Sérgio Teixeira de Carvalho Leandro D. Branquinho e Sérgio Teixeira de Carvalho

Leia mais

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância 5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância O capítulo anterior apresentou uma discussão sobre a inclusão dos chamados learning services no processo

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Automação do Processo de Instalação de Softwares

Automação do Processo de Instalação de Softwares Automação do Processo de Instalação de Softwares Aislan Nogueira Diogo Avelino João Rafael Azevedo Milene Moreira Companhia Siderúrgica Nacional - CSN RESUMO Este artigo tem como finalidade apresentar

Leia mais

Programa do Módulo 2. Fundações do Modelo Objeto

Programa do Módulo 2. Fundações do Modelo Objeto 2.1 Programa do Módulo 2 Orientação a Objetos Conceitos Básicos Análise Orientada a Objetos (UML) Processo Unificado (RUP) Fundações do Modelo Objeto 2.2 Programação Orientada a Objetos: é um método de

Leia mais

Padrões de Software (Software Patterns)

Padrões de Software (Software Patterns) Padrões de Software (Software Patterns) Cleidson de Souza - cdesouza@ufpa.br Departamento de Informática Universidade Federal do Pará Agenda! Definição! Histórico! Motivação! Exemplo Estratégia MVC! Forma

Leia mais

Desenvolvimento de Aplicações para Internet Aula 8

Desenvolvimento de Aplicações para Internet Aula 8 Desenvolvimento de Aplicações para Internet Aula 8 Celso Olivete Júnior olivete@fct.unesp.br na aula passada Orientação a Objetos Classes Objetos Construtores Destrutores 2 na aula passada Construtores

Leia mais

Capítulo 2 Introdução à ferramenta Flash

Capítulo 2 Introdução à ferramenta Flash Capítulo 2 Introdução à ferramenta Flash Índice 1. O uso da ferramenta Flash no projeto RIVED.... 1 2. História do Flash... 4 1. O uso da ferramenta Flash no projeto RIVED. É importante, antes de iniciarmos

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

Um Framework MVC para. Aplicações em Java utilizando Swing.

Um Framework MVC para. Aplicações em Java utilizando Swing. Um Framework MVC para Aplicações em Java utilizando Swing. Alessandro Lemser Curso de Ciência da Computação Universidade do Vale do Itajaí Campus São José São José, SC 88115-100, Brasil alemser@brturbo.com

Leia mais

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados

Leia mais

Padrão Básico de Projeto: Interfaces e Polimorfismo

Padrão Básico de Projeto: Interfaces e Polimorfismo Padrão Básico de Projeto: Interfaces e Polimorfismo Herança de implementação versus herança de interface Há uma diferença grande entre uma classe e seu tipo A classe define ambos um tipo e uma implementação

Leia mais

Herança. Alberto Costa Neto DComp - UFS

Herança. Alberto Costa Neto DComp - UFS Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais

Leia mais

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Trabalho de Diplomação Gabriel Augusto Gimenes 9881 André Marcos Silva (Orientador) Trabalho de Diplomação Proposta para a Implementação

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

SISTEMA DE GERENCIAMENTO E CONTROLE DE DOCUMENTOS DE TCC E ESTÁGIO

SISTEMA DE GERENCIAMENTO E CONTROLE DE DOCUMENTOS DE TCC E ESTÁGIO SISTEMA DE GERENCIAMENTO E CONTROLE DE DOCUMENTOS DE TCC E ESTÁGIO Marcelo Karpinski Brambila 1, Luiz Gustavo Galves Mahlmann 2 1 Acadêmico do Curso de Sistemas de Informação da ULBRA Guaíba < mkbrambila@terra.com.br

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Rogério Eduardo Garcia (rogerio@fct.unesp.br) Bacharelado em Ciência da Computação Aula 05 Material preparado por Fernanda Madeiral Delfim Tópicos Aula 5 Contextualização UML Astah

Leia mais

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1 Sumário Java Aviso! História do Java Programação Orientada à Objetos Os quatro pilares da OOP Abstração

Leia mais

SISTEMA DE CONTROLE INTERNO DE FLUXO DE CAIXA DO SETOR DE APOIO FINANCEIRO (ULBRA GUAÍBA)

SISTEMA DE CONTROLE INTERNO DE FLUXO DE CAIXA DO SETOR DE APOIO FINANCEIRO (ULBRA GUAÍBA) SISTEMA DE CONTROLE INTERNO DE FLUXO DE CAIXA DO SETOR DE APOIO FINANCEIRO (ULBRA GUAÍBA) Alessandra Lubbe 1 Alexandre Evangelista 2 Jeandro Perceval 3 José Ramiro Pereira 4 Luiz Gustavo Mahlmann 5 RESUMO

Leia mais

4.2.10. Incluir Unidades de Produto... 27 4.2.11. Consultar Unidades de Produto... 28 4.2.12. Alterar Unidades de Produto... 28 4.2.13.

4.2.10. Incluir Unidades de Produto... 27 4.2.11. Consultar Unidades de Produto... 28 4.2.12. Alterar Unidades de Produto... 28 4.2.13. JOÃO GARIBALDI NETO REENGENHARIA DO SISTEMA DE ADMINISTRAÇÃO DE ALMOXARIFADO DO TRIBUNAL DE CONTAS DO ESTADO DO TOCANTINS UTILIZANDO PHP 5 E ORIENTAÇÃO A OBJETO PALMAS 2006 JOÃO GARIBALDI NETO REENGENHARIA

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Apresentação da Disciplina Edirlei Soares de Lima Objetivos da Disciplina Apresentar e discutir técnicas avançadas de Análise e Projeto de

Leia mais

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Manual de padrões e convenções para desenvolvimento de sistemas PHP Versão Conteúdo 1.

Leia mais

Padrões de Contagem de Pontos de Função

Padrões de Contagem de Pontos de Função Padrões de Contagem de Pontos de Função Contexto Versão: 1.0.0 Objetivo O propósito deste documento é apresentar os padrões estabelecidos para utilização da técnica de Análise de Pontos de Função no ambiente

Leia mais

Análise e Design OO com UML

Análise e Design OO com UML Análise e Design OO com UML Histórico de revisões Data Versão Descrição Autor 03/01/2015 1.3 Revisão e atualização HEngholmJr 24/12/2011 1.0 Criação da primeira versão HEngholmJr 9/1/2012 1.1 Correção

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM NOVEMBRO / 2014 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

CONCURSO PÚBLICO EDITAL N o 135/2011 FUNÇÃO: ANALISTA DE INFORMÁTICA ÁREA DE DESENVOLVIMENTO DE SISTEMAS (NOME COMPLETO EM LETRA DE FORMA) INSTRUÇÕES

CONCURSO PÚBLICO EDITAL N o 135/2011 FUNÇÃO: ANALISTA DE INFORMÁTICA ÁREA DE DESENVOLVIMENTO DE SISTEMAS (NOME COMPLETO EM LETRA DE FORMA) INSTRUÇÕES UNIVERSIDADE ESTADUAL DE PONTA GROSSA COMISSÃO PERMANENTE DE SELEÇÃO CONCURSO PÚBLICO EDITAL N o 135/2011 FUNÇÃO: ANALISTA DE INFORMÁTICA ÁREA DE DESENVOLVIMENTO DE SISTEMAS (NOME COMPLETO EM LETRA DE

Leia mais

Histórico de Revisão Data Versão Descrição Autor

Histórico de Revisão Data Versão Descrição Autor H6Projetos Documento de Requisitos Versão 1.3 Histórico de Revisão Data Versão Descrição Autor 05/09/2013 1.0 Preenchimento do Capítulo 2 Requisitos Funcionais Evilson Montenegro 26/09/2013 1.1 Preenchimento

Leia mais

Desenvolvimento de Aplicações para Internet Aula 7

Desenvolvimento de Aplicações para Internet Aula 7 Desenvolvimento de Aplicações para Internet Aula 7 Celso Olivete Júnior olivete@fct.unesp.br Classe e tipos de dados Classe Conjunto de objetos semelhantes, isto é, com a mesma estrutura (atributos) e

Leia mais

Universidade Federal Rural de Pernambuco. Bacharelado em Sistemas de Informação. Disciplina: Análise e Projeto de Sistemas de Informação

Universidade Federal Rural de Pernambuco. Bacharelado em Sistemas de Informação. Disciplina: Análise e Projeto de Sistemas de Informação Universidade Federal Rural de Pernambuco Bacharelado em Sistemas de Informação Disciplina: Análise e Projeto de Sistemas de Informação Docente: Rodrigo Aluna: Thays Melo de Moraes Diagramas do Projeto

Leia mais

Padrões de Projeto em Aplicações Web Desenvolvendo projetos web consistentes baseados em reuso de soluções

Padrões de Projeto em Aplicações Web Desenvolvendo projetos web consistentes baseados em reuso de soluções 1/ Padrões de Projeto em Aplicações Web Desenvolvendo projetos web consistentes baseados em reuso de soluções Adote as melhores práticas de reuso de soluções com a abordagem de Padrões de Projeto (Design

Leia mais