Seletores de Pontos de Junção. Cristiano Breuel
|
|
- Nicholas Filipe
- 5 Há anos
- Visualizações:
Transcrição
1 Seletores de Pontos de Junção Cristiano Breuel
2 Tópicos Introdução à Programação Orientada a Aspectos Motivação Trabalhos relacionados Proposta deste trabalho Comparação de abordagens 2
3 Introdução Linguagens de programação são uma forma de aumentar o nível de abstração da programação A programação orientada a aspectos é uma nova forma de abstração Este trabalho procura aumentar o nível de abstração deste novo mecanismo 3
4 Programação Orientada a Aspectos Objetivo: modularizar requisitos transversais É complementar à orientação a objetos Cria uma nova unidade de modularização: o Aspecto Um aspecto tem duas partes principais: Advices: o comportamento a implementar Pointcuts: onde aplicar esse comportamento 4
5 Pontos de Junção e Pointcuts Pontos de Junção (joinpoints): pontos na execução do programa em que podem-se adicionar advices Joinpoint shadow: ponto no código-fonte ou representação intermediária que, em tempo de execução, corresponde a um ou mais joinpoints Pointcuts: conjuntos de joinpoints selecionados Expressão de pointcut: uma expressão que define um pointcut 5
6 Qualidade de um pointcut Definida pelos seguintes critérios: Resistência a mudanças Clareza de intenção 6
7 Estilos de definição de pointcuts Enumeração O pointcut enumera os joinpoints para seleciona-los pointcut DBActivity() : call(void Person.updateName(String)) call(void Person.updateAge(int)) call(void Company.insertPerson(Person)) call(void Company.deletePerson(Person)); pointcut DBActivity() : call(void *.update*(..)) call(void *.insert*(..)) call(void *.delete*(..)); 7
8 Estilos de definição de Anotações pointcuts Os joinpoints são marcados com indicadores (anotações) que o pointcut seleciona public class Person public void updatename(string newname) { DBManager.openConnection();... aspect DBConnectionDisposal { pointcut DBActivity() : call(@dbactivity * *(..)); after() : DBActivity() { DBManager.closeConnection(); 8
9 Estilos de definição de pointcuts Declarações semânticas O pointcut seleciona os joinpoints de acordo com características de sua semântica public class Person { public void updatename(string newname) { DBManager.openConnection();... aspect DBConnectionDisposal { pointcut DBActivity(): execution(void Server.initiateProcess()) && containscall(* DBManager.openConnection()); after DBActivity()(): { DBManager.closeConnection(); 9
10 Motivação Mecanismos de pointcuts atuais permitem resolver a maioria dos problemas Entretanto, a qualidade de muitos deles é baixa 10
11 Exemplo: Editor de figuras aspect DisplayUpdating { pointcut move() : call(void Line.setP1(Point)) call(void Line.setP2(Point)) call(void Point.setX(int)) call(void Point.setY(int)); after() returning : move() && target(fe) { fe.redraw(); aspect DisplayUpdating { pointcut move() : call(void FigureElement+.set*(..)); after() returning : move() && target(fe) { fe.redraw(); 11
12 Exemplo: Aspectos para Web Services (1/3) Objetivo: aplicar aspectos a elementos XML específicos dentro de mensagens WebServices (SOAP) Estes elementos podem estar presentes em vários tipos de documentos, fazendo parte de diversos processos 12
13 Exemplo: Aspectos para Web Services (2/3) <?xml version="1.0"?> <company>... <address>...</address>... </company> <?xml version="1.0"?> <customer>... <address>...</address>... </customer> Aspecto de transformação 13
14 Exemplo: Aspectos para Web Services (3/3) request each(address->addressext address): body(//address, address) 14
15 Trabalhos relacionados Programação Funcional Programação Lógica Programação Imperativa 15
16 XQuery/BAT Transforma o programa em um modelo XML do bytecode Usa a linguagem XQuery para selecionar nós dentro deste modelo Vantagem: a XQuery é uma linguagem funcional completa, permitindo maior expressividade 16
17 Andrew (1/2) Linguagem de pointcuts baseada em PROLOG Modelo de joinpoints básico, mas com uma linguagem que permite combinações complexas 17
18 Andrew (2/2) Unificação de predicados Processamento sobre propriedades Regras parametrizadas reutilizáveis Recursão 18
19 Gamma (1/2) PROLOG usada como linguagem de pointcuts Modelo de pointcuts baseado em um traçado da execução do programa, com eventos numerados (timestamps) Permite criar pointcuts baseados seqüencialidade de eventos (inclusive no futuro) 19
20 Gamma (2/2) Exemplo % Evento em T2 está no fluxo de controle da chamada em T1 cflow(t1, T2) :- calls(t1,_,_,_,_), endcall(t3,t1,_), isbefore(t1,t2), isbefore(t2,t3). 20
21 Alpha Semelhante a Gamma, porém: Não permite referenciar eventos no futuro Modelo de joinpoints possui 4 fontes de informação representação da árvore abstrata de sintaxe representação do armazenamento de objetos (heap) representação do tipo estático de cada expressão do programa representação do traçado (trace) da execução do programa 21
22 Josh Semelhante a AspectJ Baseada no arcabouço Javassist Linguagem de definição de expressões com baixa expressividade Permite a definição de novos designadores de pointcuts em Java Modelo de joinpoints estático, definido pelo arcabouço Javassist 22
23 Josh Exemplo static boolean paramtypel(ctmethod m, String[] args, JoshContext jc) { CtClass partype = m.getmethod().getparametertypes()[0]; CtClass argtype = jc.gettype(args[0]); if (partype.subtype0f(argtype)) { return true; if (argtype.subtype0f(partype)) { jc.setif("$1 instanceof " + argtype.getname()) ; return true; else { return false; 23
24 Seletores de pontos de junção 24
25 Conceito Um seletor de pontos de junção é uma função que, dado um ponto de junção e um conjunto de parâmetros, determina se o ponto de junção deve fazer parte de um pointcut. Pode atuar em dois tempos Tempo de weaving Tempo de execução 25
26 Exemplo call é um seletor. call(void *->setsize(..)) é um pointcut. 26
27 Implementação Extensão ao arcabouço JBoss AOP Consiste em: Extensão à gramática da linguagem de definição de pointcuts Adição do mecanismo para declaração de seletores, através de XML ou anotações Modificação do mecanismo de weaving do arcabouço, para adicionar chamadas a seletores em tempo de execução 27
28 Arquitetura 28
29 Declaração de um seletor Um seletor é uma classe que implementa a interface org.jboss.aop.selector.selector Esta interface contém métodos para implementação de seletores para os diversos tipos de pontos de junção Há métodos de seleção em tempo de weaving e de execução. 29
30 Interface Selector public interface Selector { /* Weaving-time selector methods */ SelectionValue matchesexecution(advisor advisor, CtMethod m, List<SelectorParam> selectorparams); SelectionValue matchesget(advisor advisor, CtField f, List<SelectorParam> selectorparams);... /* Run-time selector methods */ boolean matchesexecution(advisor advisor, Method m, Object target, Object[] args, List<SelectorParam> selectorparams); boolean matchesget(advisor advisor, Field f, List<SelectorParam> selectorparams);... 30
31 Declaração de um seletor Para que o seletor seja reconhecido, há duas formas de declará-lo XML Anotação Segue o mesmo padrão de outros elementos do JBoss AOP 31
32 Declaração de um seletor <selector name="parametertypeis" class="org.jboss.test.aop.parametertypeis"/> import org.jboss.aop.selector.selectordef; import public class ParameterTypeIs implements Selector {... 32
33 Uso de um seletor Um seletor é usado como parte de expressões pointcut Pode receber parâmetros (no protótipo atual, apenas = "ParameterTypeIs(\"0\",\"java.lang.Integer\")") public Object advice(invocation invocation) throws Throwable {... <bind pointcut="parametertypeis("0","java.lang.integer")"> <interceptor class="com.mc.metrics"/> </bind > 33
34 Exemplos Seletor de tipo de parâmetro Prova de conceito simples Editor de figuras Uma versão do exemplo clássico Chamadas por reflexão Simples, porém com aplicação geral Seletor específico para arcabouço Demonstra a capacidade de encapsulamento e riqueza semântica Doxpects Outro exemplo de seletor com alto conteúdo semântico 34
35 Seletor de Tipo de Parâmetro Seleciona execuções de métodos com um parâmetro de um tipo específico em uma posição específica Leva em conta o tipo da referência em tempo de execução, não apenas o tipo formal Exemplo simples para demonstrar o uso de seletores 35
36 Seletor de Tipo de Parâmetro (parte public class ParameterTypeSelector extends SelectorHelper { public SelectionValue matchesexecution(advisor advisor, CtMethod m, List<SelectorParam> params) throws NotFoundException { int paramindex = Integer.parseInt(params.get(0).getValue()); String paramtypename = params.get(1).getvalue(); CtClass partype = m.getparametertypes()[paramindex]; CtClass argtype = ClassPool.getDefault().get(paramTypeName); if (partype.subtypeof(argtype)) { return TRUE; else if (argtype.subtypeof(partype)) { else { return CHECK_AT_RUNTIME; return FALSE;... 36
37 Seletor de Tipo de Parâmetro (parte dinâmica)... public boolean matchesexecution(advisor advisor, Method m, Object target, Object[] args, List<SelectorParam> params) { int paramindex = Integer.parseInt(params.get(0).getValue()); String paramtypename = params.get(1).getvalue(); Class partype; Class argtype; argtype = Class.forName(paramTypeName); Object arg = args[paramindex]; if (arg == null) { return true; // We convention that null always matches else { partype = arg.getclass(); return (argtype.isassignablefrom(partype)); 37
38 Editor de figuras Busca o conjunto de métodos que atualiza, direta ou indiretamente, um campo pertencente ao conjunto de campos lidos, direta ou indiretamente, por um dado método 38
39 Editor de public class UpdatesStateReadBy extends SelectorHelper { public SelectionValue matchesexecution(advisor advisor, CtMethod m, List<SelectorParam> params) throws NotFoundException { // Gets selector parameters String readertypename = params.get(0).getvalue(); String readermethodname = params.get(1).getvalue(); // Obtains the reader method CtClass readertype = ClassPool.getDefault().get(readerTypeName); CtMethod readermethod = readertype.getdeclaredmethod(readermethodname); // Gets the sets of read and updated fields Set<CtField> readfields = getfieldsreadbymethod(readermethod); Set<CtField> updatedfields = getfieldsupdatedbymethod(m); // Compares sets boolean result = readfields.removeall(updatedfields); return (result? TRUE : FALSE); private Set<CtField> getfieldsupdatedbymethod(ctmethod m) {... private Set<CtField> getfieldsreadbymethod(ctmethod m) {... 39
40 Chamadas por reflexão Seleciona chamadas indiretas a métodos através da API de reflexão Dá acesso ao lado do chamador Funciona analogamente a um predicado call 40
41 Chamadas por reflexão (parte public class ReflectiveCall extends SelectorHelper { public SelectionValue matchescall(advisor callingadvisor, MethodCall methodcall, List<SelectorParam> params) { CtMethod invoke = ClassPool.getDefault().get("java.lang.reflect.Method").getDeclaredMethod("invoke"); if (methodcall.getmethod().equals(invoke)) { return CHECK_AT_RUNTIME; else { return FALSE;... 41
42 Chamadas por reflexão (parte dinâmica)... public boolean matchescall(advisor advisor, AccessibleObject within, Class calledclass, Method calledmethod, Object target, Object[] args, List<SelectorParam> selectorparams) { String methodclassname = selectorparams.get(0).getvalue(); String methodname = selectorparams.get(1).getvalue(); Class argtype = null; Method method = null; argtype = Class.forName(methodClassName); Method[] methods = argtype.getdeclaredmethods(); for (Method m : methods) { if (m.getname().equals(methodname)) { method = m; break; Method targetmethod = (Method) args[0]; return targetmethod.equals(method); 42
43 Seletores específicos para Arcabouços Seletor para métodos que são setters de propriedades persistentes Utiliza o arcabouço Hibernate 43
44 Seletor de propriedade = "hibernatepersistentsetter") public class HibernatePersistentPropertySelector extends SelectorHelper { public SelectionValue matchesexecution(advisor advisor, CtMethod m, List<SelectorParam> params) { SelectionValue result = FALSE; // Gets the method's class Class declaringclass = m.getdeclaringclass().toclass(); // Gets a Hibernate Session Factory SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory(); // Gets the class's persistent properties an iterare over them ClassMetadata cmd = sessionfactory.getclassmetadata(declaringclass); String[] persistentproperties = cmd.getpropertynames(); for (String prop : persistentproperties) { // Gets the JavaBeans method used to set the property PropertyDescriptor pd = new PropertyDescriptor(prop, declaringclass); Method writemethod = pd.getwritemethod(); // If the methods are the same, we found a match if (writemethod.equals(m.getname())) { result = TRUE; break; return result; 44
45 Doxpects Reproduz parte da funcionalidade da linguagem específica doxpects Seleciona elementos específicos dentro de mensagens XML Utiliza um arcabouço de webservices 45
46 Webservice Request (parte = "request") public class WsRequestSelector extends SelectorHelper { public SelectionValue matchescall(advisor callingadvisor, MethodCall methodcall, List<SelectorParam> params) throws NotFoundException { // Calls a method to check for the apropriate static joinpoint if (iswsrequestmethod(methodcall)) { return CHECK_AT_RUNTIME; else { return FALSE; private boolean iswsrequestmethod(methodcall methodcall) {... private Document getwsdocument(object target, Object[] args) {
47 Webservice Request (parte dinâmica)... public boolean matchescall(advisor advisor, AccessibleObject within, Class calledclass, Method calledmethod, Object target, Object[] args, List<SelectorParam> selectorparams) { // Gets selector parameters String xpathexpression = selectorparams.get(0).getvalue(); // Gets the XML Document Document docroot = getwsdocument(target, args); // Matches the document to the desired elements, given by the XPath in // the selector parameters XPath xpath = XPathFactory.newInstance().newXPath(); NodeSet resultnodes = (NodeSet) xpath.evaluate(xpathexpression, docroot, XPathConstants.NODESET); if (resultnodes!= null && resultnodes.getlength() > 0) { return true; else { return false; 47
48 Comparação de abordagens Paradigma Pointcuts dinâmicos Informação temporal Resistência a mudanças Clareza de intenção Viabilidade prática 48
49 Comparação de abordagens Linguagem / Abordagem Paradigma Pointcuts dinâmicos Informação temporal Resistência a mudanças Clareza de intenção Viabilidade prática XQuery / BAT Funcional não não média alta média Andrew Lógico sim não alta alta média Gamma Lógico sim sim alta alta baixa Alpha Lógico sim sim alta alta média Josh Imperativo não não média alta alta Seletores Imperativo sim não alta alta alta 49
Seletores de pontos de junção: um mecanismo de extensão para linguagens e arcabouços orientados a aspectos. Cristiano Malanga Breuel
Seletores de pontos de junção: um mecanismo de extensão para linguagens e arcabouços orientados a aspectos Cristiano Malanga Breuel Dissertação apresentada ao Instituto de Matemática e Estatística da Universidade
JBoss AOP para quem já conhece AspectJ
JBoss AOP para quem já conhece AspectJ Francisco Reverbel Departmento de Ciência da Computação Universidade de São Paulo 1 MAC-413/5715 - IME-USP - 2004 Características do JBoss AOP Arcabouço para programação
Instituto de Matemática e Estatística da Universidade de São Paulo. Pointcuts abertos
Instituto de Matemática e Estatística da Universidade de São Paulo Pointcuts abertos Monografia para a disciplina MAC5701 Tópicos em Ciência da Computação Cristiano Malanga Breuel Orientador: Prof. Francisco
AspectJ. 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
2 Desenvolvimento de Software Orientado a Aspectos
20 2 Desenvolvimento de Software Orientado a Aspectos A divisão em partes é um importante instrumento para se reduzir a complexidade de sistemas de software. É muito difícil para o ser humano compreender
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
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Aspectos para Construção de Aplicações Distribuídas
Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort maffort@gmail.com Programa de Pós-Graduação em Informática PUC Minas Belo Horizonte MG 12 de junho de 2007 Middleware Objetivo:
Interfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção
DCC / ICEx / UFMG AspectJ AspectJ Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Linguagem orientada a aspectos mais madura e difundida Extensão simples da linguagem Java Gera arquivos.class compatíveis
DATA ACCESS OBJECT (DAO)
Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação DATA ACCESS OBJECT (DAO) SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre 2015
By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa
By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa Problema; AOP; Aspect J; Proposta ao Problema; Conclusões; Referências. Desenvolver os tipos abstratos de dados: lista, fila, pilha e deque. Estes
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
2 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,
4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Load-Time Structural Reflection in Java
Load-Time Structural Reflection in Java Stefan Neusatz Guilhen Java provê uma API para reflexão, que é quase toda voltada para introspecção. As possibilidades para se alterar o comportamento de um programa
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java
Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Manipulação de Bytecode Java
Manipulação de Bytecode Java Mantendo o espírito Hacker no mundo das linguagens de alto nível André Luiz Breves de Oliveira andre.breves@gmail.com class Hello { public static void main(string[] args) {
Orientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){
UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------
Programação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Agenda da Aula. Desenvolvimento de Software Orientado a Aspectos. Aspectos... Motivação. Um pouco de história. Programação Estruturada
Engenharia de Software Aula 23 Agenda da Aula Desenvolvimento de Software Orientado a Aspectos Introdução a desenvolvimento de software orientado a aspectos Interesses centrais e interesses transversais
Injeção de Dependências e Spring
Injeção de Dependências e Spring Daniel Cukier Prof. Fabio Kon IME-USP Conteúdo Exemplo Melhor maneira de aprender Injeção de Dependência (DI) Spring Service Locator Daniel Cukier - IME/USP 2/29 Exemplo
Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Sistemas Distribuídos
Chamada Remota de Procedimento março de 2019 RPC: motivação A B send (B, &pedido) receive (B, &resposta) como facilitar esse padrão tão comum? encapsulamento de detalhes de comunicação criação, envio e
Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.
JAVA ENCAPSULAMENTO Na linguagem de programação Java, a classe é o alicerce para o encapsulamento, o qual é definido como uma técnica que faz com que os atributos da classe permaneçam ocultos, pois desta
Seminário de aspectos: conceitos, características e exemplos
Seminário de aspectos: conceitos, características e exemplos Daniel Bruno Conrado Thiago Gottardi Departamento de Computação Universidade Federal de São Carlos (UFSCar) São Carlos SP Brasil dbconrado@gmail.com,
Desenvolvimento Web com Java. Sérgio Lopes Caelum -
Desenvolvimento Web com Java Sérgio Lopes Caelum - http://www.caelum.com.br sergio.lopes@caelum.com.br Sérgio Lopes Desenvolvedor Java desde 2002 Instrutor de Java pela Caelum Trabalho com Web e Celulares
Análise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Boas práticas com Orientação a Objetos. Paulo Silveira
Boas práticas com Orientação a Objetos Paulo Silveira paulo.silveira@caelum.com.br Rapidissímo overview IFs e switches X herança Vantagens e desvantagens do uso de Herança Casos errados do uso de herança
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus
Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis
Programação Orientada a Objetos. Programação Funcional
Programação Orientada a Objetos Programação Funcional Cristiano Lehrer, M.Sc. Introdução (1/3) É uma categoria de linguagens não-imperativas. Imperativas: Uso eficiente das arquiteturas de computadores
Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Polimorfismo. O que é polimorfismo?
O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus
Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto
Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Extração e Evolução de Linhas de Produtos de Software na Área de Jogos para Celulares usando Programação Orientada por Features
Extração e Evolução de Linhas de Produtos de Software na Área de Jogos para Celulares usando Programação Orientada por Features Rogério Celestino dos Santos Orientador: Marco Túlio Valente Instituto de
PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO FOZ DO IGUAÇU 2013 LISTA
Definição de Conjuntos de Junção Robustos usando Aspect-Aware Interfaces e Aspectos Anotadores
Definição de Conjuntos de Junção Robustos usando Aspect-Aware Interfaces e Aspectos Anotadores Leonardo Humberto Guimarães Silva Orientador: Marco Túlio de Oliveira Valente Programa de Pós-graduação em
Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins
Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último
Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior
Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP Prof. Me. Sérgio Carlos Portari Júnior Conteúdo Programático Contextualizando: Aula anterior Camada Middleware Programar para SD
Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010
Classes e Objetos SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade
Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira
Tratamento de Erros Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:
1) Responda de acordo com os conceitos de orientação a objetos (0,5).
Avalição II (Teórica) 22/06/2017 Disciplina Linguagem de Programação II Prof. Wagner, dos Santos C. de Jesus Curso Engenharia da Computação Questões Solução da Avaliação 1) Responda de acordo com os conceitos
Java para Desktop. Programação Orientada à Objetos 2 JSE
Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona
Classe Abstrata e Interface
Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public
Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes
Árvores Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Setembro de 2011 Tópicos Introdução Árvores binárias Implementação em Java Ordens de percurso em árvores binárias Altura de uma
Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011
Programação Orientada por Objectos 2010/11 2º Exame 28 de Junho de 2011 Instruções (leia com cuidado): Escreva de forma CLARA o seu nome e número em todas as folhas. O exame contém 8 páginas dividido em
Principais conceitos de CORBA
Principais conceitos de CORBA Tecgraf PUC-Rio fevereiro de 2011 Common Object Request Broker Architecture Uma arquitetura aberta para o desenvolvimento de aplicações distribuídas em um ambiente multilinguagem
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Interfaces e Classes Internas
e Classes Internas SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade
Classes e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Tabelas de Dispersão. Tabela de Dispersão
Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão.
Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos
e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança
Encapsulamento e Modularização
Encapsulamento e Modularização Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Encapsulamento Modularização Tipos Abstratos de Dados (TADs) Objetos Classes Conteúdo
6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza
Desenvolvimento OO com Java 6 Polimorfismo 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 Espírito
Encapsulamento e Modularização
Encapsulamento e Modularização Departamento de Computação Universidade Federal de Sergipe Encapsulamento Modularização Tipos Abstratos de Dados (TADs) Objetos Classes Conteúdo Encapsulamento Programação
Testes com objetos mock. Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Análise e Projeto Orientados a Objetos
Testes com objetos mock Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Análise e Projeto Orientados a Objetos Introdução Testes são essenciais para garantir a qualidade do código. No entanto:
Aspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ
Aspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ Objetivos O objetivo dessa apresentação é proporcionar uma visão geral sobre a programação orientada
Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU
Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE
PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO Nº 006/2016 CONTRATO DE GESTÃO IGAM Nº 002/IGAM/2012 09/2017 1 PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO
Ficha de Trabalho nº6. Curso de Especialização Tecnológica
Ficha de Trabalho nº6 Curso de Especialização Tecnológica Tecnologia e Programação de Sistemas de Informação 3ª Edição Componente de formação: Integração de SI Ferramentas Introdução Java XML Stax (Streaming
Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes
Aula 08 Encapsulamento Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Projeto Orientado a Objetos Princípios: Abstração; Encapsulamento; Modularidade.
Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)
Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo
Num sistema de objectos distribuídos, dois conceitos são fundamentais.
Folha 9-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus
REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.
REST Representational State Transfer É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. Não é um padrão. Exemplo ASP.NET Web API namespace WebAPIApp.Models
SOFTWARE PARA VERIFICAÇÃO DE CONFORMIDADE DE SISTEMAS À NORMA ISO/IEC Dayana Fernanda Trapp Orientador: Paulo Fernando da Silva
SOFTWARE PARA VERIFICAÇÃO DE CONFORMIDADE DE SISTEMAS À NORMA ISO/IEC 15408 Dayana Fernanda Trapp Orientador: Paulo Fernando da Silva Roteiro Introdução Objetivos Fundamentação teórica Desenvolvimento
Programação Estruturada e Orientada a Objetos. Objetos e Métodos
Programação Estruturada e Orientada a Objetos Objetos e Métodos 2013 O que veremos hoje? Objetos e Métodos Transparências baseadas no material do Prof. Jailton Carlos Objetivos Aprender a criar construtores;
4 Desenvolvimento de Software Orientado a Aspectos
4 Desenvolvimento de Software Orientado a Aspectos Apesar de ser a tecnologia atualmente dominante no desenvolvimento de software, a orientação a objetos possui algumas limitações nas tarefas de projetar
Linguagem de Programação III
Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual
Aula 09 Objetivo Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual Banco de Dados 1. Crie um novo projeto
Instituto Superior de Engenharia de Lisboa
Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)
AspectJ - Programação Orientada a Aspectos em Java. Sérgio Soares Centro de Informática Universidade Federal de Pernambuco
AspectJ - Programação Orientada a Aspectos em Java Sérgio Soares Centro de Informática Universidade Federal de Pernambuco Programação Orientada a Objetos Lida com conceitos mais intuitivos Permite ganhos
Programação por Objectos. Java
Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:
5 Trabalhos Relacionados
5 Trabalhos Relacionados Este capítulo busca apresentar os trabalhos diretamente relacionados com a presente dissertação e as subseções seguintes apresentam os trabalhos focados em ferramentas (Seção 5.1)
Departamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 32 / 2. 36 / 3. 32 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:
02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?
01. [Sebesta, 2000] O que é um descritor? 02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 03. [Sebesta, 2000] Quais são as questões de projeto relativas aos tipos
Introdução à Programação. Conceitos Básicos de Orientação a Objetos
Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes
p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco
1 Expandindo o Sistema p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco class Diretor extends Funcionario { public boolean autentica(int senha)
MsC. João Maria MsC. Liviane Melo
Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance
Definição de classes em Java (introdução) PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa
Definição de classes em Java (introdução) PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Resumo Introdução à implementação de classes Java declaração de campos de
PLANO DE UNIDADE DIDÁTICA- PUD
Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de
Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.
Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado
Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010
Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade
Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade
Fila de Prioridade (1) Fila capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade Fila de prioridade objectos na fila têmum número
5 Trabalhos Relacionados
5 Trabalhos Relacionados Durante o trabalho desenvolvido nesta dissertação foram estudadas diversas tecnologias que têm objetivos semelhantes ao nosso. Os trabalhos estudados apresentam modelos de programação
Utilizando Swing com Hibernate
Programando com Java Artigo http://mballem.wordpress.com/ Utilizando Swing com Hibernate Utilizando a SessionFactory Autor Marcio Ballem: é formado em Sistemas de Informação e possui certificação Oracle
Programaçã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...