Aspectos para Construção de Aplicações Distribuídas

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

Download "Aspectos para Construção de Aplicações Distribuídas"

Transcrição

1 Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort Programa de Pós-Graduação em Informática PUC Minas Belo Horizonte MG 12 de junho de 2007

2 Middleware Objetivo: Ocultar complexidades do desenvolvimento de aplicações distribuídas Tornar programação distribuída o mais semelhante a programação centralizada Idéia: Oferecer abstrações que tornem transparente detalhes de programação em redes Incluindo concorrência, segurança, falhas, escalabilidade, heterogeneidade etc 2

3 Chamada Remota de Métodos Cliente Servidor: inf.pucminas.br S s = lookup(...); A a = new AImpl(); B b = new BImpl(); s.f(a, b); void main(...){...} b a f( a, b); lookup( //inf.pucminas.br/foo ); by remote reference by serialization <<referência remota>> <<callback>> S s = new Server(); bind( foo, s); Registry bind( foo, s); <<Remote Object>> void main(...){...} void f(a a, B b){ a.g();b.h(); } 3

4 Motivação Plataformas de middleware são invasivas, pervasivas e transversais Problemas: separação de interesses, modularidade e suporte a múltiplas plataformas Aplicação Middleware Transporte/Rede 4

5 Solução Proposta: DAJ DAJ: Distribution Aspects in Java Ferramenta para modularização de código de distribuição requerido por middleware Evita que classes de negócio tenham que seguir protocolos de programação Por exemplo, classes de negócio não precisam: Estender outras classes ou interfaces pré-definidas Implementar métodos get e set Ativar ou tratar exceções pré-definidas Tecnologia modularização: aspectos (AspectJ) 5

6 Programação Orientada por Aspectos Limitação de OO: determinados interesses não são adequadamente modularizados Ex: logging, segurança, persistência, autenticação, controle de concorrência, distribuição etc. Tais interesses são chamados de interesses transversais (crosscuting concerns) Características de interesses transversais: Espalhamento de código (code spreading): requisito transversal implementado em diversas classes Entrelaçamento de código (code tangling): requisito transversal misturado com código de negócio 6

7 Programação Orientada por Aspectos Extensão do paradigma Orientado por Objetos Permite modularizar requisitos transversais Modelo de implementação: Descrição dos requisitos funcionais em classes Descrição dos requisitos transversais em aspectos Costura (weaver) dos requisitos para produção da versão executável da aplicação Requisitos do Sistema POO POA Classes Aspectos W E A V E R Sistema Executável 7

8 POO X POA POA é um complemento de POO POA não veio substituir POO POO Autenticação Persistência Núcleo Distribuição POA 8

9 AspectJ Extensão de Java com recursos para POA Nova abstração: aspecto Transversalidade estática Introdução de membros Alteração da hierarquia de classes Suavização de exceções Transversalidade dinâmica Modificações no fluxo de execução de um programa Podem ocorrer: antes, após e no lugar de pontos bem definidos da execução de um programa 9

10 Solução Proposta Sistema DAJ: Visão Geral Exemplo Motivador Interface de Programação Aspectos Propostos Ferramenta dajc Estudos de caso 10

11 DAJ: Etapas de Desenvolvimento 11

12 DAJ: Plataformas Suportadas DAJ é compatível com os dois principais sistemas de middleware disponíveis para Java: Java RMI: utilizado por aplicações distribuídas integralmente implementadas em Java Java IDL: implementação do padrão CORBA. Permite interoperabilidade entre sistemas implementados em diferentes linguagens 12

13 Exemplo Motivador: Sistema de Controle de Ações 13

14 Cenário de Distribuição CORBAServer Client StockListener RMIServer 14

15 Descritor de Distribuição Especifica a configuração de distribuição de um determinado sistema. Permite configurar: Os servidores que compõem a aplicação: Interface remota Classe que implementa a lógica de negócio Nome usado para registro em um servidor de nomes Tecnologia de middleware (RMI ou IDL) Passagem de parâmetros: Serialização Referência Remota 15 Interface de Programação

16 Descritor de Distribuição <! - Servidores que compõem a aplicação --> <server id="stockmarketa"> <interface>stockmarket.stockmarket</interface> <class>stockmarket.stockmarketimpl</class> <protocol>javaidl</protocol> <nameserver>skank.pucminas.br</nameserver> </server> <server id="stockmarketb"> <interface>stockmarket.stockmarket</interface> <class>stockmarket.stockmarketimpl</class> <protocol>javarmi</protocol> <nameserver>patofu.pucminas.br:1530</nameserver> </server> <! - Objetos remotos no lado do cliente --> <remote interface="stockmarket.stocklistener"> <class>stockmarket.stocklistenerimpl</class> </remote> <! - Objetos que serão transferidos entre cliente e servidor --> <serializable> <class>stockmarket.stockinfo</class> <class>stockmarket.datetime</class> </serializable> Interface de Programação 16

17 Implementação de Clientes Clientes podem chamar métodos remotos sem ciência do middleware de comunicação StockMarket s1, s2; // obtém referência para o serviço CORBA s1=(stockmarket)servicelocator.getreference("stockmarketa"); // obtém referência para o serviço Java RMI s2=(stockmarket)servicelocator.getreference("stockmarketb");... s1.update(new StockInfo("cvrd", , DateTime.now()));... StockListener listener = new StockListenerImpl(); s1.subscribe("bb", listener); s2.subscribe("cef", listener); Interface de Programação 17

18 Implementação de Servidores DAJ gera automaticamente código para: Instanciar objetos remotos Ativar objetos remotos Registrar objetos remotos 18

19 Interfaces Remotas Interfaces remotas são interfaces com código de distribuição entrelaçado Java RMI interface StockMarket extends Remote { void update(stockinfo arg0) throws RemoteException; void subscribe(string arg0, daj.javarmi.api.stockmarket.stocklistener arg1) throws RemoteException; void unsubscribe(string arg0, daj.javarmi.api.stockmarket.stocklistener arg1) throws RemoteException; StockInfo getstock(string arg0) throws StockNotFoundException, RemoteException; } Java IDL interface StockMarketOperations { void update(daj.javaidl.api.stockmarket.stockinfo arg0); void subscribe(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); void unsubscribe(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); daj.javaidl.api.stockmarket.stockinfo getstock(string arg0) throws daj.javaidl.api.stockmarket.exceptions.stocknotfoundexception; } Arquitetura Interna 19

20 Classes Remotas Resultantes da introdução de código de distribuição em classes de negócio. Usadas para: Instanciação de Servidores: adaptar objetos servidores para que eles possam ser localizados e receber chamadas remotas Instanciação de Objetos Remotos: adaptar objetos que são passados como argumentos de chamadas remotas ou retornados como resultado Arquitetura Interna 20

21 Instanciação de Servidores Para registrar determinado objeto em um servidor de nomes, esse objeto deve implementar uma interface remota aspect RemoteStockMarketImpl { declare parents: StockMarketImpl implements StockMarketOperations; interface StockMarket { void update(stockinfo info); void subscribe(string stock, StockListener obj); void unsubscribe(string stock, StockListener obj); StockInfo getstock(string stockname) throws StockNotFoundException; } interface StockMarketOperations { void update_daj_javaidl(daj.javaidl.api.stockmarket.stockinfo arg0); void subscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); void unsubscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); daj.javaidl.api.stockmarket.stockinfo getstock_daj_javaidl(string arg0) throws daj.javaidl.api.stockmarket.exceptions.stocknotfoundexception; } 21 Arquitetura Interna

