Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouJúlio Veiga Ávila Alterado mais de 8 anos atrás
1
Larva/Virtuos í Antonio Kantek T ó picos Avan ç ados de Programa ç ão Orientada a Objetos - MAC 413/5715 Segundo Semestre de 2003 Prof. Fabio Kon
2
Agenda Reflexão Computacional Orienta ç ão a Aspectos Extensões e ferramentas para Java Á rvores de Programas Arquitetura Larva/Virtuos í [1]
3
Reflexão Computacional Reflexão computacional é fortemente recomendada na constru ç ão de sistemas de softwares complexos Pode-se implementar reflexão computacional modificando-se uma m á quina virtual estendendo assim a linguagem Linguagens h í bridas se baseiam em desvios extras no fluxo de execu ç ão para executar reflexão computacional
4
Orienta ç ão a Aspectos Possibilidade de separar regras de neg ó cio de servi ç os de infraestrutura Altera ç ões feitas em c ó digo fonte ou em c ó digo compilado Aspectos e reflexão computacional não são excludentes
5
Á rvores de Programas [] Compiladores Just-in-Time não conseguem criar otimiza ç ões dr á sticas Representa ç ão intermedi á ria de um programa Reflexão computacional é realizada atrav é s da modifica ç ão dinâmica de á rvores de programa
6
Á rvores de Programas [] Á rvores de programa possibilitam a edi ç ão do comportamento das aplica ç ões antes ou durante a sua execu ç ão Á rvores de programa relacionam-se entre si de acordo com os relacionamentos das classes
7
Extensões e Ferramentas para Java [7] BCEL [2] JavaAssist [3] Juice [4] Guaran á [5] OpenJava [6]
8
Larva/Virtuos í Linguagem de programa ç ão reflexiva orientada a objetos. Todo elemento do programa pode sofrer reflexão computacional. Reflexão computacional é realizada atrav é s da modifica ç ão dinâmica de á rvores de programa.
9
Larva/Virtuos í Combina caracter í sticas encontradas em Java [7], SmallTalk [8] e Eiffel [9]. Não h á comandos nem tipos primitivos. Os ú nicos s í mbolos reservados são: :=atribui ç ão returnretorno em m é todo Larva/Virtuos í oferece facilidades sint á ticas para lidar com objetos que dizem respeito ao fluxo de execu ç ão (como if ou while)
10
Larva/Virtuos í Tipagem forte X tipagem fraca? Larva/Virtuos í possui tipagem forte. Extensibilidade, Larva/Virtuos í implementa o conceito de heran ç a simples. A classe herdeira possui acesso total e irrestrito aos m é todos da superclasse. Qualquer classe pode ser especializada sem restri ç ão.
11
Larva/Virtuos í A implementa ç ão de um m é todo é feita por uma composi ç ão de Statements (Composite Pattern), onde cada Statement representa um comando. Construtores são um tipo de m é todo especial que possuem como tipo de retorno uma instância da pr ó pria classe que define o construtor. Construtores são chamados de forma est á tica, enquanto que m é todos normais precisam ser executados sobre uma instância
12
Larva/Virtuos í Classes podem ser redefinidas em tempo de execu ç ão Classe é uma implementa ç ão de um tipo abstrato Uma classe pode possuir um bloco de dados (DataBlock), atributos e um conjunto de m é todos M é todo possui nome, tipo de retorno, parâmetro de entrada e uma lista de exporta ç ão como em Eiffel.
13
Larva/Virtuos í Em Larva/Virtuos í, todas as classes herdam de Object, mesmo não havendo heran ç a expl í cita como em Java Não existe modificadores de acesso tais como public, private ou protected. O controle é feito por lista de exporta ç ão Um m é todo exportado para a classe Object, significa que ele est á disponibilizado para qualquer classe
14
Larva/Virtuos í class Conta { Real saldo := 0; Integer numero; constructor fabrique(Integer n) export Gerente { numero := n; } void depoisite(Real d) export Gerente { saldo.add(d); } class Gerente { constructor trabalhe() { Conta conta := Conta.fabrique(220); c.deposite(10); }
15
Meta-Modelo
16
Trabalhos Futuros Defini ç ão do mecanismo de coleta de lixo Extensão do Meta-Modelo para incluir eventos e asser ç ões Defini ç ão de um c ó digo nativo Mecanismo de seguran ç a Defini ç ão de uma biblioteca padrão Defini ç ão de uma biblioteca de meta- componentes (transa ç ão, persistência e seguran ç a)
17
D ú vidas ? antonio_kantek@hotmail.com alcides@ppgia.pucpr.br
18
Referências [1] Nunes, Leonardo e Calsavara, Alcides (2000), Estudos sobre a concep ç ão de uma linguagem de programa ç ão reflexiva e correspondente ambiente de programa ç ão [2] BCEL - The Byte Code Engineering Library http://jakarta.apache.org/bcel/index.html [3] Javassist http://www.csg.is.titech.ac.jp/~chiba/javassist/ [4] Michael Franz and Thomas Kistler. Introducing Juice http://citeseer.nj.nec.com/context/608344/0 [5] Guaran á http://www.dcc.unicamp.br/~oliva/guarana/ [6] OpenJava http://openjava.sourceforge.net/
19
Referências [7] Sun MicroSystems (2000). Java Language Specification http://java.sun.com/aboutJava/communityproces s/maintenance/JLS/jls2draft.pdf http://java.sun.com/aboutJava/communityproces s/maintenance/JLS/jls2draft.pdf [8] Robson, D and Goldberg, A (1983) SmallTalk: The Language [9] ISE Eiffel (2000). An invitation to Eiffel http://eiffel.com/doc/manuals/language/intro/pa ge.html http://eiffel.com/doc/manuals/language/intro/pa ge.html
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.