POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Padrões de Projeto e POA
|
|
- Vítor Gabriel Estrela Igrejas
- 8 Há anos
- Visualizações:
Transcrição
1 Lincoln S. Rocha POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Padrões de Projeto e POA Background Artigo do Kiczales 2 3 1
2 Objetivo da Programação? Introdução à OO Introdução à POO Limitações da POO Requisitos Transversais: Exemplos Rastreamento Usando POO Problemas com a Abordagem A Causa dos Problemas da POO 4 Mapeamento record Pessoa nome : string; idade : integer; nascimento : string; end procedure aniversario begin (...) end Nome Idade Nascimento Alan Turing 96 23/06/ A Orientação a Objetos surgiu no início dos anos 80 Grande evolução desde os Métodos Estruturados É uma abordagem para modelagem de sistemas e um paradigma maduro que continua sendo amplamente utilizado 6 2
3 O paradigma da Orientação a Objetos compreende várias disciplinas Análise Orientada a Objetos Projeto Orientado a Objetos Programação Orientada a Objetos (...) 7 O princípio da OO é mapear um modelo da realidade, visto como interação entre objetos, num modelo computacional de dados e programas 8 Foco nos dados(objetos) do sistema, não nas funções Estruturação do programa é baseada nos dados, não nas funções As funções mudam mais do que os dados! 9 3
4 Princípios Fundamentais Objetos Classes Abstração Encapsulamento Herança Polimorfismo Modularidade Hierarquia 10 Objetos Entidades que formalizam o modo pelo qual compreendemos algo no domínio de um problema Em um objeto estão encapsulados os dados (atributos) e os procedimentos (métodos) exclusivos dele Os procedimentos são aplicáveis aos dados residentes no objeto 11 Objetos (cont.) Um objeto possui estado, comportamento e identidade Estado: valores dos atributos Comportamento: definido pelos métodos (como o objeto age e reage) Identidade: aquilo que diferencia um objeto de outro 12 4
5 Classes Descrevem um conjunto de objetos semelhantes São templates utilizados para criar objetos Classes de objetos podem herdar atributos e métodos de outras classes de objetos 13 Objetos versus Classes Objetoé uma entidade concreta e a Classeé uma abstração Do ponto de vista de programação Definir uma classe significa formalizar um tipo de dados e todas as operações associadas a este tipo Declarar objetos significa criar variáveis do tipo definido 14 A POO falha em modularizarrequisitos periféricos que atravessam múltiplos módulos (ex., segurança, rastreamento e distribuição) Esses requisitos ou interesses são chamados de transversais (crosscutting concerns) 15 5
6 A implementação de requisitos transversais se dá através da adição de código em diversos objetos ao longo do sistema Gera espalhamento Em geral o código relacionado ao requisito transversal não está diretamente ligado à funcionalidade definida para estes objetos Gera entrelaçamento 16 Segurança Persistência Auditoria e depuração Tratamento de exceções Otimização e desempenho Concorrência e sincronização Regras e restrições do negócio Aplicação POA 17 public class Person { private String name = ""; public void setname(string name) { Tracing.entry("setName("+name+")"); this.name = name; Tracing.exit("setName()");... public class Tracing { public static void entry(string text) { System.out.println("entry: " + text); public static void exit(string text) { System.out.println("exit: " + text); 18 6
7 Redundância Fraca coesão Forte acoplamento Dificuldade de compreensão Dificuldade de manutenção Dificuldade de reutilização 19 A decomposição primária napooéfeitanoplano O requisito transversal fica espalhado pelas classes porque é tratado na dimensão errada! Tracing O requisito transversal é ortogonal à decomposição primária!
8 Introdução Princípios Básicos Etapas do Desenvolvimento Ingredientes Essenciais Benefício Esperado 22 A POA foi concebida por Gregor Kiczales (1997) quando era o cientista chefe (software design) da Xerox PARC ( ) 23 O principal objetivo da POA é facilitar a modularizaçãode interesses transversais (crosscutting concerns) A POA não veio substituir POO, mas sim complementá-la! 24 8
9 A POA, assim como a POO, é baseada no principio da separação de interesses (separationofconcerns) o qual preconiza a identificação e o tratamento individualizado dos diferentes interesses envolvidos no desenvolvimento de um software EdsgerW. Dijkstraem"On the role of scientific thought 25 A separação de interesses é um princípio que deve guiar todas as etapas de um processo de desenvolvimento de software A modularização de interesses transversais deve ser feita através de uma nova unidade de encapsulamento, denominada aspecto 26 Visão geral do processo de desenvolvimento na POA 27 9
10 Classes: encapsulam requisitos funcionais Aspectos: encapsulam requisitos transversais Weaver: entrelaça classes e aspectos num programa Classes Programa Weaver Aspectos 28 Boa modularidade, mesmo quando temos requisitos transversais Facilidade de desenvolvimento Código fonte menos espalho e entrelaçado, mais compacto e mais natural 29 Facilidade de manutenção Mais fácil para entender, depurar e modificar Facilidade de reutilização Hierarquia de aspectos, biblioteca de aspectos e aspectos plug and play 30 10
11 31 O que é AspectJ? Aspectos versus Classes Joinpoints e Pointcuts Advices e Introductions Reflexão e Reusabilidade 32 É uma extensão de Java, orientada a aspectos É um weaverque implementa POA em Java É um pré-processador Fácil de aprender e utilizar Disponível gratuitamente
12 Aspectos são similares a classes Têm um tipo Podem ser estendidos Podem ser abstratos ou concretos Podem conter atributos, métodos e tipos como membros 34 Aspectos são diferentes de classes Não têm construtor, nem destrutor Não podem ser criados com o operador new Podem conter pointcutse advicescomo membros Podem acessar membros de outros tipos 35 São pontos, bem definidos, na execução de um programa, onde aspectos podem interceptar classes Chamada de método Execução de método Objeto Atributo Método set get Acesso a atributo 36 12
13 São identificados por designadores call(signature) execution(signature) initialization(signature) preinitialization(constructorpat) staticinitialization(typepat) handler(typepattern) get(signature) set(signature) 37 args(typepattern,...) within(typepattern) cflow(pointcut) cflowbelow(pointcut) if(expression) adviceexecution() this(typepattern) target(typepattern) 38 Designadores podem ser genéricos call(* set*()) call(public Person.*(..)) call(void foo(..)) call(* *(..)) call(*.new(int, int)) 39 13
14 Predicados que definem conjuntos de joinpoints pointcut traced() : call(public * set*(..)); 40 Podem ser definidos como expressões booleanas, empregando-se!, && e pointcut traced() : call(public * set*(..)) call(public * get*(..)); 41 Pointcuts também podem ter argumentos pointcut traced(person p) : target(p) && call(public * set*(..)) call(public * get*(..)); 42 14
15 São trechos de código associados a pointcuts, que injetam um novo comportamento em todos os joinpoints representados pelo pointcut Tipos before after around chamador After advice Before advice chamado 43 Formas básicas before(param) : pointcut(param) {... after(param) : pointcut(param) {... after(param) returning [formal] : pointcut(param) {... after(param) throwing [formal] : pointcut(param) {... type around(param) [throws typelist] : pointcut(param) { Designador pointcut get(int index) : args(index) && call(* get*(..)); Pointcut before(int index) : get(index) { System.out.println(index); Advice Código 45 15
16 É uma variável especial predefinida É similar à variável thisem Java Disponibiliza várias informações a respeito do joinpoint que disparou o advice Exemplos: thisjoinpoint.tostring() thisjoinpoint.getargs() 46 Um forma de introduzir novos membros a classes e interfaces já existentes private int Person.id = 0; public void Person.setId(int id){ this.id = id; public int Person.getId(){ return this.id; declare parents: Person extends Animal; 47 public abstract aspect Tracing { protected abstract pointcut trace(); // advice code public aspect MyTracing extends Tracing { // just define which calls to trace protected pointcut trace(): call(* set*(..)); 48 16
17 49 public class Person { private String name = ""; public void setname(string name) { this.name = name;... class Tracing { public static void entry(string text) { System.out.println("entry: " + text); public static void exit(string text) { System.out.println("exit: " + text); 50 aspect Tracing { pointcut trace () : call(public * Person.set*(..)); before() : trace() { Tracing.entry(thisJoinPoint.toString()); after() : trace() { Tracing.exit(thisJoinPoint.toString()); 51 17
18 public class Application { public static void main(string[] args) { Person person = new Person(); person.setname("lincoln Souza Rocha"); entry: call(void Person.setName(String)) exit: call(void Person.setName(String)) Padrões de Projeto -GoF Descrição do Experimento Resultados Análise dos Resultados 54 18
19 GoF(Gang Of Four) Design Patterns E. Gamma, R. Helm, R Johnson, J. Vlissides Catálogo com 23 padrões de projeto Documenta a essência de soluções comprovadas para problemas recorrentes Considerados como soluções úteis para certo tipo de problemas de projeto 55 Três maiores desafios na implementação de padrões de projeto Problema de desaparecimento no código Isso dificulta a distinção entre o padrão e o modelo de objeto envolvido Problema de documentação Por causa da natureza invasiva do código do padrão é difícil rastrear uma instância particular se muitos padrões são usados Problema de composição É difícil raciocinar sobre sistemas que envolvem múltiplos padrões nas mesmas classes 56 Desenvolver e comparar implementações dos padrões GoF em Java e AspectJ observando Estruturas transversais entre regras e classe participantes existentes Melhorias de modularização das estruturas transversais na implementação dos padrões 17 dos 23 padrões implementados em AspectJ foram melhorados em reusabilidade, composabilidade e (un)pluggability 57 19
20 Uma análise comparativa entre implementações em Java e AspectJdos padrões de projeto GoF As implementações Java correspondem aos exemplos de implementações em C++ do livro do GoF As implementações em AspectJforam selecionadas entre 57 implementações diferentes para investigar plenamente a concepção de projeto de cada padrão 58 O padrão Observer descreve como estabelecer estes relacionamentos -O Subjectpode ter algum número de Observersdependentes -Todos Observerssão notificados quando o Subjectsofre uma alteração no seu estado -Cada Observer irá consultar o Subjectpara sincronizar seu estado com o estado do Subject 59 Implementação em Java 1 -O código está espalhado pelas várias classes 2 - Todos os participantes têm que saber sua função no padrão Mudanças requerem alterações em todas as classes participantes -Adicionando ou removendo regra -Usando um mecanismo de notificação alternativo 60 20
21 Implementação em AspectJ Partes comuns a todas implementações 1 - Existenciade regras para Subject e Observer 2 -Manutenção do mapeamento de Sbjectspara Observer 3 - Lógica de atualização: Mudanças no Subject dispara atualização do Observer Partes específicas de cada implementação 1 - Dar função a cada classe 2 -Conjunto de mudanças que intereção o Subject 3 - Meios de atualizar cada Observer AspectoAbstrato SubaspectoConcreto 61 AspectoAbstrato Partes comuns a todas implementações 1 - Existenciade regras para Subject e Observer 2 -Manutenção do mapeamento de Sbjectspara Observer 3 - Lógica de atualização: Mudanças no Subject dispara atualização do Observer SubaspectoConcreto Partes específicas de cada implementação 1 - Dar função a cada classe 2 -Conjunto de mudanças que intereção o Subject 3 - Meios de atualizar cada Observer 63 21
22 Melhorias de implementação com AspectJ Localidade Todo o código relacionado com a implementação do padrão está nos aspectos abstrato e concreto Não existe acoplamento entre classe participantes existentes Reusabilidade O código núcleo do padrão (ObserverProtocol) é abstraído e passível de reuso Para cada instancia do padrão, define-se somente um aspecto concreto Transparência de composição Mesmo que uma classe seja participante em vários relacionamentos de padrões, os códigos da classe e do padrão não serão confundidos (Un)pluggability Os participantes não precisam estar cientes de seu papel É fácil alternar entre usar e não usar o padrão 64 Composite, command, mediator, chain of responsibility Papéis usados somente dentro dos aspectos Singleton, prototype, memento, iterator, flyweight Aspectos como fábricas de objetos Adapter, decorator, strategy, visitor, proxy Construtores de linguagem (AspectJjá da suporte direto) 65 Abstract factory, factory method, template method, builder, bridge Herança múltipla State, interpreter Parte do código espalhado pode ser modularizado Façade Não apresentou benefícios usando AspectJna implementação 66 22
23 A análise foi dividida em três partes Melhorias gerais observadas na reimplementação dos padrões Melhorias específicas associadas à padrões particulares Origem de estruturas transversais em padrões Foi observado melhorias relacionada a presenças de estruturas transversais em implementações AspectJ 67 Melhorias gerais Localidade 17 dos 23 padrões do GoF Todas as dependenciasentre padrões e participantes foram localizadas no código do padrão Reusabilidade 12 dos 17 padrões que tiveram a localidade melhorada Pela separação do código específico do padrão, o participante e o padrão podem ser reusados em outros contextos 68 Melhorias gerais (cont.) Transparencia de composição 14 dos 17 padrões que tiveram a localidade melhorada Classes ou objetos podem ter diferentes papéis em diferentes instancias do padrão sem confusão (Un)pluggability Reusabilidade e adaptabilidade dos padrões 69 23
24 Melhorias específicas Singleton Implementação do Singleton como propriedade através de herança ou simplesmente através de uma implementação do Factory Method Herança múltipla e Java AspectJprovê uma alternativa para implementação de padrões tendo herança múltipla com composição transparente 70 Melhorias específicas (cont.) Quebra de dependências cíclicas 71 Estruturas transversais de padrões de projeto A transversalidade em estruturas de padrões é causada pelos diferentes tipos de papéis e suas interações entre os participantes Papéis Definindo papéis -define os participantes completamente Papéis sobrepostos - atribuídos às classes Papéis transversais as classes participantes Operações conceituais de interesse de métodos transversais Papéis de múltiplos padrões transversais entre si 72 24
25 Estruturas transversais de padrões de projeto (cont.) 73 Hannemann, J., Kiczales, G.. Design Pattern Implementation in Java and AspectJ, Kendall, E. A. Aspect-OrientedProgramming in AspectJ, Kiczales, G. et all. Aspect-Oriented Programming, Kiczales, G. et all. An Overview of AspectJ, Voelter, M. Aspect-Oriented Programming in Java, TheAspectJProgramming Guide, Xerox Corporation, Lincoln S. Rocha 25
POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos. Objetivo da Programação? Introdução à OO Introdução à POO
POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Lincoln S. Rocha (lincoln@great.ufc.br) Objetivo da Programação? Introdução à OO Introdução à POO Limitações da POO Requisitos
Leia maisDesign 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 maisAspectJ. Silvio do Lago Pereira. Doutorando em Ciência da Computação
AspectJ Silvio do Lago Pereira Doutorando em Ciência da Computação slago@ime.usp.br Sumário Programação Orientada a Objetos (POO) Programação Orientada a Aspectos (POA) AspectJ Exemplos Novembro/2002 Silvio
Leia maisTestes 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 mais2 Desenvolvimento de Software Orientado a Aspectos
2 Desenvolvimento de Software Orientado a Aspectos Separação de concerns é um princípio bem estabelecido da engenharia de software que diz que, para se dominar a complexidade do desenvolvimento de software,
Leia maisPrototype, 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 mais1Introduçã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 maisPadrõ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 maisAná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 maisProgramação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos
Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton
Leia maisJ930. 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 maisPadrõ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 maisProgramaçã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 maisProf.ª 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 maisCurso - 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 maisAspect-Oriented Programming AOP. Comentários Sérgio Crespo
Aspect-Oriented Programming AOP Comentários Sérgio Crespo Separation of Concerns O princípio de Separation of Concerns já é utilizado por engenheiros de software para o gerenciar a complexidade de sistemas
Leia maisProgramaçã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 maisProgramaçã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 maisProgramação Orientada a Aspectos
Programação Orientada a Aspectos Uma Breve Introdução Universidade Estadual do Oeste do Paraná Centro de Ciências Exatas e Tecnológicas Colegiado de Informática Prof. Luiz Antonio Roteiro Introdução Evolução
Leia maisDesign 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 maisUniversidade 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 maisPadrõ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 maisPADRÕ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 maisEXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS
Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor
Leia maisPadrõ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 maisPadrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
Leia maisProfº. Enrique Pimentel Leite de Oliveira
Profº. Enrique Pimentel Leite de Oliveira O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam
Leia maisHeranç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 maisOrientação a Objetos com Java
Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;
Leia maisCurso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais
Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais
Leia maisProgramaçã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 maisPROGRAMAÇÃ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 maisUma 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 maisProf. Jhonatan Fernando
Prof. Jhonatan Fernando Métodos Programação OO Instâncias de variáveis (objetos) Mensagens Classes Herança Polimorfismo Encapsulamento Abstração Programação Estruturada Procedimentos e funções Variáveis
Leia maisSeparação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código
Análise e Projeto Orientados a Aspectos Alcides Pamplona alcides.pamplona@gmail.com Tópicos Separação de Interesses Programação Estruturada e Entrelaçamento de Código Espalhamento de Código 1 Separação
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar
Leia maisMó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 maisOrientação à Objetos. Aécio Costa
Aécio Costa O paradigma da orientação à objetos Paradigma? Um paradigma é uma forma de abordar um problema. No contexto da modelagem de um sistema de software, um paradigma tem a ver com a forma pela qual
Leia maisPadrões. Projeto (Design) de Software
Padrões Projeto de Softwares Categorias de Padrões Processo de Tradução de modelos de análise (isentos de tecnologia, lógicos) para modelos de projeto (development-ready, físicos) Qual a Tecnologia Alvo
Leia maisReuso 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 maisProgramação Orientada a Aspectos
Programação Orientada a Aspectos Bibliotecas Dinâmicas Motivação class MyClass { public MyClass() {......... public void method1 () public... void method1 () {...... public int method2() {... public...
Leia maisParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação Faculdade Nova Roma Cursos de Ciências da Computação (6 Período) Prof Adriano Avelar - Site: wwwadrianoavelarcom Email: edsonavelar@yahoocombr PROGRAMAÇÃO ORIENTADA
Leia maisFramework utilizando reflexão e aspectos para persistência de objetos em java
Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida
Leia maisLista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
Leia maisProgramação Orientada a Objetos em Java. Herança
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados
Leia maisInfluenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:
O Paradigma Orientado a Objetos Paradigma e Programação Orientada a Objetos Prof. João Carlos Pinheiro jcpinheiro@ifma.edu.br 1 Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo
Leia maisPadrã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 maisFlexibilidade 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 maisEduardo 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 maisUML Aspectos de projetos em Diagramas de classes
UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada
Leia maisPadrõ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 maisUniversidade 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 Operação
Leia mais8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.
Desenvolvimento OO com Java 8 Classes Internas Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do
Leia maisProgramas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos
OO -Objetos, classes, atributos, métodos, estado, comportamento e identidade (Slide) Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Programas eram lineares e com poucos
Leia maisConteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de
Leia maisAnálise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem
Leia maisUtilização da Metodologia de Desenvolvimento Orientado a Aspectos no Mercado Local
Universidade Federal de Pernambuco (UFPE) Centro de Informática (CIN) Mestrado Profissionalizante em Ciência da Computação Orientadora: Profª Carina Alves Utilização da Metodologia de Desenvolvimento Orientado
Leia maisPADRÕ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 maisSeparaçã. ção Multi-Dimensional de Interesses
OD 2002 Uma nova abordagem para modelagem de requisitos Separaçã ção Multi-Dimensional de Interesses Helder da Rocha (helder@acm.org) argonavis.com.br Objetivos 1. Discutir as limitações existentes no
Leia mais2 Engenharia de Software
20 2 Engenharia de Software 2.1 Design de Sistemas Orientados a Objetos Os Sistemas Orientados a Objetos não são mais novidade hoje em dia já estando há muitos anos no mercado. A orientação a objetos permite
Leia maisProgramaçã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 maisTécnicas de Programação Avançada TCC- 00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo. Conteúdo: Introdução à Orientação a Objetos
Técnicas de Programação Avançada TCC- 00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo: Introdução à Orientação a Objetos Introdução Paradigmas de programação Programação Estruturada Composição
Leia maisSISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária
SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária Cascavel Novembro de 2009 Pedro Patitucci Finamore Daniel Bordignon Cassanelli Marco Antonio da Rosa DIAGRAMAS DE CLASSE E SEQUÊNCIA
Leia maisAspectos técnicos do desenvolvimento baseado em componentes
Aspectos técnicos do desenvolvimento baseado em componentes Um novo processo de desenvolvimento O uso de componentes traz mudanças no processo de desenvolvimento Além de desenvolver um produto, queremos
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 10 Padrões GoF (Protoype e Façade) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisProgramação Orientada a Objetos. Encapsulamento
Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências
Leia maisATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Leia maisDesenvolvendo AOP com Spring.NET Aprenda a desenvolver aspectos para encapsular implementações de arquitetura das implementações de negócio
[Web Boas Práticas Design Patterns Orientação a Objetos AOP Spring.NET] Desenvolvendo AOP com Spring.NET Aprenda a desenvolver aspectos para encapsular implementações de arquitetura das implementações
Leia maisIdentificação de Interesses Transversais: Uma Visão Geral
Identificação de Interesses Transversais: Uma Visão Geral Paulo Afonso Parreira Júnior paulojunior@jatai.ufg.br 24 de Maio de 2013 Agenda Breve Histórico sobre Desenvolvimento de Software Separação de
Leia maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 11 Padrões GoF (Bridge e Decorator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Leia maisPADRÕ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 maisDesenho de Software. Desenho de Software 1
Desenho de Software Desenho de Software 1 Sumário Caracterização Conceitos fundamentais Desenho funcional e desenho OO Qualidades Desenho de Software 2 Bibliografia Pfleeger, Capítulo 6 Design the Modules
Leia maisHistórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW
Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW Baseado nos materiais dos profs: Prof.: Edilberto M. Silva http://www.edilms.eti.br Edna Canedo Marcio de Carvalho Victorino Brasília-DF,
Leia maisEngenharia de software para desenvolvimento com LabVIEW: Validação
Engenharia de software para desenvolvimento com LabVIEW: Orientação a Objetos, Statechart e Validação André Pereira Engenheiro de Vendas (Grande São Paulo) Alexsander Loula Coordenador Suporte Técnico
Leia maisUm 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 maisTé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 maisDesenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto
Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto
Leia maisAná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 maisAnálise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender
Leia maisGuia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Leia maisPHP 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 maisImplementando uma Classe e Criando Objetos a partir dela
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe
Leia maisProgramação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com
Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com Resumo: Demonstrar de forma clara e prática como a Programação Orientada a Aspectos pode ajudar a
Leia maisFactory Method. Edeyson Andrade Gomes www.edeyson.com.br
Factory Method Edeyson Andrade Gomes www.edeyson.com.br Agenda Resumo Quando Usar Participantes Colaborações Conseqüências Exemplo Estrutura Genérica Exercício 2 Resumo Ao invés do cliente instanciar objetos
Leia mais7 Trabalhos Relacionados A idéia é tentar dar todas as informações que ajudem os outros a julgar o valor da sua contribuição; não apenas as informações que levem o julgamento a uma direção em particular.
Leia maisJava 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
Leia maisAnálise de Programação
Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros
Leia maisLINGUAGEM ORIENTADA A OBJETOS
LINGUAGEM ORIENTADA A OBJETOS TI MÓDULO II O ECLIPSE O eclipse é uma IDE Open Source (código fonte aberto) que serve para o desenvolvimento em muitas linguagens: PHP Java Python HTML C/C++ A IDE Eclipse
Leia maisJava Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp
Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define
Leia maisConstrução de novas Classes em Java. Classes Atributos Métodos Herança...
Construção de novas Classes em Java Classes Atributos Métodos Herança... 1 Exemplo Representação em UML Java (Unified Modeling Language) Stack items : Vector Stack( ) push( ) pop( ) isempty( ) finalize(
Leia maisRelacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia maisTópicos em Engenharia de Computação
Tópicos em Engenharia de Computação Introdução / Revisão UML e POO (JAVA) Prof. Ivan Prof. Zagari UML Linguagem Unificada. Não é metodologia, processo ou método. Versão atual 2.0 3 categorias de Diagramas
Leia maisCurso - 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 maisProgramação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes abstratas São classes que não podem ser instanciadas, porque representam
Leia maisMódulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010
Módulo 02 Programação Orientada a Objetos Última atualização: 07/06/2010 1 Objetivos Definir conceitos de orientação a objetos: o abstração, encapsulamento, pacotes. Discutir reutilização de código em
Leia maisNoções sobre Objetos e Classes
Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão
Leia maisPadrão Básico de Projeto: Herança versus Composição
Padrão Básico de Projeto: Herança versus Composição Composição e Herança Composição e herança são dois mecanismos para reutilizar funcionalidade Alguns anos atrás (e na cabeça de alguns programadores ainda!),
Leia mais