Tutorial MobiCS: Um exemplo de uso

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

Download "Tutorial MobiCS: Um exemplo de uso"

Transcrição

1 Tutorial MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha acm.org Centro de Pesquisas da Xerox (ES) Trabalho de Mestrado no DCC-IME IME-USP Orientador: Markus Endler Uso do MobiCS Usuário implementa classes que definem os protocolos a serem simulados,, o ambiente de rede e o modelo de simulação desejado. Pacotes MobiCS estende Protocolos estende estende Modelos de Simulação instancia Simulação instancia

2 Pacotes MobiCS Principais pacotes para o usuário MobiCS: mobics.ppi programaçã ção de protocolos mobics.ppi ppi.protocol mobics.ppi ppi.message mobics.network programaçã ção dos elementos de rede mobics.simulation programaçã ção do modelo de simulaçã ção e configuraçã ção do ambiente de rede mobics.simulation..simulation.determsimulation mobics.simulation..simulation.stochsimulation mobics.simulation simulation.modelsmodels Outros pacotes MobiCS mobics.exception define exceções usadas pelo simulador e programador de protocolos mobics.controller controller implementa as máquinas de simulação: mobics.controller.deterministic mobics.controller.stochastic mobics.util classes adicionais

3 Sequência Geral de Passos Implementação do protocolo estender classes básicas Protocol e Message Criaçã ção do ambiente de CM simulado estender classes básicas Mss, Mh,,... Criaçã ção do(s) cenário rio(s) de simulaçã ção Escolha dos cenários determinísticos para testes Programar os scripts determinístico sticos Escolha dos cenário rios estocástico sticos Definir quais eventos aleatórios serão o gerados Sequência Geral de Passos Estender a classe DetermSimulation (ou StochSimulation) definindo o ambiente de rede: (elementos simulados & topologia, mobilidade,, etc.) Implementar um programa Java que cria e inicia um objeto Simulação e chamar o método Simulation.start Fazer as simulações: Determinísticas: analisar funcionamento do protocolo a partir do log Estocásticas: coletar dados do log avaliaçã ção do desempenho

4 MobiCS Modelo de Programação Modelo de programação OO e modular Protocolos são compostos de micro-protocolos módulos com funcionalidade bem definida Arranjo típicot Protocolo Wired Wireless Handoff Micro-protocolos se comunicam por eventos mensagens,, timers MobiCS Modelo de Programação Etapas de implementação de um protocolo Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro-protocolos Implementar os métodos

5 O Pacote mobics.ppi.message Toda mensagem do protocolo é um objeto de uma subclasse de mobics.ppi ppi.message.message Classe Message define o conjunto mínimo de informações para processar uma mensagem A classe Message sender, receiver remetente e destinatário responsible classe do prot. responsável pela mensagem callhandler invoca o handler da mensagem timestamp carimbo de tempo da mensagem Obs: callhandler(protocolo) faz chamada ao método Protocolo.when[TipoMensagem]