22 Instanciação de Servidores Para tanto é necessário introduzir os métodos incompatíveis através de recursos de transversalidade estática de AspectJ aspect Remoting_StockMarketImpl { } declare parents: StockMarketImpl implements StockMarketOperations;... public void StockMarketImpl.subscribe_daj_javaidl(String arg0, }... class StockListenerAdapter implements StockListener { daj.javaidl.api.stockmarket.stocklistener adaptee; StockListenerAdapter (StockListener adaptee){ this.adaptee = adaptee; } public void update(stockinfo arg0) { adaptee.update_daj_javaidl( (daj.javaidl.api.stockmarket.stockinfo)arg0); }... Arquitetura Interna daj.javaidl.api.stockmarket.stocklistener arg1) { subscribe(arg0, new StockListenerAdapter(arg1) ); 22

23 Instanciação de Objetos Remotos Aspecto que transforma a classe de negócio em classe remota aspect Remoting_StockListenerImpl { declare parents: StockListenerImpl implements StockListenerOperations; interface StockListener { void update(stockinfo info); } interface StockListenerOperations { void update_daj_javaidl(daj.javaidl.api.stockmarket.stockinfo arg0); } Arquitetura Interna 23

24 Instanciação de Objetos Remotos Aspecto que transforma a classe de negócio em classe remota aspect Remoting_StockListenerImpl { declare parents: StockListenerImpl implements StockListenerOperations; void StockListenerImpl.update_daj_javaidl( daj.javaidl.api.stockmarket.stockinfo arg0) { update((stockmarket.stockinfo) arg0); } daj.javaidl.api.stockmarket.stocklistener StockListenerImpl.refIDL = null; } daj.javaidl.api.stockmarket.stocklistener StockListenerImpl.export2IDL() { } // ativa objeto segundo as convenções de Java IDL 24 Arquitetura Interna

25 Referências Remotas Cliente não referencia diretamente o objeto remoto e sim um proxy Funções desse proxy: Compatibilizar interface de negócio com interface remota Ativar objetos passados via semântica de referência remota Realizar casting entre objetos de negócio e remotos Tratar exceções remotas Arquitetura Interna 25

26 Referências Remotas Cliente não referencia diretamente o objeto remoto e sim um proxy class StockMarketProxy implements stockmarket.stockmarket { daj.javaidl.api.stockmarket.stockmarket server; interface StockMarket { void update(stockinfo info); void subscribe(string stock, StockListener obj); void unsubscribe(string stock, StockListener obj); StockInfo getstock(string stockname) throws StockNotFoundException; } interface StockMarketOperations { void update_daj_javaidl(daj.javaidl.api.stockmarket.stockinfo arg0); void subscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); void unsubscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); daj.javaidl.api.stockmarket.stockinfo getstock_daj_javaidl(string arg0) throws daj.javaidl.api.stockmarket.exceptions.stocknotfoundexception; } Arquitetura Interna 26

27 Referências Remotas Cliente não referencia diretamente o objeto remoto e sim um proxy class StockMarketProxy implements stockmarket.stockmarket { daj.javaidl.api.stockmarket.stockmarket server;... void subscribe(string arg0, StockListener arg1) { daj.javaidl.api.stockmarket.stocklistener _arg1 = SolveReference.javaidlSolve(arg1); server.subscribe_daj_javaidl(arg0, _arg1); }... } Arquitetura Interna 27

28 Ativação de Objetos Remotos Não é necessário escrever código para instanciar, registrar e ativar objetos remotos Aspecto abstrato public abstract aspect RMIServerSide { abstract pointcut registryremoteobject(); abstract String getservername(); abstract int gethostport(); abstract Remote getinstanceobject(); } void around(): registryremoteobject() { // instancia, ativa e registra objetos remotos em RMI } Arquitetura Interna 28

29 Ativação de Objetos Remotos Aspecto concreto aspect RMIServerSide_StockMarketB extends RMIServerSide { pointcut registryremoteobject(): execution(public static void Server_StockMarketB.main(..)); String getservername() { return "StockMarketB"; int gethostport() { return 0; } } Remote getinstanceobject() { return new stockmarket.stockmarketimpl(); } Arquitetura Interna 29

30 Serialização de Objetos Java IDL: objetos devem implementar a interface StreamableValue DAJ gera aspectos que fazem com que classes serializáveis implementem essa interface Aspectos gerados introduzem implementações para os métodos dessa interface Java RMI: objetos devem implementar a interface Serializable DAJ gera aspectos que fazem com que classes serializáveis implementem essa interface A interface Serializable não possui métodos 30

31 Tratamento de Exceções Java IDL: idlj produz classes para serialização de exceções Essas classes não podem ser substituídas DAJ gera aspecto que transforma exceções geradas por idlj em exceções de negócio e vice-versa Java RMI: Exceções de Java seguem convenções de Java RMI Métodos de interfaces remotas devem ativar RemoteException DAJ gera um aspecto que suaviza essa exceção 31

32 Ferramenta dajc Implementação de classes e aspectos para introdução de distribuição é uma tarefa tediosa e sujeita a erros A ferramenta dajc produz código para introdução de distribuição em uma aplicação dajc isenta o programador de: Dominar detalhes e convenções requeridas por plataformas de middleware Dominar conceitos de programação orientada por aspectos 32

33 DAJc: Geração de código Descritor de Distribuição Classes DAJc Núcleo da Aplicação Aspectos 33

34 dajc: Implementação Principais módulos: RemoteInterfaceGenerator IDLFileGenerator AdapterGenerator ProxyGenerator RemoteAspectGenerator SerializableAspectGenerator ExceptionHandlerGenerator Tamanho da ferramenta: Classes: 34 Interfaces: 1 Linhas de código:

35 Estudos de Caso Três sistemas legados: HealthWatcher: sistema para gerenciamento de reclamações sobre condições sanitárias de estabelecimentos da área de alimentação NPS: sistema financeiro para controle de ações negociadas em uma bolsa de valores Library: sistema para controle de biblioteca 35

36 HealthWatcher Versão Original Classes Interfaces Núcleo da aplicação Código específico de distribuição 4 2 Total Versão Baseada em DAJ Classes Interfaces Núcleo da aplicação Módulos internos de DAJ 6 0 DAJ Módulos gerados para Java RMI 2 1 DAJ Módulos gerados para Java IDL Total LOC Aspectos LOC Versões Executáveis Suporte a Java RMI Suporte a Java IDL Suporte múltiplo Classes Interfaces Aspectos LOC

37 NPS Versão Original Núcleo da aplicação Código específico de distribuição Total Classes Interfaces LOC Versão Baseada em DAJ Núcleo da aplicação Módulos adicionados ao núcleo Módulos internos de DAJ DAJ Módulos gerados para Java RMI DAJ Módulos gerados para Java IDL Total Classes Interfaces Aspectos LOC Versões Executáveis Suporte a Java RMI Suporte a Java IDL Suporte múltiplo Classes Interfaces Aspectos LOC

38 Library Versão Original Núcleo da aplicação Classes 66 Interfaces 4 LOC 4997 Versão Baseada em DAJ Núcleo da aplicação Módulos adicionados ao núcleo Módulos internos de DAJ DAJ Módulos gerados para Java RMI DAJ Módulos gerados para Java IDL Total Classes Interfaces Aspectos LOC Versões Executáveis Suporte a Java RMI Suporte a Java IDL Suporte múltiplo Classes Interfaces Aspectos LOC

39 Avaliação dos Estudos de Caso Em todos os cenários avaliados, os resultados obtidos foram aqueles esperados Foi possível adaptar os sistemas a uma segunda plataforma de middleware Clientes podem acessar dois servidores (usando plataformas de middleware distintas) Objetos remotos passados por serialização e por referência remota Testes funcionais são possíveis antes de introduzir distribuição 39

40 Conclusões Avaliação Tecnologias Alternativas Trabalhos Relacionados Trabalhos Futuros 40

41 Avaliação Modularização: DAJ foi capaz de isolar completamente o requisito de distribuição de todos os sistemas avaliados Portabilidade: DAJ permitiu gerar versões de sistemas distribuídos utilizando diferentes plataformas de middleware Obliviousness: com o uso de DAJ, o grau de dependência e entrelaçamento é mínimo 41

42 Tecnologias Alternativas DAJ se vale de três tecnologias: Aspectos Linguagens de domínio específico Geração e transformação de código Tecnologias Alternativas: Ferramentas para manipulação de bytecodes Geração de esqueletos de classes 42

43 Comparação com Outros Trabalhos Health Watcher Ceccato DAJ Java RMI X X X Java IDL (CORBA) X Passagem por serialização X X Passagem por referência remota X X Independência de arquitetura parcial X 43

44 Trabalhos Futuros Desenvolvimento e/ou reestruturação de outras aplicações distribuídas Suporte a serviços Web Suporte a funcionalidades específicas de uma determinada plataforma de middleware Suporte a sistemas de middleware que não sejam baseados em invocação de métodos remotos 44

45 Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort Orientador: Prof. Marco Túlio de Oliveira Valente Programa de Pós-Graduação em Informática PUC Minas 12 de junho de 2007

46 FIM Não me envergonho de mudar de opinião, porque não me envergonho de pensar. (Blaise Pascal) 46

Sistemas Operacionais II

Sistemas Operacionais II Modelo orientado a objetos: uma pequena revisão Instituto de Informátic ca - UFRGS Sistemas Operacionais II Modelos para programação distribuída (Remote Method Invocation) Aula 14 Programa é visto como

Leia mais

Aspectos para Construção de Serviços Web

Aspectos para Construção de Serviços Web Aspectos para Construção de Serviços Web Cristiano Amaral Maffort e Marco Túlio de Oliveira Valente Instituto de Informática Pontifícia Universidade Católica de Minas Gerais {maffort,mtov@pucminas.br Abstract.

Leia mais

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar

Leia mais

By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa

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

Leia mais

Prof. Me. Sérgio Carlos Portari Júnior

Prof. Me. Sérgio Carlos Portari Júnior Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade

Leia mais

Objetos e Componentes Distribuídos: EJB e CORBA

Objetos e Componentes Distribuídos: EJB e CORBA : EJB e CORBA Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos

Leia mais

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado Aplicações distribuídas: interação entre partes Processamento Paralelo Middleware Orientado a Objetos Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Rede A Rede B Rede C 2015/01 - INF02799 Sistema

Leia mais

RMI e RPC. RPC significou um passo muito grande em direcção à

RMI e RPC. RPC significou um passo muito grande em direcção à Sumário RMI Conceito. Arquitectura de Implementação. Java RMI Características. Interfaces e Objectos Remotos JVM e Java RMI. Passagem de Argumentos e Serialização. Class Downloading. 1 RMI e RPC RPC significou

Leia mais

Chamada Remota de Procedimento (RPC)

Chamada Remota de Procedimento (RPC) Chamada Remota de Procedimento (RPC) cont semântica de chamadas pelo menos uma vez no máximo uma vez exatamente uma vez relação com protocolo subjacente falhas e reinicializações de servidores funções

Leia mais

Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR n n n n Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança Callbacks Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Estende o modelo de objeto Java para fornecer suporte

Leia mais

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

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 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

Leia mais

Implementação de um Sistema de Objetos Remoto baseado em Java RMI. Ricardo Couto Antunes da Rocha INF/UFG

Implementação de um Sistema de Objetos Remoto baseado em Java RMI. Ricardo Couto Antunes da Rocha INF/UFG Implementação de um Sistema de Objetos Remoto baseado em Java RMI Ricardo Couto Antunes da Rocha INF/UFG Declaração da Interface do Objeto Remoto Declaração de uma interface Java, com os métodos que são

Leia mais

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21 Sistemas de Objetos Distribuídos Primeira Aplicação Java ORB Francisco José da Silva e Silva Departamento de Informática da Universidade Federal do Maranhão Sistemas de Objetos DistribuídosPrimeira Aplicação

Leia mais

5 Trabalhos Relacionados

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

Leia mais

Principais conceitos de CORBA

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

Leia mais

Extração de Aspectos. PUC Minas Instituto de Informática. Mestrado em Informática. Aluno: Marcelo Nassau Malta

Extração de Aspectos. PUC Minas Instituto de Informática. Mestrado em Informática. Aluno: Marcelo Nassau Malta Transformações de Código C para Extração de Aspectos PUC Minas Instituto de Informática Mestrado em Informática Aluno: Marcelo Nassau Malta Orientador: Prof. Marco Túlio de Oliveira Valente Sumário Motivação

Leia mais

Aspectos para Construção de Aplicações Distribuídas

Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort Aspectos para Construção de Aplicações Distribuídas Dissertação apresentada ao Programa de Pós-Graduação em Informática da Pontifícia Universidade Católica de Minas Gerais, como

Leia mais

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. 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 mais

2 Desenvolvimento de Software Orientado a Aspectos

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

Leia mais

Programação Paralela OO. projeto ProActive www-sop.inria.fr/oasis/proactive/home.html

Programação Paralela OO. projeto ProActive www-sop.inria.fr/oasis/proactive/home.html Programação Paralela OO projeto ProActive www-sop.inria.fr/oasis/proactive/home.html motivação integracão de programacão paralela e distribuida com POO programacão mpi-like trabalha em baixo nivel de abstracão

Leia mais

Agenda da Aula. Desenvolvimento de Software Orientado a Aspectos. Aspectos... Motivação. Um pouco de história. Programação Estruturada

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

Leia mais

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 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

Leia mais

INTRODUÇÃO. RPC x RMI

INTRODUÇÃO. RPC x RMI 1 INTRODUÇÃO RPC x RMI 2 INTRODUÇÃO RPC Remote procedure call Este termo é utilizado para aplicativos clientes que fazem normalmente chamadas a procedimentos remotos que estão em outro processo e hosts.

Leia mais

2 Estado da Arte e Trabalhos Relacionados

2 Estado da Arte e Trabalhos Relacionados 18 2 Estado da Arte e Trabalhos Relacionados Neste capítulo, serão apresentados alguns conceitos relativos a frameworks orientado a objetos, e o paradigma da programação orientada a aspectos. Além disso,

Leia mais

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Invocação Remota. Prof. Leonardo Barreto Campos.   1/29 Invocação Remota Prof. Leonardo Barreto Campos 1/29 Sumário Introdução Chamada de Procedimento Remoto Invocação a Método Remoto Leitura Complementar Bibliografia 2/29 Introdução Essa aula trata como os

Leia mais

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos RPC Remote Procedure Call 1 Fonte: Alcides Calsavara e Thais V. Batista Chamada de Procedimentos Remotos (RPC) Motivação: comunicação baseada em operações de entrada/saída Ideal:

Leia mais

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

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

Leia mais

Comunicação Objetos Distribuídos e RMI

Comunicação Objetos Distribuídos e RMI Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2 Chamadas de Objetos: Chamadas Remotas e Chamadas Locais

Leia mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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(){

Leia mais

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP Aluno: Abel Luiz Cechinel Orientador: Paulo Fernando da Silva Sumário Introdução; Fundamentação Teórica; Desenvolvimento; Conclusão;

Leia mais

AspectJ. Silvio do Lago Pereira. Doutorando em Ciência da Computação

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

Leia mais

Tecnologias de Distribuição e Integração. Quais as preocupações a ter com um sistema distribuído?

Tecnologias de Distribuição e Integração. Quais as preocupações a ter com um sistema distribuído? network link: Tecnologias de Distribuição e Integração ISP intranet backbone desktop computer: server: satellite link no interior de uma organização (intranet) clientes externos entre organizações 2 Quais

Leia mais

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks 48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/ds-msc2006 Aula

Leia mais

AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção

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

Leia mais

Smart Proxies para Invocação de Serviços Web Replicados

Smart Proxies para Invocação de Serviços Web Replicados Smart Proxies para Invocação de Serviços Web Replicados José Geraldo Ribeiro Júnior (CEFET-MG / PUC Minas) Orientador: Prof. Marco Túlio Valente (PUC Minas) Fevereiro 2007 Apresentação Motivação Proposta

Leia mais

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 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

Leia mais

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que

Leia mais

Plataformas de Distribuição de Objetos

Plataformas de Distribuição de Objetos Plataformas de Distribuição de Objetos Denominações Equivalentes: Modelos de Componentes Modelos de Integração de Objetos Motivação: Reuso de objetos Redução do Tempo e do Custo de Desenvolvimento de Software

Leia mais

Classes e Objetos. Sintaxe de classe em Java

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

Leia mais

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

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

Leia mais

Exemplo de Cliente e de Servidor CORBA Escritos em C++ Voltando ao Nosso Exemplo

Exemplo de Cliente e de Servidor CORBA Escritos em C++ Voltando ao Nosso Exemplo Exemplo de Cliente e de Servidor CORBA Escritos em C++ 1 Copyright 1998, 1999 Francisco Reverbel Voltando ao Nosso Exemplo // IDL module Stock { exception UnknownStock { string name; interface Quoter {

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Orientação a Objetos Encapsulamento: Parte interna (privada) dos objetos Implementação: métodos Estado: atributos, variáveis,

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Pacotes e Encapsulamento Msc. Paulo de Tarso F. Júnior 1 Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes e interfaces

Leia mais

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Autor Autor Local Cláudio Geyer Instituto de Informática disciplinas: POD e PDP Versão v4 2010-1 Programação com Objetos Distribuídos

Leia mais

Os princípios do desenho orientado a objetos

Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Encapsulamento e congeneridade Domínios, grau de dependência e coesão Os perigos da herança e do polimorfismo Encapsulamento

Leia mais

JavaTM RMI - Remote Method Invocation

JavaTM RMI - Remote Method Invocation JavaTM RMI - Remote Method Invocation Java e Engenharia de Software Orientada a Objetos por Jorge H. C. Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Julho de 1999 Objetivos desta Aula Mostrar o modelo de

Leia mais

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

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

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Introdução a Programação Orientada a Aspectos

Introdução a Programação Orientada a Aspectos Introdução a Programação Orientada a Aspectos Parte 1 - Orientação a objetos Um objeto é um componente de software - uma parte de um sistema que exibe certas características específicas. A seguir são algumas

Leia mais

2 A Infra-Estrutura SCS

2 A Infra-Estrutura SCS 2 A Infra-Estrutura SCS O SCS [7] é uma infra-estrutura para dar apoio à instalação, carga e execução de componentes de software em um ambiente distribuído. Atualmente, é fornecida uma implementação do

Leia mais

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Prof. Tiago Garcia de Senna Carneiro Sistemas Distribuídos - 2006 Conteúdo Passos para implementar um aplicação RMI Executando e compilando uma aplicação RMI Exemplo:

Leia mais

Interfaces e Classes Internas

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

Leia mais

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25 Universidade Federal do Rio Grande do Sul Escola de Engenharia - Instituto de Informática Graduação em Engenharia de Computação Ferramenta para Desenvolvimento de Sistemas Embarcados Utilizando Linguagem

Leia mais

Objetos e Componentes Distribuídos: EJB

Objetos e Componentes Distribuídos: EJB : EJB Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta

Leia mais

Linguagem de Programação Visual

Linguagem de Programação Visual Linguagem de Programação Visual Unidade 4 - Introdução à API Swing - JOptionPane Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 API SWING... 3 A CLASSE JOPTIONPANE... 3 PRINCIPAIS MÉTODOS DA CLASSE

Leia mais

3 Trabalhos relacionados

3 Trabalhos relacionados 3 Trabalhos relacionados Adaptação e implantação dinâmicas são requisitos de aplicações em diversos domínios. Diversas abordagens são capazes de promover adaptação e implantação em tempo de execução. Alguns

Leia mais

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Chamada Remota de Procedimento abril de 2017 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

Leia mais

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação?

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação? Número: Nome: Página 1 de 7 LEIC/LETI 2013/14, 1º Teste de Sistemas Distribuídos, 29 de Março de 2014 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo

Leia mais

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2 Conceitos de Programação Orientada por Objectos Um Problema Problema: Existem, hoje em dia, aplicações complexas e de grande dimensão que é preciso desenvolver e manter de modo eficiente utilizando equipas

Leia mais

Protocolo Request-Reply

Protocolo Request-Reply n n n n Protocolo Request-Reply Modelo de Objeto Remoto Semânticas de Invocação Remota Arquitetura de Invocação Remota Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Características de

Leia mais

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1 Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores

Leia mais

Leitura: Cap : Sommerville; cap20: Pressman

Leitura: Cap : Sommerville; cap20: Pressman Leitura: Cap26-27 - 28: Sommerville; cap20: Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / Ian Sommerville 2000 Slide 1/47 Manutenção de software É modificar um programa depois que

Leia mais

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

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)

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

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

Leia mais

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br Java 2 Standard Edition Fundamentos de Objetos Remotos Helder da Rocha www.argonavis.com.br 1 Sobre este módulo Este módulo tem como objetivo dar uma visão geral, porém prática, da criação e uso de objetos

Leia mais

Manutenção Leitura: Sommerville; Pressman

Manutenção Leitura: Sommerville; Pressman Manutenção Leitura: Sommerville; Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 1 Manutenção de software É modificar um programa depois que ele

Leia mais

UNIVERSIDADE FEDERAL DE P ERNAMBUCO

UNIVERSIDADE FEDERAL DE P ERNAMBUCO UNIVERSIDADE FEDERAL DE P ERNAMBUCO GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO CENTRO DE INFORMÁTICA 2015.2 Programação Orientada a Aspectos com AspectJ nos frameworks Java atuais PROPOSTA DE TRABALHO DE GRADUAÇÃO

Leia mais

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC:

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC: Número: Nome: Página 1 de 7 LEIC/LETI 2016/17, Repescagem do 1º Teste de Sistemas Distribuídos 4 de julho de 2017 Responda no enunciado, usando apenas o espaço fornecido. Identifique todas as folhas. Uma

Leia mais

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e

Leia mais

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br

Leia mais

Introdução a CORBA. Renato Cerqueira. Departamento de Informática, PUC-Rio

Introdução a CORBA. Renato Cerqueira. Departamento de Informática, PUC-Rio Introdução a CORBA Renato Cerqueira Departamento de Informática, PUC-Rio Ferramentas de Programação p/ SD Vários níveis de abstração Sockets (TCP/IP) Chamada de Procedimentos Remotos (RPC) Objetos Distribuídos

Leia mais

Técnicas para Reutilização de Software

Técnicas para Reutilização de Software DCC / ICEx / UFMG Técnicas para Reutilização de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa

Leia mais

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: 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

Leia mais

Conceitos Básicos da Programação OO

Conceitos Básicos da Programação OO Conceitos Básicos da Programação OO Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Objetivos Aprender os

Leia mais

Generics - Java. Fernando Santos. Programação Orientada a Objetos

Generics - Java. Fernando Santos. Programação Orientada a Objetos - Java Fernando Santos Programação Orientada a Objetos Generics é uma funcionalidade incorporada ao Java a partir da versão 5.0 Permite aos programadores escreverem métodos genéricos Os parâmetros dos

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligaçã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

Leia mais

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

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

Leia mais

Projeto de Linguagem. Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem

Leia mais

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

Cliente. Servidor. Núcleo do ORB. Depende do adaptador Interface proprietária. Independe de ORB Depende das definições IDL.

Cliente. Servidor. Núcleo do ORB. Depende do adaptador Interface proprietária. Independe de ORB Depende das definições IDL. 1 Copyright 1998, 1999 Francisco Reverbel Cliente Servidor Interface de Invocação Dinâmica Stub IDL Interface do ORB Esqueleto IDL Esqueleto Dinâmico Adaptador de Objetos Núcleo do ORB Independe de ORB

Leia mais