Este documento apresenta um exemplo de uso de padrões J2EE em uma arquitetura de sistema de auto-escola, descrevendo quatro padrões (Intercepting Filter, Business Delegate, Session Facade e Data Access Objects) e como eles são aplicados nas camadas de apresentação, negócio e integração de acordo com as boas práticas J2EE Blueprints.
Questionário sobre casos de uso e classes revisão da tentativaAluisioSantos4
O documento apresenta as respostas corretas de um questionário sobre casos de uso e classes realizado em um sistema de aprendizagem online. O questionário continha 11 questões que abordaram conceitos como casos de uso, atores, diagramas de classes e visibilidade. O estudante obteve nota máxima, respondendo corretamente a todas as questões.
Questionário sobre padrões de projeto revisão da tentativaAluisioSantos4
O documento descreve um questionário sobre padrões de projeto realizado no Moodle. O questionário foi concluído em 8 minutos e 55 segundos e obteve nota máxima de 10 pontos.
Questionário sobre modelagem revisão da tentativaAluisioSantos4
O documento descreve uma tentativa de questionário sobre modelagem de software realizada em 13 de agosto de 2020. O questionário continha 4 questões que tratavam de tópicos como visões de desenvolvimento de software, objetivos da modelagem e a importância da modelagem versus apenas programação. A tentativa obteve nota máxima, respondendo corretamente a todas as questões.
Questionário sobre conceitos oo revisão da tentativaAluisioSantos4
Este documento fornece um resumo detalhado de uma tentativa de questionário sobre conceitos de programação orientada a objetos. O resumo inclui as respostas corretas para cada uma das 10 questões, a pontuação total obtida e o tempo gasto para concluir o questionário.
O documento resume os padrões de projeto GRASP (General Responsability Assignment Software Patterns) e GoF (Gang of Four). GRASP descreve princípios para atribuir responsabilidades a classes e objetos em projetos orientados a objetos. GoF classifica padrões de projeto em criacionais, estruturais e comportamentais.
Aula teórica 2 da unidade (disciplina) de Programação Orientada por Objectivos para os cursos de LIGE, LEI e LETI no ISCTE-IUL no 2.º semestre do ano lectivo de 2009/2010.
Questionário sobre padrões de codificação java revisão da tentativaAluisioSantos4
O documento é um questionário sobre padrões de codificação Java, no qual o estudante acertou todas as perguntas. As perguntas trataram de comentários de documentação, declarações if-else, nomeação de constantes e classes, e retorno de valores.
Questionário sobre programação oo com java revisão da tentativaAluisioSantos4
1) O documento é uma revisão de um questionário sobre Programação Orientada a Objetos com Java, no qual o estudante obteve nota máxima.
2) O questionário continha 5 questões que abordaram conceitos como overloading, overriding e classes.
3) O estudante corretamente identificou os exemplos de overloading e overriding apresentados e a quantidade de atributos da classe Cat no diagrama de classes proposto.
Questionário sobre casos de uso e classes revisão da tentativaAluisioSantos4
O documento apresenta as respostas corretas de um questionário sobre casos de uso e classes realizado em um sistema de aprendizagem online. O questionário continha 11 questões que abordaram conceitos como casos de uso, atores, diagramas de classes e visibilidade. O estudante obteve nota máxima, respondendo corretamente a todas as questões.
Questionário sobre padrões de projeto revisão da tentativaAluisioSantos4
O documento descreve um questionário sobre padrões de projeto realizado no Moodle. O questionário foi concluído em 8 minutos e 55 segundos e obteve nota máxima de 10 pontos.
Questionário sobre modelagem revisão da tentativaAluisioSantos4
O documento descreve uma tentativa de questionário sobre modelagem de software realizada em 13 de agosto de 2020. O questionário continha 4 questões que tratavam de tópicos como visões de desenvolvimento de software, objetivos da modelagem e a importância da modelagem versus apenas programação. A tentativa obteve nota máxima, respondendo corretamente a todas as questões.
Questionário sobre conceitos oo revisão da tentativaAluisioSantos4
Este documento fornece um resumo detalhado de uma tentativa de questionário sobre conceitos de programação orientada a objetos. O resumo inclui as respostas corretas para cada uma das 10 questões, a pontuação total obtida e o tempo gasto para concluir o questionário.
O documento resume os padrões de projeto GRASP (General Responsability Assignment Software Patterns) e GoF (Gang of Four). GRASP descreve princípios para atribuir responsabilidades a classes e objetos em projetos orientados a objetos. GoF classifica padrões de projeto em criacionais, estruturais e comportamentais.
Aula teórica 2 da unidade (disciplina) de Programação Orientada por Objectivos para os cursos de LIGE, LEI e LETI no ISCTE-IUL no 2.º semestre do ano lectivo de 2009/2010.
Questionário sobre padrões de codificação java revisão da tentativaAluisioSantos4
O documento é um questionário sobre padrões de codificação Java, no qual o estudante acertou todas as perguntas. As perguntas trataram de comentários de documentação, declarações if-else, nomeação de constantes e classes, e retorno de valores.
Questionário sobre programação oo com java revisão da tentativaAluisioSantos4
1) O documento é uma revisão de um questionário sobre Programação Orientada a Objetos com Java, no qual o estudante obteve nota máxima.
2) O questionário continha 5 questões que abordaram conceitos como overloading, overriding e classes.
3) O estudante corretamente identificou os exemplos de overloading e overriding apresentados e a quantidade de atributos da classe Cat no diagrama de classes proposto.
Questionário sobre padrões revisão da tentativaAluisioSantos4
Este documento é um resumo de uma tentativa de questionário sobre padrões de projeto. O questionário continha quatro perguntas sobre princípios de projeto, arquitetura MVC, propriedades arquiteturais que impactam um sistema e padrões Java EE. O estudante obteve nota máxima no questionário demonstrando compreensão dos conceitos cobrados.
Importância do Teste Unitário na Qualidade do SoftwareEdison Moreira
Trabalho Final da Graduação em Ciência de Computação na Unicarioca em 2006. Foi desenvolvido o Sistema Colaborativo de Tradução para demonstrar os principais conceitos de teste unitário, integração dos processos de desenvolvimento e testes.
O documento discute padrões estruturais em Java, especificamente o padrão Adapter. O padrão Adapter permite que classes com interfaces incompatíveis trabalhem juntas através da conversão da interface de uma classe para a interface esperada por outra. Isso é feito implementando uma nova classe adaptadora que funciona como intermediária entre as classes existentes.
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
Este documento introduz os principais conceitos da orientação a objetos no Delphi, incluindo classes, objetos, herança, encapsulamento, polimorfismo e associação. A primeira parte descreve como começar a programar orientado a objetos no Delphi usando classes e objetos.
1. O documento apresenta um capítulo sobre a introdução à linguagem Java, cobrindo seu histórico, características, tipos de dados e estruturas de controle.
2. É descrito o histórico da criação da linguagem Java pela Sun Microsystems visando computação interativa em dispositivos móveis.
3. As principais características da linguagem Java são detalhadas, incluindo ser simples, orientada a objetos, multithread, interpretada, portátil, robusta e segura.
Professor
Student <registers for> Schedule
Student
Schedule
Métodos Orientados a Objetos - UML - Diagramas de Classes
JCFJ
4.24
SEL3113–EngenhariadeSoftware
Multiplicidade: indica a quantidade mínima e máxima de instâncias de
uma classe que podem participar de uma associação.
Sintaxe:
[min..max]
Exemplos:
0..1 (opcional)
1 (exatamente 1)
0..* (zero ou mais)
1
O documento discute padrões de arquitetura de software, incluindo camadas e MVC. Apresenta as classes Boundary, Control e Entity do padrão MVC e como elas se relacionam. Também mostra como representar o padrão MVC em diagramas UML de classe e sequência.
UML, Linguagem de Modelagem Unificada, é um padrão para modelagem visual de software.
Neste tutorial abordamos como utilizar a UML para fazer especificação de software através de conjunto de modelos e diagramas.
A modelagem visual facilita o entendimento e a comunicação do 'o quê' precisa ser feito e 'como' deverá ser feito o software;
1) O documento descreve os principais conceitos de modelagem de classes no UML, incluindo propriedades, comportamentos, relacionamentos, associações e generalização.
2) É explicado como diagramas de classe podem ser usados para modelar uma visão estática de um sistema, identificando entidades, arquitetura e modelo de dados.
3) São detalhados os tipos de relacionamentos como agregação, composição, dependência e como mapear a multiplicidade.
Questionário sobre uml revisão da tentativaAluisioSantos4
Este documento é um resumo de uma tentativa de questionário sobre UML. O estudante respondeu corretamente a todas as 5 perguntas sobre os tópicos história da UML, seus principais autores e especificação da versão 2.0. O tempo empregado foi de 34 minutos.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
[1] A autora apresenta um livro com 51 exercícios resolvidos de modelagem em UML, incluindo questões de concursos públicos. [2] O livro é dividido em capítulos tratando de temas como identificação de classes, atributos, relacionamentos e casos de uso a partir de exemplos reais. [3] A autora espera que o material atenda a professores, alunos e profissionais da área para ajudar no aprendizado prático de modelagem em UML.
Visibilidade e Diagrama de Classe de Projeto na UMLufpb
O documento descreve como criar diagramas de classes de projeto (DCPs) utilizando a UML. Explica os tipos de visibilidade entre objetos e como representá-los na UML. Apresenta um estudo de caso sobre a criação de um DCP para um sistema PDV, ilustrando os passos de identificar classes, atributos, métodos, associações e detalhes.
Este documento apresenta os conceitos fundamentais da metodologia de desenvolvimento orientada a objetos, incluindo: 1) a definição de metodologia e orientação a objetos; 2) os conceitos de classe, objeto, herança e encapsulamento; 3) as diferenças entre metodologias estruturadas e orientadas a objetos.
O documento apresenta um resumo sobre diagrama de casos de uso no contexto de modelagem de sistemas com UML. Aborda conceitos como atores, casos de uso, associações entre casos de uso (generalização, inclusão e extensão) e a utilização de diagramas de casos de uso e suas documentações para modelar funcionalidades de um sistema do ponto de vista do usuário.
Apresentação sobre UML com foco nos Diagramas de Caso de Uso e Diagrama de Classes; apresentada na SESTINFO2009 (Semana de Estudos em Tecnologia da Informação) realizada na Universidade Metodista de São Paulo.
1) O documento descreve elementos da linguagem de modelagem UML, incluindo diagramas, notações e conceitos como classes, objetos, atributos e operações.
2) São apresentados os principais diagramas da UML como diagrama de classe, caso de uso, interação e implementação.
3) O documento explica conceitos-chave da UML como classes, objetos, atributos, operações, visibilidade, generalização e agregação.
O documento discute o padrão de projeto Factory Method, onde uma classe delega a responsabilidade de instanciação de objetos às subclasses. O padrão é ilustrado em um exemplo de sistema bancário que envia mensagens a clientes por diferentes meios, como SMS, e-mail ou JMS. Uma interface Emissor padroniza as classes responsáveis pelo envio e um teste direto mostra o uso dos diferentes emissores.
Interfaces representam a parte pública de uma classe ou componente de software, especificando funcionalidades esperadas e comportamento padrão. Classes implementam interfaces para fornecer essas funcionalidades, enquanto interfaces não podem ser instanciadas. Interfaces permitem herança múltipla, ao passo que classes só podem herdar de uma superclasse.
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
Tópicos abordados:
- Motivos que contribuem para a falta de testes
- Quais os impactos da falta de testes?
- Visão geral dos diferentes tipos de testes na área de software
- Testes unitários e a plataforma .NET
- TDD: conceitos gerais
- Implementação de um exemplo prático
- Data-Driven Unit Testing
- Testes unitários e o Visual Studio 2015
O documento introduz os padrões de projetos GoF e Core J2EE, definindo o que são padrões de projeto e como surgem, e descrevendo alguns padrões específicos como Abstract Factory, Singleton, Template Method, Front Controller, Business Delegate e Domain Store. A conclusão questiona se alguns padrões ainda se aplicam com novas tecnologias.
Questionário sobre padrões revisão da tentativaAluisioSantos4
Este documento é um resumo de uma tentativa de questionário sobre padrões de projeto. O questionário continha quatro perguntas sobre princípios de projeto, arquitetura MVC, propriedades arquiteturais que impactam um sistema e padrões Java EE. O estudante obteve nota máxima no questionário demonstrando compreensão dos conceitos cobrados.
Importância do Teste Unitário na Qualidade do SoftwareEdison Moreira
Trabalho Final da Graduação em Ciência de Computação na Unicarioca em 2006. Foi desenvolvido o Sistema Colaborativo de Tradução para demonstrar os principais conceitos de teste unitário, integração dos processos de desenvolvimento e testes.
O documento discute padrões estruturais em Java, especificamente o padrão Adapter. O padrão Adapter permite que classes com interfaces incompatíveis trabalhem juntas através da conversão da interface de uma classe para a interface esperada por outra. Isso é feito implementando uma nova classe adaptadora que funciona como intermediária entre as classes existentes.
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
Este documento introduz os principais conceitos da orientação a objetos no Delphi, incluindo classes, objetos, herança, encapsulamento, polimorfismo e associação. A primeira parte descreve como começar a programar orientado a objetos no Delphi usando classes e objetos.
1. O documento apresenta um capítulo sobre a introdução à linguagem Java, cobrindo seu histórico, características, tipos de dados e estruturas de controle.
2. É descrito o histórico da criação da linguagem Java pela Sun Microsystems visando computação interativa em dispositivos móveis.
3. As principais características da linguagem Java são detalhadas, incluindo ser simples, orientada a objetos, multithread, interpretada, portátil, robusta e segura.
Professor
Student <registers for> Schedule
Student
Schedule
Métodos Orientados a Objetos - UML - Diagramas de Classes
JCFJ
4.24
SEL3113–EngenhariadeSoftware
Multiplicidade: indica a quantidade mínima e máxima de instâncias de
uma classe que podem participar de uma associação.
Sintaxe:
[min..max]
Exemplos:
0..1 (opcional)
1 (exatamente 1)
0..* (zero ou mais)
1
O documento discute padrões de arquitetura de software, incluindo camadas e MVC. Apresenta as classes Boundary, Control e Entity do padrão MVC e como elas se relacionam. Também mostra como representar o padrão MVC em diagramas UML de classe e sequência.
UML, Linguagem de Modelagem Unificada, é um padrão para modelagem visual de software.
Neste tutorial abordamos como utilizar a UML para fazer especificação de software através de conjunto de modelos e diagramas.
A modelagem visual facilita o entendimento e a comunicação do 'o quê' precisa ser feito e 'como' deverá ser feito o software;
1) O documento descreve os principais conceitos de modelagem de classes no UML, incluindo propriedades, comportamentos, relacionamentos, associações e generalização.
2) É explicado como diagramas de classe podem ser usados para modelar uma visão estática de um sistema, identificando entidades, arquitetura e modelo de dados.
3) São detalhados os tipos de relacionamentos como agregação, composição, dependência e como mapear a multiplicidade.
Questionário sobre uml revisão da tentativaAluisioSantos4
Este documento é um resumo de uma tentativa de questionário sobre UML. O estudante respondeu corretamente a todas as 5 perguntas sobre os tópicos história da UML, seus principais autores e especificação da versão 2.0. O tempo empregado foi de 34 minutos.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
[1] A autora apresenta um livro com 51 exercícios resolvidos de modelagem em UML, incluindo questões de concursos públicos. [2] O livro é dividido em capítulos tratando de temas como identificação de classes, atributos, relacionamentos e casos de uso a partir de exemplos reais. [3] A autora espera que o material atenda a professores, alunos e profissionais da área para ajudar no aprendizado prático de modelagem em UML.
Visibilidade e Diagrama de Classe de Projeto na UMLufpb
O documento descreve como criar diagramas de classes de projeto (DCPs) utilizando a UML. Explica os tipos de visibilidade entre objetos e como representá-los na UML. Apresenta um estudo de caso sobre a criação de um DCP para um sistema PDV, ilustrando os passos de identificar classes, atributos, métodos, associações e detalhes.
Este documento apresenta os conceitos fundamentais da metodologia de desenvolvimento orientada a objetos, incluindo: 1) a definição de metodologia e orientação a objetos; 2) os conceitos de classe, objeto, herança e encapsulamento; 3) as diferenças entre metodologias estruturadas e orientadas a objetos.
O documento apresenta um resumo sobre diagrama de casos de uso no contexto de modelagem de sistemas com UML. Aborda conceitos como atores, casos de uso, associações entre casos de uso (generalização, inclusão e extensão) e a utilização de diagramas de casos de uso e suas documentações para modelar funcionalidades de um sistema do ponto de vista do usuário.
Apresentação sobre UML com foco nos Diagramas de Caso de Uso e Diagrama de Classes; apresentada na SESTINFO2009 (Semana de Estudos em Tecnologia da Informação) realizada na Universidade Metodista de São Paulo.
1) O documento descreve elementos da linguagem de modelagem UML, incluindo diagramas, notações e conceitos como classes, objetos, atributos e operações.
2) São apresentados os principais diagramas da UML como diagrama de classe, caso de uso, interação e implementação.
3) O documento explica conceitos-chave da UML como classes, objetos, atributos, operações, visibilidade, generalização e agregação.
O documento discute o padrão de projeto Factory Method, onde uma classe delega a responsabilidade de instanciação de objetos às subclasses. O padrão é ilustrado em um exemplo de sistema bancário que envia mensagens a clientes por diferentes meios, como SMS, e-mail ou JMS. Uma interface Emissor padroniza as classes responsáveis pelo envio e um teste direto mostra o uso dos diferentes emissores.
Interfaces representam a parte pública de uma classe ou componente de software, especificando funcionalidades esperadas e comportamento padrão. Classes implementam interfaces para fornecer essas funcionalidades, enquanto interfaces não podem ser instanciadas. Interfaces permitem herança múltipla, ao passo que classes só podem herdar de uma superclasse.
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
Tópicos abordados:
- Motivos que contribuem para a falta de testes
- Quais os impactos da falta de testes?
- Visão geral dos diferentes tipos de testes na área de software
- Testes unitários e a plataforma .NET
- TDD: conceitos gerais
- Implementação de um exemplo prático
- Data-Driven Unit Testing
- Testes unitários e o Visual Studio 2015
O documento introduz os padrões de projetos GoF e Core J2EE, definindo o que são padrões de projeto e como surgem, e descrevendo alguns padrões específicos como Abstract Factory, Singleton, Template Method, Front Controller, Business Delegate e Domain Store. A conclusão questiona se alguns padrões ainda se aplicam com novas tecnologias.
1) O documento discute a técnica Specification by Example (Especificação por Exemplos), que propõe especificar o comportamento desejado de um sistema usando exemplos reais.
2) Os exemplos servem como requisitos, testes e documentação e são automatizados sem modificações, tornando-se "especificações executáveis".
3) A documentação gerada dessa forma é chamada de "documentação viva", que acompanha a evolução do sistema de forma barata e consistente.
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
Para acessar um método protected de uma superclasse usando reflection, precisamos desabilitar o mecanismo de verificação de visibilidade (acess check) antes de invocar o método. Isso pode ser feito chamando o método setAccessible(true) no objeto Method antes da invocação.
O documento discute padrões de projeto para software orientado a objetos. Ele explica que padrões de projeto podem ajudar desenvolvedores a criar software mais flexível e reutilizável, definindo soluções comuns para problemas recorrentes de projeto. O documento também descreve alguns padrões específicos como Singleton, Facade e Abstract Factory.
Apresentação sobre BDD (Behavior-Driven Development) realizada em 20/05/2015.
Tópicos abordados:
- Cenários comuns dentro do desenvolvimento de software
- Test-Driven Development (TDD): uma visão geral
- Testes Unitários no Visual Studio: um exemplo simples
- Behavior-Driven Development (BDD)
- BDD na plataforma .NET
Apresentação sobre BDD (Behavior-Driven Development) realizada em 06/09/2015.
Tópicos abordados:
- Cenários comuns dentro do desenvolvimento de software
- Test-Driven Development (TDD): uma visão geral
- Testes Unitários no Visual Studio: um exemplo simples
- Behavior-Driven Development (BDD)
- BDD na plataforma .NET
- Exemplo prático no Visual Studio 2015
Apresentação do SCAD, Sistema Académico do DIEEalexculpado
O documento descreve um sistema de controle acadêmico proposto para o DIEE, incluindo uma descrição do sistema existente, ferramentas e arquitetura do sistema proposto, benefícios e conclusões.
1) O documento discute a integração entre as tecnologias UML, CORBA e Java para o desenvolvimento de sistemas.
2) A UML pode ser usada para modelar a análise, projeto e implementação, integrando-se com CORBA e Java.
3) Um método é proposto utilizando UML para modelagem, CORBA para a arquitetura distribuída e Java para a implementação.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
O documento fornece informações sobre como desenvolver módulos para o sistema SNEP, incluindo a estrutura padronizada MVC, como definir menus e permissões, e como estender classes existentes para adicionar novas funcionalidades de forma independente ao sistema principal.
Este documento apresenta o framework CakePHP para desenvolvimento rápido de aplicações web, usando como estudo de caso um sistema gerenciador de produtos e serviços. Descreve as principais características do CakePHP como MVC, ORM e geração automática de CRUD e como estas funcionalidades foram aplicadas no caso de uso.
Este documento discute conceitos básicos de programação orientada a objetos com C++. Ele aborda tópicos como projeto de programas OO, a linguagem C++ e aplicações, introduzindo conceitos como classes, objetos, encapsulamento, herança e polimorfismo.
Este documento descreve o padrão de projeto Singleton e fornece detalhes sobre sua definição, motivação, características de uso e implementação. O padrão Singleton garante que uma classe só tenha uma única instância e fornece um ponto global de acesso a ela.
O documento discute arquitetura em camadas com Java e Reflection. Ele apresenta os conceitos de arquitetura em camadas, dividindo as aplicações em camadas de apresentação, lógica de negócios, dados e persistência. Também explica o que é Reflection no Java e demonstra exemplos práticos de seu uso para recuperar metadados de objetos.
O documento discute modelos de arquitetura de software, padrões de projeto e o framework Struts. Aborda os modelos de 2, 3 e 4 camadas, o padrão Model-View-Controller (MVC), padrões como Front Controller e patterns como o DAO. Explica como frameworks como Struts implementam esses padrões e discute casos de uso, modelagem, fluxos e o futuro das certificações em CMM.
O documento descreve a Linguagem de Modelagem Unificada (UML), incluindo uma introdução à orientação a objetos, os principais elementos da UML como classes, objetos, atributos, métodos, relacionamentos e herança, e exemplos de como modelar sistemas usando a UML.
O documento discute a arquitetura MVC e sua implementação no ASP.NET MVC. Apresenta os principais componentes do ASP.NET MVC - Models, Views e Controllers - e discute suas vantagens e desvantagens em relação ao modelo WebForms do ASP.NET. Por fim, exemplifica o desenvolvimento de uma aplicação que utiliza ASP.NET MVC com NHibernate e a biblioteca JavaScript EXT JS.
O documento descreve a história e conceitos de padrões de projeto de software. Apresenta os 23 padrões de projeto documentados no livro "Design Patterns" de 1995, divididos nas categorias criacionais, comportamentais e estruturais. Explica brevemente alguns padrões como Singleton, Factory Method, Observer, Composite e MVC.
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
O documento discute padrões de projeto de software, abordando especificamente os padrões Adapter, Proxy e Composite. O Adapter permite que classes com interfaces incompatíveis trabalhem juntas, o Proxy controla o acesso a um objeto e o Composite trata objetos compostos e individuais de forma uniforme.
Semelhante a Artigo Padrões J2EE: Um exemplo de uso (20)
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Artigo Padrões J2EE: Um exemplo de uso
1. Padrões J2EE: Um exemplo de uso
Erivan de Sena Ramos1, Pedro Henrique Pereira1
1
Universidade Estadual do Ceará (UECE)
Fortaleza – CE – Brasil
erivansr@gmail.com, pedrohenripereira@gmail.com
Abstract. This paper presents an example of using J2EE patterns in a software
project, identifying the improvements in the development and implementation
of software using the of good J2EE Blueprints, featuring a modeling system
that uses this platform.
Resumo. Este trabalho apresenta um exemplo de uso dos Padrões J2EE em
um projeto de software, identificando as melhorias no desenvolvimento e na
implementação de um software com a utilização das boas práticas J2EE
Blueprints, destacando a modelagem de um sistema que utiliza essa
plataforma.
1. Introdução
A Sun Microsystems (2011) apresenta o Java 2 Enterprise Edition (J2EE), como
uma plataforma que define um padrão para o desenvolvimento de aplicações
empresariais distribuídas e multicamadas. O J2EE estabeleceu um novo modelo para o
desenvolvimento de aplicações distribuídas. O modelo é baseado em componentes bem
definidos. Este modelo é destinado tanto para padronizar, quanto para simplificar os
diversos tipos de aplicações distribuídas existentes atualmente.
Marinescu (2002) indica que, sem um conjunto de boas práticas de modelagem,
o desenvolvimento utilizando a arquitetura multicamadas J2EE pode se tornar muito
difícil. Alur et al. (2002) complementa que uma boa maneira de adquirir experiência em
projeto é pela utilização de padrões que se constituem em um moderno e importante
mecanismo para a elaboração de projetos orientados a objetos.
Este trabalho apresenta a arquitetura do sistema de uma Auto-Escola, utilizando
uma arquitetura multicamadas baseado no J2EE, descrevendo e justificando a
aplicabilidade de quatro padrões, englobando as três camadas de uma aplicação web, de
acordo com as boas práticas J2EE Blueprints (apresentação, negócio e integração). Cada
padrão segue a estratégia aplicada, incluindo diagrama de classes e trecho do código
fonte do exemplo.
2. Plataforma Java 2 Enterprise Edition (J2EE)
Júnior (2003) leciona que a Plataforma J2EE é um conjunto de especificações
para acesso a diversos serviços de infraestrutura, tais como segurança, distribuição de
processamento, controle de transações, comunicação entre camadas e outros. Estas
especificações são implementadas por diversos fornecedores, que competem entre si
para oferecer serviços de melhor qualidade e preços mais competitivos.
2. Júnior (2003) indica ainda que dessa forma, uma das grandes vantagens da
Plataforma J2EE é que as aplicações podem acessar os serviços oferecidos de forma
independente de fornecedor. As organizações que adotam esta plataforma possuem
considerável liberdade de escolha, podendo determinar o fornecedor mais adequado para
a sua situação. Além disto, os desenvolvedores podem concentrar esforços na lógica
específica do negócio, pois as funções de infraestrutura são disponibilizadas pela
Plataforma J2EE, potencialmente gerando ganhos de produtividade consideráveis. A
Figura 1 ilustra o conceito.
Figura 1. Plataforma J2EE (JÚNIOR, 2003)
As aplicações acessam serviços como controle de transações ou acesso remoto
através das especificações contidas na Plataforma J2EE, implementadas por algum
fornecedor. A implementação da plataforma, no entanto, pode ser trocada sem
significativas alterações do código das aplicações, já que todo o acesso às
funcionalidades da plataforma é feito através de especificações padronizadas.
2. J2EE Blueprints
O J2EE é um conjunto de procedimentos recomendados para desenvolver
aplicações J2EE, e divide as aplicações em camadas. Os padrões J2EE representam
soluções consideradas melhores práticas para implementar vários componentes
essenciais em cada uma das camadas identificadas pelo J2EE Blueprints. Os padrões são
dispostos em três camadas: Apresentação, Negócios e Integração.
Schneide (1999) indica que em termos de orientação a objetos, a utilização de
padrões é importante porque identificam classes, instâncias, seus papéis, colaborações e
distribuição de responsabilidades. São, portanto, descrições de classes e objetos que se
comunicam, implementados a fim de solucionar um problema comum em um contexto
específico.
Alur et al. (2002) lista as vantagens de se utilizar padrões em um projeto:
a) foram testados: refletem a experiência e conhecimento dos desenvolvedores
que utilizaram estes padrões com sucesso em seu trabalho;
b) são reutilizáveis: fornecem uma solução pronta que pode ser adaptada para
diferentes problemas quando necessário;
c) são expressivos: formam um vocabulário comum para expressar grandes
soluções sucintamente;
3. d) facilitam o aprendizado: reduzem o tempo de aprendizado de uma
determinada biblioteca de classes. Isto é fundamental para o aprendizado dos
desenvolvedores novatos;
e) diminuem retrabalho: quanto mais cedo são usados, menor será o retrabalho
em etapas mais avançadas do projeto.
3. Arquitetura do Sistema
Para exemplificar o uso dos Padrões J2EE, este trabalho apresenta arquitetura de
um sistema de Auto-Escola, destacando a aplicabilidade de quatro padrões: Intercepting
Filter, Business Delegate, Session Facade, e Data Access Objects. Cada um destes
padrões engloba uma das três camadas de uma aplicação web (Apresentação, Negócio e
Integração), de acordo com as boas práticas J2EE Blueprints.
O sistema em questão tem por finalidade controlar e automatizar os processos de
sua auto-escola desde cadastros e matrículas a acompanhamentos de aulas práticas e
teóricas. Cadastrar os alunos nas aulas práticas e realizar reservas das aulas práticas. O
sistema emite relatórios de todas as movimentações de aulas práticas e teóricas por
alunos, acompanhamentos dos resultados exames junto ao Departamento de Trânsito.
Também é possível obter relatórios de movimentações financeiras, além de poder
acompanhar custos por veículo ou por aluno, entre outros relatórios e estatísticas
emitidos pelo sistema.
Para este trabalho são apresentadas somente algumas funcionalidades do sistema
que utilizam os padrões citados. Para cada padrão, segue a sua estratégia aplicada
incluindo diagrama de classes e trecho do código fonte. As classes definidas para o
sistema, e apresentadas neste trabalho são separadas em pacotes, sendo eles: web;
cliente, ejb e dao.
Cada um destes pacotes pertence a uma camada do sistema e contém os padrões
de projeto para estas camadas.
5. 3.1.1 Pacote Web
Este pacote contém a implementação de um Intercepting Filter, que verifica a
cada solicitação se o usuário efetuou a autenticação;
a) AcompanhamentoProcesso: contém os processos de pedido de habilitação. A
partir dela serão solicitadas as ações possíveis dentro de um processo de
habilitação, como agendamentos de aula, pagamentos de taxas e
acompanhamento do processo;
b) AutenticacaoFilter: é o Intercepting Filter para verificar, em todos os acessos, se
o usuário efetuou a autenticação na aplicação. No caso do exemplo, faz-se uso
da estratégia de implementação StandardEncodeFilter, deixando o controle do
filtro a cargo da especificação do Servlet, Servlet 2.3 Specification.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain) throws IOException, ServletException {
boolean permitido = verificaAcesso((HttpServletRequest) request);
if (!permitido) {
String logon = "logon.jsp?next=" + getNextURL((HttpServletRequest)
request);
((HttpServletResponse) response).sendRedirect(logon);
}
chain.doFilter(request, response);
}
O método verificaAcesso verifica se o usuário que está “logado” tem permissão
para acessar o recurso solicitado. Caso sim, o método retorna true. O método
getNextURL retorna a URL que estava sendo requisitada, para que, caso a
autenticação seja positiva, a aplicação seja redirecionada para o recurso
solicitado.
6. 3.1.2 Pacote Cliente
Este pacote contem os Business Delegate, que são classes que representam os
objetos de negócio distribuídos. Estas classes ficam do lado do cliente e simplificam o
acesso aos EJB;
a) PagamentoAluno: fornece acesso ao EJB PagamentoAlunoBean;
b) AgendamentoAula: é o business delegate do EJB AulaSessionBean. Os clientes
acessam esta classe que por sua vez delega todas as chamadas de método para o
EJB;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
class AgendamentoAula {
private static AgendamentoAula instance = new AgendamentoAula();
private AgendamentoAula() {}
public static AgendamentoAula getInstance() {
return instance;
}
public List<Aula> getAllAulas() throws Exception {
List<Aula> aulas = new ArrayList<Aula>();
try {
AulaSessionBean ejb = EJBLocator.getInstance().getAulaSession();
aulas = ejb.getAllAulas();
} catch (Exception e) {
throw new Exception(e.getMessage(), e);
}
return aulas;
}
public Aluno getAluno(Integer id) throws Exception {
Aluno aluno = null;
try {
AlunoSessionBean ejb = EJBLocator.getInstance().getAlunoSession();
aluno = ejb.getAluno(id);
} catch (Exception e) {
throw new Exception(e.getMessage(), e);
}
return aluno;
}
}
A classe AgendamentoAula representa um Business Delegate, sei o qual a visão
acessaria diretamente a camada de negócio (neste caso, um EJB). Ela representa a forma
como o cliente fará a interface com o EJB.
No exemplo, de acordo com a estratégia Delegate Proxy Strategy, a classe
AcompanhamentoAula faz o acesso à camada de negócio através de um Business
Delegate, sem conhecer os detalhes da implementação da lógica. Por exemplo, não se
sabe como foi feita a obtenção do aluno, se através de um DAO, um EJB ou outras
classes de negócio.
7. 3.1.3 Pacote EJB
Este pacote contém os session beans que formam a camada de Session Facade
do sistema.
a) AlunoSessionBean: é a classe de implementação do EJB que provê os serviços
para localizar o aluno para o agendamento de aula prática. Este EJB contém os
métodos para obter os dados do aluno solicitado.
b) PagamentoAlunoBean: é a classe de implementação do EJB que provê o serviço
para consolidar o pagamento de aula feita pelo aluno, levando em consideração
as possíveis regras;
3.1.4 Pacote DAO
Este pacote contém os Data Access Objects. Estes objetos abstraem o acesso às
tabelas do banco de dados. No contexto deste exemplo, existiriam as classes AlunoDAO,
ProcessoDAO, AulaDAO e InstrutorDAO.
public Aluno buscarAlunoPorId(int id) throws HibernateException {
String hql = "from Aluno where id = " +
montarParametroHQL(PARAMETRO.NOME);
Collection<ParametroHQL> parametros = new ArrayList<ParametroHQL>();
parametros.add(new ParametroHQL(PARAMETRO.NOME, id));
return (Aluno)carregarUnico(hql, parametros);
}
Exemplo de método da classe AlunoDAO (Estratégia de implementação Custom DAO Strategy)
Esta classe disponibiliza diversos métodos para facilitar a persistência e consulta de
objetos no banco de dados. Estes métodos encapsulam os objetos nativos da camada de
persistência, de modo que o desenvolvedor tenha seu desenvolvimento acelerado.
4. Conclusão
A plataforma de desenvolvimento J2EE apresenta uma série de vantagens para o
desenvolvimento de aplicações que necessitam de escalabilidade, disponibilidade e
portabilidade.
A utilização dos Padrões J2EE provoca uma grande reutilização no
desenvolvimento. No caso de um sistema de porte médio, conforme verificado na
arquitetura apresentada neste trabalho, estas características ficam ainda mais realçadas,
uma vez que na própria especificação das classes é realizada a sua relação com os
padrões de projeto.
Enfim, o uso dos Padrões J2EE pode ser um diferencial de produtividade para o
desenvolvimento de soluções empresariais.
8. 5. Referências
Alur, Deepak; Crupi, John; Malks, Dan. Core J2EE Patterns: as melhores práticas
eestratégias de design. Rio de Janeiro: Campus, 2002.
Bill Dudney, Stephen Asbury, Joseph K. Krozak e Kevin Wittkopf. J2EE AntiPatterns
(2003). Ed. Wiley Publishing.
Júnior, Valdo Noronha Peres Junior. Estratégias para a utilização da tecnologia J2EE
com a arquitetura de cinco camadas. 124f. Dissertação (Mestrado em Ciências da
Computação) – Universidade Federal de Minas Gerais, Belo Horizonte, 2003.
Marinescu, Floyd. EJB Design Patterns: Advanced Patterns, Processes, and Idioms.
New York: John Wiley & Sons, 2002.
Schneide, Ricardo Luiz. Design Patterns. Rio de Janeiro, maio 1999. Disponível em:
<http://www.dcc.ufrj.br/~schneide/PSI_981/gp_6/design_patterns.html>. Acesso em:
6 ago 2011.
Sun Microsystems. Designing Enterprise Applications With The J2EE Platform
Enterprise Edition. Disponível em: <http://java.sun.com/blueprints/guidelines/
designing_enterprise_applications_2e/index.html>. Acesso em: 6 ago. 2011.