6 O Pacote mobics.ppi.message O pacote declara 4 interfaces (que( definem o tipo da mensagem): HandoffMessage, WiredMessage, WirelessMessage e AppMessage Toda mensagem deve implementar uma destas interfaces! Exemplo: public class Server_Res extends Message implements WiredMessage { public Server_Res ( ) // construtor public long getnumhops() { Mensagem é um objeto imutável (métodos públicos não podem alterar estado) Antes de enviar uma mensagem, é preciso fazer um clone da mesma. O Pacote mobics.ppi.protocol Um novo protocolo sempre é uma extensão das interfaces WiredModule, WirelessModule,, e HandoffModule Devem ser declarados todos os tratadores para as mensagens que compõem o micro-protocolo Duas subclasses de Protocol, MssProtocol e MhProtocol possuem uma interface específica para a implementação de protocolos em Mhs e MSSs Método Protocol.send(Addr Addr,Message),Message)é é a forma de interação entre instanâncias de um protocolo Pode gerar uma exceção CommunicatioException send envio assíncrono de uma mensagem para outro elemento simulado (rsend é a versão confiável)

7 Um Exemplo: O Protocolo RDP Descrição geral do protocolo Funcionamento do protocolo Mensagens Módulos (micro-protocolos protocolos) Visão Geral do RDP Result Delivery Protocol Objetivo Encaminhar respostas de requisições feitas a servidores fixos para clientes móveis. Utiliza um proxy, que é o representante do Mh na rede fixa. A cada nova requisição do Mh,, é criado um proxy no Mss responsável pelo Mh,, no momento em que a requisição (para o servidor) é feita. São guardados também ponteiros para os proxies remotos de todos os Mh locais.

8 Visão Geral do RDP Result Delivery Protocol Objetivo: : Re-encaminhamento encaminhamento através de um proxy temporário (enquanto requisição estiver pendente) Mh MSS-old proxy rep req rep server Mh MSS-new Visão Geral do RDP Result Delivery Protocol Handoff: : Atualização dos Endereços de Re- encaminhamento em todos os proxies do Mh Mh pxy2 MSS-old dereg plist UpdCurrLoc Mh greet MSS-new pxy1 MSS

9 Funcionamento do RDP Um MSS armazena (para cada Mh local), o conjunto dos proxies locais e remotos criados em função de requisições do Mh. Hand-off de um Mh O O MSS da nova célula envia para o MSS anterior um pedido para de-registrar o Mh (dereg) O O MSS antigo envia para o novo MSS a lista dos endereços dos proxies remotos e locais (plist( plist) O O novo MSS envia uma mensagem UpdCurrLoc para cada um dos proxies da lista, para que estes atualizem o endereço do Mh. Cenário do Protocolo RDP server proxy Req Res Ack MSSp Mh Cria proxy Req ForwardRes MSSo MSSn Greet DeReg PList UpCurLoc Hand-off Greet? DeReg ForwardRes UpCurLoc PList Ack FRes Ack

10 Organizando o Protocolo O protocolo possui 3 instâncias funcionais: RDPMss RDPMh RDPservidor (host fixo) Organização em micro-protocolos: Wired, Wireless, HandoffHandoff. Exemplo Etapas de Implementação Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Declarar cada uma das mensagens na forma de uma subclasse de Message. Estender as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro- protocolos Implementar os métodos

11 Exemplo Comunicação entre Módulos RDPMss RDPMss Greet Ack Req ForwardRes PList UpdateCurrLoc DeReg, Ack RemPList ForwardRes RDPMh RDPMss RDPMss Res Req, Ack RDPServer Exemplo Comunicação entre Módulos Mh wireless Mss ForwardRes Mss Req,Ack ForwardRes wireless wired Ack_Mss RemPList ForwardRes wireless wired handoff PList UpCurrLoc handoff DeReg

12 Exemplo Declaração das Mensagens Declaração de Plist Conteúdo da mensagem Protocolo responsável pelo tratamento da mensagem Construtor Métodos getattrib Método clone public publicclass classplist extends extendsmessage implements implementshandoffmessage { public publicplist(address mh, mh, Address Address oldmss, oldmss, Map Map proxylist) proxylist) { super(rdpmss.class); this.mh this.mh = mh; mh; this.oldmss this.oldmss = oldmss; oldmss; this.proxylist this.proxylist = proxylist; proxylist; // // métodos métodosget get public publicaddress getmh() getmh() { return returnmh; mh; // // conteúdo conteúdo da da mensagem mensagem private privateaddress oldmss; oldmss; private privatemap proxylist; proxylist; private privateaddress mh; mh; Declaração das Mensagens Declaração de Plist public public class class PList PList extends extends Message Message implements implements HandoffMessage HandoffMessage { { public public PList(Address PList(Address mh, mh, Address Address oldmss, oldmss, Map Map proxylist){ proxylist){ super(rdpmss.class); super(rdpmss.class); this.mh this.mh = = mh; mh; this.oldmss this.oldmss = = oldmss; oldmss; this.proxylist this.proxylist = = proxylist; proxylist; public public Address Address getmh(){ getmh(){ return return mh; mh; public public Map Map getproxylist(){ getproxylist(){ return return proxylist; proxylist; public public Address Address getoldmss(){ getoldmss(){ return return oldmss; oldmss; private private Address Address oldmss; oldmss; private private Map Map proxylist; proxylist; private private Address Address mh; mh;

13 Declaração de Micro-Protocolos Necessário definir três instâncias de protocolos do RDP: Servidor - RDPServer Estação móvel RDPMh Estação base RDPMss Cada uma dessas instâncias é um protocolo e define seus próprios micro- protocolos (módulos). Declaração dos Micro-Protocolos Micro-protocolos são declarados como interfaces Java. Cada método da interface é um handler para uma das possíveis mensagens. Sintaxe: public void when<nome nome>(message m);

14 Exemplo Declaração de µprotocolos Micro-protocolo Wired do protocolo RDPMss public interface RDPMssWired extends WiredModule { public void whenres (Message m); public void whenremplist (Message m); public void whenack_mss (Message m); Declaração de Micro-Protocolos Diagrama de declaração de micro- protocolos

15 A Classe Protocol owner elemento simulado usuário do protocolo send envia uma mensagem pela rede state uniformiza a manipulação do estado do protocolo em diferentes instâncias Um Protocolo específico Subclasse de Protocol e implementa todos os tratadores do(s) Micro-protocolo(s) public public class class RDPMh RDPMh extends extends MhProtocol MhProtocol implements implements RDPMhWireless{ RDPMhWireless{ public public RDPMh(Mh RDPMh(Mh owner){ owner){ super(owner, super(owner, null); null); public public void void whenforwardres_mh(message m){ m){ ForwardRes_Mh ForwardRes_Mh res res = (ForwardRes_Mh) (ForwardRes_Mh) m; m; <corpo <corpo do do método> método> public public void void whenrequest(address server, server, int int req){ req){ System.out.println(" mh] mh] Request Request RDP RDP = "+req); "+req); send(((mh) send(((mh) owner).getmssresp(), new new Req(owner.getAddress(), server, server, req)); req));

16 Implementação do Protocolo RDP Tipos de de módulos Micro-protocolos Extensão de deprotocol Declaração do do protocolo RDPMss Usando Timers Alguns protocolos definem ações a serem executadas após um determinado tempo (simulado( simulado) ) de espera : timeouts Programador deve criar timers específicos para cada protocolo (p.ex. MyProtServer), como extensão da classe Timer package MyProject.timers; public class ServerTimer extends Timer { private ReqServer reqserver; public ServerTimer (ReqServer req) { super(myprotserver.class); reqserver = req; public ReqServer getreq() { return reqserver;

17 Usando Timers Similaridade Mensagens/Timers: Protocolos devem declarar e implementar um tratador para cada timer Escalonamento: settimer(timer,once REPEATING,tempo) package MyProject.protocol; import MyProject.timers.*; public class MyServer extends Protocol { public MyServer( Element owner) { //construtor public void whenreqserver (Message m) { ServerTimer t = new ServerTimer (msg); settimer(t, ONCE, duration);... public void whenservertimer (Timer t) { ServerTimer st = (servertimer) t; ReqServer msg = st.getreq(); Configuração do Ambiente de rede simulado Classes de mobics.network Element Fh Mh Mss Cell Address NetworkInterface WiredInterface WirelessInterface

18 Classes do pacote mobics.network (cont) Hierarquia básica de elementos de rede simulados Element Classes básicas MobiCS Mh Fh Fh Mss Mh1 Mss1 Classes do pacote mobics.network (cont) Element implementa a interface básica de um elemento de rede Métodos principais: getname nome do elemento simulado send envia uma mensagem pela rede attach incopora um protocolo ao elemento

19 Elemento de Rede: Exemplo import import mobics.network.*; import import mobics.simulation.*; import import mobics.simulation.models.*; import import MyProject.protocol.*; public public class class MyMh MyMh extends extends Mh Mh { private private WiredAddress WiredAddress ha; ha; private private Cell Cell defaultcell; defaultcell; private private RDPMh RDPMh rdpp; rdpp; // // instancia instancia de de objeto objeto protocolo protocolo public public MyMh(String MyMh(String name, name, Simulator Simulator sim, sim, WiredAddress WiredAddress homeagent) homeagent) { super( super( name name, sim sim ); ); rdpp rdpp = new new RDPMh( RDPMh( ( this this ); ); // // setando setando owner owner ha ha = homeagent; homeagent; tc tc = 0; 0; this.attach( this.attach( rdpp rdpp ); ); public public WiredAddress WiredAddress getha() getha() public public void void setdefaultcell( ( Cell Cell cell cell ) public public Cell Cell getdefaultcell() Criando uma Simulação Sequência típica (em DetermSimulation e StochSimulation): Declaração dos elementos de rede, células e enlaces Private MyMSS mss1; Private MyMh mh2; Private Cell cell3; Private WiredLink wr7; Instanciação e configuração da rede (configure( configure) Cell3 = new Cell(); Mss1 = new MSSMyEntity(Nome Nome,, sim, Cell3,..); Cell3,setNeighbor (vetor de celulas); Mh2 = new MyMhEntity(Nome Nome,, sim, Mss1.getWrAddress getwraddress(), new MhEventGenerator()); Mh2.setDefaultCell setdefaultcell(cell3); Wr7 = new WiredLink(Mss1. (Mss1.getAddress(), Mss2.getAddress getaddress()) O script só para simulações determinísticas (script) acceptturnon (mh2, true); Mh1.moveTo moveto(cell3); Next(); Mh1.receive receive(new Req (server.getwraddress());

20 Exemplo: Configuração mh mh = new new MyMh( Mh Mh 1",sim,, ha); cell1 = new new Cell(); cell2 = new new Cell(); cell3 = new new Cell(); mss1 = new new MyMss( Mss 1",sim,cell1);,cell1); mss2 = new new MyMss( Mss 2",sim,cell2);,cell2); mss3 = new new MyMss("Mss 3",sim,cell3);,cell3); wr wr = new new WiredLink(mss2.getAddress(), (), mss1.getaddress()); wr2 wr2 = new new WiredLink(mss1.getAddress(), (), mss3.getaddress()); mh.setdefaultcell(cell1) Obs: Cada Mh precisa ser movido para a sua célula inicial. Configuração: Definindo Vizinhança entre Células A configuração inclui a criação de células e a relação de vizinhança. public void configure(){... cell1 = new Cell(); cell2 = new Cell(); cell3 = new Cell(); cell_vazia = new Cell(); Cell[] neig1 = {cell2,cell3; Cell[] neig2 = {cell1,cell3; Cell[] neig3 = {cell1,cell2; cell1.setneighbor(neig1); cell2.setneighbor(neig2); cell3.setneighbor(neig3);...

21 Exemplo Cenário de Teste Testar envio sem sucesso de ForwardRes para Mh que não é mais local server proxy ForwardRes é recebido por MSSo Cria proxy antes MSSp de de completado o handoff do domh Mh Req MSSo MSSn Req Res DeReg PList ForwardRes UpCurLoc? Greet DeReg Greet Ack ForwardRes Ack UpCurLoc PList Ack FRes Exemplo Cenário de Teste server proxy MSSp Mh MSSo MSSn Cria proxy Req Greet Req Res DeReg PList UpCurLoc ForwardRes Greet acceptturnon(server,false); acceptturnon(mssn, false); Mh.receive(new Req()); Mh.moveTo(MSSo); next(); Ack Mh.moveTo(MSSn); next(); acceptturnon(server,true); next(); acceptturnon(mssn,true);? DeReg UpCurLoc PList ForwardRes Ack FRes Ack

22 MOBX>> Mh <Mh> is moving Exemplo Registering new mh = <MyMh@1cf6d245> mh] Request RDP = 7 Requisition received by Mss **** Saída adding local proxy da Simulação MOBX>> Mh <Mh> is moving Registering new mh = <MyMh@1cf6d245> mh] Request RDP = 7 Requisition received by Mss **** adding local proxy sending sending message message Req Req to to the the server server mh.moveto(mssp); MOBX>> MOBX>> Mh Mh <Mh> <Mh> is is moving moving Registering Registering new new mh mh = = <MyMh@1cf6d245> <MyMh@1cf6d245> proxyreflist proxyreflist = = {class {class sidam.rdp.req=mobics.network.wiredinterface@50f2d244 sidam.rdp.req=mobics.network.wiredinterface@50f2d244 mh.moveto(msso); Sending Sending proxy proxy list list {class {class sidam.rdp.req=mobics.network.wiredinterface@50f2d244 sidam.rdp.req=mobics.network.wiredinterface@50f2d244 sending sending update update curr curr loc... next(); loc... Updating Updating location location mh.moveto(mssn); setting setting current current location location update update curr curr loc loc sended... next(); sended... MOBX>> MOBX>> Mh Mh <Mh> <Mh> is is moving moving acceptturnon(server,true); server] server] Requisition Requisition received received -> -> 7 7 Forwarding Forwarding Res Res to to local local Mh next(); Mh storing storing result result acceptturnon(mssn,true); Registering Registering new new mh mh = = <MyMh@1cf6d245> <MyMh@1cf6d245> proxyreflist proxyreflist = = {class {class sidam.rdp.req=mobics.network.wiredinterface@50f2d244 sidam.rdp.req=mobics.network.wiredinterface@50f2d244 Sending Sending proxy proxy list list {class {class sidam.rdp.req=mobics.network.wiredinterface@50f2d244 sidam.rdp.req=mobics.network.wiredinterface@50f2d244 sending sending update update curr curr loc... loc... Updating Updating location location setting setting current current location location update update curr curr loc loc sended... sended... Forwarding Forwarding Res Res to to local local Mh Mh mh] mh] Result Result RDP RDP = = Sending Sending Ack Ack for for current current proxy proxy location location server] server] ACK ACK received received for for message message 0 0 Broadcasting Broadcasting RemPList RemPList Removing Removing proxy proxy list list Removing Removing proxy proxy list list Removing Removing proxy proxy list list mh.receive(new Request(...)); Criação de uma Simulação Determinística Em uma subclasse de DetermSimulation: Implementar os métodos configure() e script() Em configure,, criar os objetos que compõem o ambiente simulado (ex( ex: : servidor, Mhs, MSSs, wiredlinks,, etc.) Em script,, escrever o código do script determinístico

23 Simulação Determinística: Exemplo package MyProject.simulation; import mobics.network.*; import mobics.simulation.*; import mobics.controller.deterministic.*; import MyProject.entities.*; import MyProject.messages.*; Public class class DeterSim1 extends DetermSimulation { private MyMh MyMh Mh1; Mh1; private MyMss MyMss Mss1; Mss1; private Cell Cell C1; C1; public DeterSim1() {super(); // // construtor public void void configure() { C1 C1 = new new Cell(); Mh1 Mh1 = new new MyMh( ) Mss1 Mss1 = new new MyMss( ) public void void script() { // // comandos do do script Executando o Simulador Código no programa do usuário Public TesteCenario1() { public static void main(string args[]) { try try { System.out.println( Começo... ); DeterSim1 det_sim = new new DeterSim1(); det_sim.start(); catch (Exception e ); ); {...

24 Evitando Erros no Script Determinístico A ordem de execução de ações em diferentes elementos simulados é não-determinística e pode estar defasada. Comandos de depuração (println) podem produzir resultados inesperados e variáveis, caso haja outros comandos naquele passo. O comando next() pode ser sempre usado como uma primitiva para impor uma sequência deterministica das ações, ou criando passos de simulação vazios (para avançar o tempo simulado). Obs: Em alguns casos é necessário incluir vários next() para garantir a finalização dos eventos do passo anterior. Simulação Estocástica Permite a avaliação do desempenho (complexidade de mensagens) através de testes exaustivos. Usuário define: Padrão de comportamento dos elementos simulados (falhas, atrasos, etc.) Modelo de mobilidade O modelo de simulação pode ser programado (extensão de classes) e configurado pelo usuário (instanciação de objetos). A cada elemento simulado é associado um objeto que define os eventos (aleatórios a serem gerados neste elemento ) Modelo de simulação pode ser arbitrariamente complexo!

25 Programação de Modelos de Simulação Geração de Eventos usuário define os tipos de eventos a serem gerados,, e define a periodicidade de ocorrência (escalonamento) MobiCS define classes base com facilidades para geraçã ção de número aleatórios (randomgenerator), escalonamento de eventos (scheduler)) etc. Modelo de Mobilidade Determinar vizinhança entre células Geração de Evento MoveTo Mapeamento: Localização Célula Simulação Estocástica Implementada Modelo de Simulação Implementado Atividade e Atração Modelo de Mobilidade Atividade: prob. de Mh estar conectado à rede Atração: prob. de Mhs estarem na região de uma célula Mobilidade Probabilidade do Mh migrar para outra célula Vizinhança entre células Qualidade da comunicação sem fio (LinkSimModel) Padrão de requisições (EventModel) Neste modelo: apenas os hosts móveis geram eventos

26 Programação de Modelos de Simulação Canais de Comunicação usuário pode definir ir o delay da mensagem pelo canal: pode depender do tamanho da mensagem, distância entre elementos, ou qualquer outro parâmetro (nr. de hops) Wired Exemplo delaysend(netmessage m) Wireless delaysend(netmessage this.throughput); m, Location L 1, Location L 2 ) public class MyLinkModel extends LinkSimModel { public long delaysend (NetMessage msg) { return (msg.getmessage().getsize() // Outro Exemplo: Modelo do Canal Atraso escolhido ao ao acaso entre (T-2, T+2) public class class LinkModel extends LinkSimModel{ private int int tms2; tms2; private Random randomgen; public LinkModel( int int t ) { tms2 tms2 = t; t; randomgen = new new Random(System.currentTimeMillis()); public long long delaysend( NetMessage netmessage ) { double rand rand = randomgen.nextdouble(); double normalrand = rand*(tms2 + 2)/(tms2-2 ); ); normalrand = normalrand + 2.0; 2.0; long long delay delay = ( long long ) Math.floor( normalrand ); ); return delay;

27 A Classe MhEventGen Classe que implementa o modelo de simulação para cada Mh (subclasse de classe EventGenerator) Cria objetos para geração dos diferentes tipos de eventos (instâncias de subclasses de EventModel) Por exemplo: MhMoveEventModel = implementa modelo de migração evento Mh.MoveTo(newCell) MhReqEventModel = implementa o modelo de geração de requisições para o protocolo evento Mh.Receive(RDPreq) usa timescheduler.addevent p/ escalonar geração periódica de eventos (a cada T unidades de tempo simuladas) A Classe MhEventGen Exemplo // MhEventGen: classe que implementa geracao de eventos para o Mh import mobics.simulation.models.*; public class MhEventGenerator extends EventGenerator { public MhEventGenerator( double probmove, int numneighbors, double probreq, long tms, MyServer[] servers ) { super(); move_em = new MyMoveEventModel( probmove, numneighbors ); req_em = new MyReqEventModel( probreq, tms, servers ); timerscheduler.addevent( 10, move_em ); // geracao de evento de migraçao a cada 10 UTS timerscheduler.addevent( 10, req_em ); // geracao de evento de requisicao a cada 10 UTS timerscheduler.addevent( 500, new StopEventGeneration( timerscheduler ) ); // fim da simulação private MyMoveEventModel move_em; private MyReqEventModel req_em;

28 Classe MyMoveEventModel Implementa o modelo de mobilidade Estende a classe EventModel Define probabilidade de migração e célula inicial de cada Mh método generateevent(element owner) determina se um evento de migração vai ser gerado obtém lista de células vizinhas à celula atual baseado na atração das células vizinhas calcula probabilidade relativa de migração para cada uma delas cria um novo objeto MoveTo(Mh,cell)onde cell é a célula destino A Classe MyMoveEventModel Exemplo // MhMoveEventGen: classe que implementa geracao de eventos de migração para Mhs import java.util.random; import mobics.controller.*; import mobics.network.*; import mobics.simulation.models.*; public class MyMoveEventModel extends EventModel { private Cell currentcell; private double probmove; private Random rnd; private int numneighbors; public MyMoveEventModel( double p, int num_neighbors ) { // construtor super(); currentcell = null; probmove = p; numneighbors = num_neighbors; rnd = new Random( System.currentTimeMillis() ); public Activity generateevent( Element mhowner ) { // codigo simplificado Mh mymh = (Mh) mhowner; if ( randomgenerator.nextboolean (probmove) { currentcell = currentcell.getneighbour() [rnd.nextint(numneighbors)]; return new MoveTo(mymh, currentcell);

29 A Classe MyReq ReqEventModel Exemplo public class MyReqEventModel extends EventModel { private int nextcontent; /** Creates new MhReqModel */ public MhReqEventModel( int startreq ) { super(); nextcontent = startreq; public Activity generateevent( Element element ) { Receive retval = null; SingletonParamsSim params = SingletonParamsSim.getInstance(); MhMIpEntity mh = ( MhMIpEntity ) element; int i = randomgenerator.nextint( 2 ); MssMIpEntity server = params.getservers()[i]; Req req = new Req(mh.getWlAddress(),mh.getHA(), server.getwraddress(), nextcontent ); nextcontent++; //System.out.println( "Gerando evento de receive***********************" ); //System.out.println( "Msg: " + req ); //System.out.println( "MssResponsável: " + mh.getmssresp() ); if ( mh.getmssresp()!= null ) { retval = new Receive( mh.getmssresp(), req ); return retval; A Classe MyStochSimulation Onde é definida a simulação estocástica (Extensão de StochSimulation) usada para declarar e inicializar os elementos simulados método configure criação das células, associação com os MSSs, criação da topologia de interconexão de MSSs (usando WiredLink) cria os objetos de MyMh (passando objeto MhSim) posicionando-os nas células simulação iniciada através do método start

30 A Classe MyStochSimulation Exemplo import mobics.network.*; import mobics.simulation.*; import mobics.controller.*; import mobics.simulation.models.*; public class MyStochSimulation extends StochSimulation { public MyStochSimulation( ( double probmove,, double probreq,, long tms ) { // inicialização de variáveis estatísticas this.probmove = probmove; this.probreq = probreq; this.tms = tms; public void configure() { /*declara e instancia elementos, celulas,, links e relação de vizinhança */ public void measurestats() { /* calcula variaveis estatísticas */ private // variáveis estatísticas private MyMh[] h; private MyServer[] servers; private MyMss[] MSS; private Cell[] servcells,, cells; private WiredLink[][] wr_serv serv_mss, wr_mss_mss; Método configure Exemplo public void configure() {... h = new MyMh[9]; servers = new MyServer[2]; MSS = new MyMss[3]; servcells = new Cell[2]; cells = new Cell[3]; wr_mss_mss = new WiredLink[3][3]; wr_serv serv_mss = new WiredLink[2][3]; for( i=0; i < servcells.length; i++ ) servcells[i] = new Cell(); for( i=0; i < cells.length; i++ ) cells[i] = new Cell(); // definindo as vizinhanças entre celulas Cell[][] neighbors = { { cells[1], cells[2], { cells[0], cells[2], { cells[0], cells[1] ; for( i=0; i < cells.length; i++ ) cells[i].setneighbor setneighbor( ( neighbors[i] ); for( i=0; i < servers.length; i++ ) servers[i] = new MyServer( ( "serv" serv"+i, sim, servcells[i], EventGenerator.nullEventGenerator nulleventgenerator() ); // continuação

31 Método configure Exemplo continuação // criando os MSSs for( i=0; i < MSS.length; i++ ) MSS[i] = new MyMss( ( "MSS"+i, sim,, cells[i], new MhLinkModel(1) ); // criando os enlaces entre servidores e MSSs for( i=0; i < wr_serv serv_mss.length; i++ ) for( j=0; j < wr_serv serv_mss[i].length; j++ ) wr_serv serv_mss[i][j] = new WiredLink( ( servers[i], MSS[j], sim, new MssLinkModel( ( 5, 10 ) ); // criando os enlaces entre MSSs for( i=0; i < wr_mss_mss.length; i++ ) for( j=i+1; j < wr_mss_mss[i].length; j++ ) wr_mss_mss[i][j] = new WiredLink( ( MSS[i], MSS[j], sim, new MssLinkModel( ( 5, 10 ) ); // criando os Mhs for( i=0; i < h.length; i++ ) h[i] = new MyMh( ( "h"+i, MSS[i/3], sim, probmove,, neighbors[i/3].length, probreq, TMS,, servers ); Contando Eventos na Simulação Estocástica //***** Estados da Simulacao Estocastica ***** private static int totalhoprep = 0; private static int totalhopbindingupdate = 0; private static int totalrep = 0; private static int totalreprecebidos = 0; //*** Consulta/alteração do Estados da Simulacao Estocastica *** public static synchronized int gettotalhoprep() { return totalhoprep; public static synchronized void inctotalhoprep(int i) { totalhoprep += i; public static synchronized int gettotalhopbindingupdate() { return totalhopbindingupdate; public static synchronized void inctotalhopbindingupdate(int i) { totalhopbindingupdate += i;

32 Contando Eventos na Simulação Estocástica Estender WiredLink para incluir um tratador de eventos onsend (para NetMessage), que é chamado sempre que uma mensagem wired wired é enviada. public class MyWiredLink extends WiredLink { private int numhops; public MyWiredLink (...) {... numhops = linkmodel.getnumhops(); public void onsend(netmessage m) { super.onsend(m);... if (m.getmessage() instanceof BindingUpdate) { System.out.println("[#### MyStochSim - ONSEND ###] INC BindingUpdate"); inctotalhopbindingupdate(numhops); else if ((m.getmessage() instanceof Rep_Fh_Mss) (m.getmessage() instanceof RepTun_Mss_Mss)) { System.out.println("[#### MyStochSim - ONSEND ###] INC Rep no Wired"); inctotalhoprep(numhops); A Classe MyMh Derivada da Classe Mh Na construção do objeto passa-se se o modelo de simulação escolhido (como parâmetro do construtor da superclasse Mh). public MyMh (String name, Simulator sim) { super(name, sim, new MhSim()); rdp = new RDPMh(this); protocolnotifier.attach(this.rdp) sim pode ser tanto um modelo determinístico ou estocástico Instancia-se se um objeto que implementa uma instância do protocolo (rdp)) e registra-se se esta instância

33 Exemplo de Análises do Modo Estocástico Para o protocolo RDP: como o #(ForwardResult ForwardResult)/ Requisição é afetado pela Probabilidade de Mobilidade ForwardResult / Requests Migration Factor Tamanho médio de of proxylist em função da taxa Requisição/Migração (Call-to to-mobility Ratio) Alguns Cuidados ao Programar Toda mensagem (objeto Java) ) deve ser clonado para o envio. Antes de começar a execução do protocolo, mover explicitamente cada Mh para a sua célula incical. (Mh1. Mh1.MoveTo(cell1) Na simulação determinística: nunca coloque um Mh.send send(..) em seu script,, pois o seu protocolo deve fazer isto a partir de uma requisiçao da aplicação. Por exemplo: mh.receive(new Request(...)); acrescente alguns next() no final do script para garantir que todas as mensagens sejam processadas

34 Experiência com o MobiCS Modelo de Programação de Protocolos Simples. Uso de Java facilitou a implementaçã ção. Programaçã ção o não n é thread-safe safe,, háh compartilhamento de estruturas de dados nos protocolos. Modularizaçã ção o em micro-protocolos é limitada. Documentaçã ção o ainda insuficiente (javadoc( e exemplos) Experiência com o MobiCS Simulação Determinística Mecanismo de exceções de Java foi útil. Permitiu detecção de erros não-determinísticos (quando há varios eventos concorrentes). Detecção de erros no protocolo é facilitado pois cenários teste são controlados Simulação Estocástica Programação dos modelos de simulação é simples e flexível. Log de eventos ajudou identificar erros nos protocolos não detectados na simulação determinística

35 Experiência com o MobiCS Simulação Estocástica (cont.) Dificuldade para identificar no log as informações relevantes e associá-las aos elementos simulados. Principal dificuldade: Instante da geração de um evento instante do processamento do evento Exemplo: decisão sobre célula destino de uma migração a partir da atual Mh.getMSS getmss(). ().getcell() devolve a célula no instante da geração do evento em vez disto, guardar referência para celula atual e atualizar a cada processamento Artigos Rocha, Endler: : MobiCS MobiCS: : An Environment for Prototyping and Simulating Distributed Protocols for Mobile Networks, IEEE MWCN2001. Rocha, Endler: : Flexible Simulation of Distributed Protocols for Mobile Computing, ACM MSWiM,, Boston Rocha, Endler: : Um Simulador de Protocolos para Computação Móvel.. 2 o WCSF, maio Endler,, Silva: A Reliable Connectionless Protocol for Mobile Clients.. DT-SIDAM SIDAM ime.usp.br/~ /~sidam URL: puc-rio.br/~ /~endler/publ.html

36 Sites Home-page page(s): ou rio.br/~endler/mobics/ ( códigos fonte de outros exemplos) Lista de discussão: lista: rcarocha-mobics mobics@lcpd.ime.usp.br cadastramento: rcarocha@acm acm.org Estas transparências: em rio.br/~endler/mobics/

CS: : Um Simulador de Protocolos para Computação Móvel

CS: : Um Simulador de Protocolos para Computação Móvel MobiCS CS: : Um Simulador de Protocolos para Computação Móvel Daniel de Angelis Cordeiro Rodrigo Moreira Barbosa {danielc,rodbar}@ime.usp.br 7 de outubro de 2004 Motivação O desenvolvimento de aplicações

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Arquitetura TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares

Arquitetura TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares Arquitetura TCP/IP Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares Tópicos Problema de resolução de endereço Mapeamento direto Associação dinâmica ARP

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 4 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Migração de Código Em

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9 Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis gustavo.reis@ifsudestemg.edu.br 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programação Concorrente em java - Exercícios Práticos Abril 2004 Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Projeto de Software Orientado a Objeto

Projeto de Software Orientado a Objeto Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Remote Method Invocation (RMI) Introdução Solução JAVA para Objetos Distribuídos Um objeto existe em uma máquina É possível

Leia mais

THREADS EM JAVA. George Gomes Cabral

THREADS EM JAVA. George Gomes Cabral THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores

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

Comunicação. Parte II

Comunicação. Parte II Comunicação Parte II Carlos Ferraz 2002 Tópicos Comunicação Cliente-Servidor RPC Comunicação de objetos distribuídos Comunicação em Grupo Transações Atômicas Comunicação Stream 2 Comunicação cliente-servidor

Leia mais

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente Java RMI - Remote Method Invocation Callbacks Folha 9-1 Vimos, na folha prática anterior, um exemplo muito simples de uma aplicação cliente/ servidor em que o cliente acede à referência remota de um objecto

Leia mais

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução Chamadas Remotas de Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos => permite

Leia mais

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática Java RMI - Remote Method Invocation Folha 5-1 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

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

NetBeans. Conhecendo um pouco da IDE

NetBeans. Conhecendo um pouco da IDE NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica

Leia mais

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia ADDRESS RESOLUTION PROTOCOL Thiago de Almeida Correia São Paulo 2011 1. Visão Geral Em uma rede de computadores local, os hosts se enxergam através de dois endereços, sendo um deles o endereço Internet

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Threads e Concorrência em Java (Material de Apoio)

Threads e Concorrência em Java (Material de Apoio) Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto

Leia mais

Roteiro do Programa e Entrada/Saída

Roteiro do Programa e Entrada/Saída Roteiro do Programa e Entrada/Saída c Professores de ALPRO I Faculdade de Informática PUCRS 03/2012 ALPRO I (FACIN) Roteiro do Programa e E/S 03/2012 1 / 32 Sumário 1 Relembrando 2 Programa Definição de

Leia mais

Padrões de Projeto. Singleton

Padrões de Projeto. Singleton Padrões de Projeto Padrões de Criação Singleton Singleton Assegura que uma classe tenha apenas uma instância e provê um ponto de acesso global a ela 2 Livro Texto: Design Pattern - Elements 1 Motivação

Leia mais

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Invocação de Métodos Remotos RMI (Remote Method Invocation) Invocação de Métodos Remotos RMI (Remote Method Invocation) Programação com Objetos Distribuídos Um sistema de objetos distribuídos permite a operação com objetos remotos A partir de uma aplicação cliente

Leia mais

TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1

TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1 TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1 FABIO HAIDER 2008 C O N T E Ú D O : 1 HTTP Client...3 1.1 Arquitetura...3 1.2 Usando HTTP Client...3 1.2.1 Usuário...3 1.2.2 Implementação HTTP

Leia mais

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this. Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.x = x; this.y = y; public String tostring(){ return "(" + x + "," +

Leia mais

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

Programação Orientada a Objetos em Java. Herança

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE André Esteves nº3412 David Monteiro INTRODUÇÃO É proposto uma arquitectura de servidor Web dividida que tolera perfeitamente tanto falhas na

Leia mais

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface

Leia mais

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;} 2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II Exercício : Construtores são métodos especiais sem tipo de retorno (nem mesmo void) e de mesmo nome que a classe que são invocados quando da criação

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO O Driver IGS possui um módulo de configuração que possibilita a comunicação com protocolos proprietários. Trata-se do Driver

Leia mais

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O Guia de Conectividade Worldspan Go Res! A V A N Ç A D O Í n d i c e Considerações Iniciais...2 Rede TCP/IP...3 Produtos para conectividade...5 Diagnosticando problemas na Rede...8 Firewall...10 Proxy...12

Leia mais

Um pouco do Java. Prof. Eduardo

Um pouco do Java. Prof. Eduardo Um pouco do Java Prof. Eduardo Introdução A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Os programas são escritos em arquivos-texto com a extensão.java.

Leia mais

Invocação de Métodos Remotos

Invocação de Métodos Remotos Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

Universidade Federal de Uberlândia Disciplina: POO2 Prof. Fabiano Dorça. Padrões de Projeto. Padrão Command

Universidade Federal de Uberlândia Disciplina: POO2 Prof. Fabiano Dorça. Padrões de Projeto. Padrão Command Universidade Federal de Uberlândia Disciplina: POO2 Prof. Fabiano Dorça Padrões de Projeto Padrão Command O padrão Command encapsula um comando em um objeto. Tem como premissa desacoplar o objeto cliente

Leia mais

Universidade da Beira Interior. Sistemas Distribuídos

Universidade da Beira Interior. Sistemas Distribuídos Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra

Leia mais

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha (helder@acm.org)

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha (helder@acm.org) J820 Testes de interface Web com HttpUnit Helder da Rocha (helder@acm.org) O que é HttpUnit API Java para comunicação com servidores HTTP Permite que programas construam e enviem requisições, e depois

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

Sistemas Distribuídos Modelo Cliente-Servidor

Sistemas Distribuídos Modelo Cliente-Servidor Sistemas Distribuídos Modelo Cliente-Servidor Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de

Leia mais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais RMI JAVA MIDDLEWARE Aplicativos RMI, RPC e eventos Protocolo Requesição-Respostal Camadas Middleware Representação Externa dos Dados Sistemas Operacionais RMI REMOTE METHOD INVOCATION Invocação remota

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Operação

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Introdução à Computação Móvel IP Móvel. Movimentação de Host. Movimentação de Host. Francisco José da Silva e Silva

Introdução à Computação Móvel IP Móvel. Movimentação de Host. Movimentação de Host. Francisco José da Silva e Silva Introdução à Computação Móvel IP Móvel Francisco José da Silva e Silva Francisco Silva 1 Movimentação de Host Francisco Silva 2 Movimentação de Host Se um host não estiver no enlace identificado por seu

Leia mais

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

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 Relembrando... Mecanismos de Comunicação Middleware Cenário em uma rede Local

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes Programação Orientada a Objetos e Java - Introdução Carlos Lopes POO e Java Objetivo: proporcionar uma visão dos conceitos de POO e do seu uso na estruturação dos programas em Java. Classes e objetos em

Leia mais

DEFINIÇÃO DE MÉTODOS

DEFINIÇÃO DE MÉTODOS Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

Encapsulamento de Dados

Encapsulamento de Dados Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 3 Invocação de Objetos

Leia mais

Sistemas Distribuídos RPC

Sistemas Distribuídos RPC Sistemas Distribuídos RPC Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de Tecnologias Pontifícia

Leia mais

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes Introdução Conceitos básicos programação distribuída + programação orientada a objetos = Objetos distribuídos Motivação

Leia mais

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código } Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver

Leia mais

Capítulo 4. Packages e interfaces

Capítulo 4. Packages e interfaces Capítulo 4. Packages e interfaces 1/17 Índice Indice 4.1 - Package 4.2 - Interface 2/17 Índice 4.1 Package 4.1 - Package 4.2 -- Interface 3/17 4.1 Package Package ou pacote está para o Java como as directorias

Leia mais

Desenvolvimento de Aplicações Java/CORBA

Desenvolvimento de Aplicações Java/CORBA Tutorial Desenvolvimento de Aplicações Java/CORBA Emerson Ribeiro de Mello, Fábio Favarim e Joni da Silva Fraga {emerson, fabio, fraga@das.ufsc.br Este tutorial ensina como criar uma aplicação distribuída

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

Tecnologia de Redes de Computadores - aula 5

Tecnologia de Redes de Computadores - aula 5 Tecnologia de Redes de Computadores - aula 5 Prof. Celso Rabelo Centro Universitário da Cidade 1 Objetivo 2 3 4 IGPxEGP Vetor de Distância Estado de Enlace Objetivo Objetivo Apresentar o conceito de. Conceito

Leia mais

Tabela de roteamento

Tabela de roteamento Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar

Leia mais

UML Aspectos de projetos em Diagramas de classes

UML Aspectos de projetos em Diagramas de classes UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

Leia mais

MicroDNS. Armando Adami Zaro Pablo Augusto Lerina Rodrigues. 3 de outubro de 2007

MicroDNS. Armando Adami Zaro Pablo Augusto Lerina Rodrigues. 3 de outubro de 2007 MicroDNS Armando Adami Zaro Pablo Augusto Lerina Rodrigues 3 de outubro de 2007 Resumo O projeto do MicroDns visa simular localmente o funcionamento de um DNS. Poder-se-á configurar quando da chamada do

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos

Leia mais

Java : Comunicação Cliente-Servidor.

Java : Comunicação Cliente-Servidor. Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a

Leia mais

Documentação Usando o Javadoc

Documentação Usando o Javadoc Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão 2.1 Última Atualização: 04/2005 1 Comentários e Documentação Comentários em Java Existem três tipos de comentários

Leia mais

Mecanismo de Interrupção

Mecanismo de Interrupção Mecanismo de Interrupção Paralelismo de Operação Num sistema multiprogramado a CPU está sempre apta a compartilhar o seu tempo entre os vários programas e os diferentes dispositivos periféricos que necessitam

Leia mais