Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio"

Transcript

1 Esercitazione di Laboratorio 5/12/2007

2 Sviluppare un applicazione RMI per la gestione di un elezione. Il server esporta un insieme di metodi: public void vota(string nome): accetta come parametro il nome del candidato. Non restituisce alcun valore. Registra il voto di un candidato in una struttura dati opportunamente scelta. public int risultato(string nome): accetta come parametro il nome di un candidato e restituisce i voti accumulati da tale candidato fino a quel momento. un metodo che consenta di ottenere i nomi di tutti i candidati, con i rispettivi voti, ordinati rispetto ai voti ottenuti.

3 Server

4 Server

5 Server

6 Server

7 Server

8 Server

9 Client

10 Client

11 Client

12 Client

13 Client

14 Server e Client: la Classe Candidato import java.io.serializable; public class Candidato implements Serializable private static final long serialversionuid = 1L; private String nome; private int voti; public Candidato(String nome) this.nome = nome; this.voti = 1; public String getnome() return this.nome; public int getvoti() return this.voti; public void vota() this.voti++; public String tostring() return nome + : + voti;

15 Server: l Interfaccia Remota Votazione import java.rmi.remote; import java.rmi.remoteexception; import java.util.arraylist; public interface Votazione extends Remote void vota(string nome) throws RemoteException; int risultato(string nome) throws RemoteException; ArrayList<Candidato> getcandidati() throws RemoteException;

16 Server: l Oggetto Remoto import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import java.util.arraylist; import java.util.collections; import java.util.comparator; public class VotazioneServer implements Votazione private ArrayList<Candidato> candidati = new ArrayList<Candidato>(); public synchronized void vota(string nome) for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) c.vota(); return; candidati.add(new Candidato(nome));

17 Server: l Oggetto Remoto public synchronized int risultato(string nome) for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) return c.getvoti(); return 0; public synchronized ArrayList<Candidato> getcandidati() Collections.sort(candidati, new Comparator<Candidato>() public int compare(candidato c1, Candidato c2) return c2.getvoti() - c1.getvoti(); ); return candidati;

18 Server: il Main public static void main(string args[]) try VotazioneServer votazioneimpl = new VotazioneServer(); Votazione votazionestub = (Votazione) UnicastRemoteObject.exportObject(votazioneImpl, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind( votazione, votazionestub); System.out.println( Server ready ); catch(exception e)e.printstacktrace();

19 Client import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.util.arraylist; public class VotazioneClient public static void main(string[] args) String host = localhost ; if(args.length > 0) host = args[0]; try Registry registry = LocateRegistry.getRegistry(host); Votazione stub = (Votazione) registry.lookup( votazione ); //si simulano tante votazioni in parallelo stub.vota( Berlusconi );stub.vota( Veltroni ); stub.vota( Veltroni );stub.vota( Veltroni ); stub.vota( Casini );stub.vota( Tremonti ); stub.vota( Veltroni );stub.vota( Fassino ); stub.vota( Fassino );stub.vota( Berlusconi ); stub.vota( Prodi );stub.vota( Berlusconi ); stub.vota( Bindi );stub.vota( Storace ); stub.vota( Berlusconi );stub.vota( Berlusconi ); stub.vota( Veltroni );stub.vota( Bertinotti );

20 Client System.out.println( Voti Berlusconi: + stub.risultato( Berlusconi )); System.out.println( Voti Fassino: + stub.risultato( Fassino )); System.out.println( Voti Casini: + stub.risultato( Casini )); System.out.println( Voti Veltroni: + stub.risultato( Veltroni )); System.out.println( ); ArrayList<Candidato> candidati = stub.getcandidati(); for(int i = 0; i < candidati.size(); i++) System.out.println(candidati.get(i)); catch(exception e)e.printstacktrace();

21 Esempio Sessione Server $ ssh user@fujim11.cli.di.unipi.it fujim11 [~] -> cd java/votazione/server/ fujim11 [~/java/votazione/server] -> ls *.java 4 Candidato.java 4 Votazione.java 4 VotazioneServer.java fujim11 [~/java/votazione/server] -> javac *.java fujim11 [~/java/votazione/server] -> rmiregistry & [1] 7534 fujim11 [~/java/votazione/server] -> java VotazioneServer Server ready

22 Esempio Sessione Client $ ssh user@fujim9.cli.di.unipi.it Password: fujim9 [~] -> cd java/votazione/client/ fujim9 [~/java/votazione/client] -> ls *.java 4 Candidato.java 4 VotazioneClient.java 4 Votazione.java fujim9 [~/java/votazione/client] -> javac *.java fujim9 [~/java/votazione/client] -> java VotazioneClient fujim11 Voti Berlusconi:5 Voti Fassino:2 Voti Casini:1 Voti Veltroni:5 Berlusconi:5 Veltroni:5 Fassino:2 Casini:1 Tremonti:1 Prodi:1 Bindi:1 Storace:1 Bertinotti:1

23 Modificare l esercizio precedente in modo che il server notifichi ogni nuovo voto ricevuto a tutti i client che hanno votato fino a quel momento. La registrazione dei client avviene nel momento del voto.

24 Callback: Osservazioni Per stabilire una connessione di callback RMI, devono essere fatte le seguenti estensioni: Il server deve avere una lista di client registrati. Il server ha bisogno di un metodo per permettere ai client di registrarsi e di de-registrarsi. Dato che i client devono chiamare questi metodo sul server, i metodi sono remoti: vota e unregisterclient. Visto che il client registrato deve poter essere chiamato da remoto, il client deve pubblicizzare i suoi metodi remoti, per cui deve avere un oggetto che implementa un interfaccia remota chiamabile dal server. L interfaccia è ClientCallbackInterface. Il metodo chiamabile è notify. Il client non ha bisogno di invocare rmiregistry. Infatti, il client quando invoca il metodo remoto per registrarsi passa un riferimento ad un oggetto remoto esportato dal client, per cui il server non ha bisogno di fare una lookup su quell oggetto visto che gli viene già passato. Il client, per terminare deve: (i) invocare la de-registrazione; (ii) fare l operazione inversa della export, per rimuovere l oggetto remoto dagli oggetti esportati (altrimenti il client rimane appeso e va terminato con CTRL+C).

25 Server

26 Client

27 Client

28 Client

29 Client

30 Client

31 Client

32 Client

33 Client

34 Server: l Interfaccia Remota Votazione import java.rmi.remote; import java.rmi.remoteexception; import java.util.arraylist; public interface Votazione extends Remote void vota(string nome, ClientCallbackInterface client) throws RemoteException; int risultato(string nome) throws RemoteException; ArrayList<Candidato> getcandidati() throws RemoteException; void unregisterclient(clientcallbackinterface client) throws RemoteException;

35 Server: l Oggetto Remoto import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import java.util.*; public class VotazioneServer implements Votazione private ArrayList<Candidato> candidati = new ArrayList<Candidato>(); private ArrayList<ClientCallbackInterface> clients = new ArrayList<ClientCallbackInterface>(); public synchronized void vota(string nome, ClientCallbackInterface client) if(clients.contains(client)) return; clients.add(client); for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) c.vota(); notifyclients(c); return; Candidato c = new Candidato(nome); candidati.add(c); notifyclients(c);

36 Server: l Oggetto Remoto private synchronized void notifyclients(candidato c) for(iterator<clientcallbackinterface> i = clients.iterator(); i.hasnext();) ClientCallbackInterface client = i.next(); try client.notify(c); catch(remoteexception e)system.out.println(e); public void unregisterclient(clientcallbackinterface client) clients.remove(client); public synchronized int risultato(string nome) for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) return c.getvoti(); return 0;

37 Server: l Oggetto Remoto e il Main public synchronized ArrayList<Candidato> getcandidati() Collections.sort(candidati, new Comparator<Candidato>() public int compare(candidato c1, Candidato c2) return c2.getvoti() - c1.getvoti(); ); return candidati; public static void main(string args[]) try VotazioneServer votazioneimpl = new VotazioneServer(); Votazione votazionestub = (Votazione) UnicastRemoteObject.exportObject(votazioneImpl, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind( votazione, votazionestub); System.out.println( Server ready ); catch(exception e)e.printstacktrace();

38 Client: l Oggetto Remoto import java.rmi.remote; import java.rmi.remoteexception; public interface ClientCallbackInterface extends Remote public void notify(candidato candidato) throws RemoteException; public class ClientCallbackImpl implements ClientCallbackInterface public void notify(candidato candidato) System.out.println( E stato votato: + candidato);

39 Client: il Main import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import java.util.arraylist; public class VotazioneClient public static void main(string[] args) String host = localhost ; String nomecandidato = ; if(args.length > 1) host = args[0]; nomecandidato = args[1]; try Registry registry = LocateRegistry.getRegistry(host); Votazione stub = (Votazione) registry.lookup( votazione ); ClientCallbackImpl client = new ClientCallbackImpl(); ClientCallbackInterface callbackstub = (ClientCallbackInterface) UnicastRemoteObject.exportObject(client, 0); stub.vota(nomecandidato, callbackstub); Thread.sleep(25000); ArrayList<Candidato> candidati = stub.getcandidati(); for(int i = 0; i < candidati.size(); i++) System.out.println(candidati.get(i)); stub.unregisterclient(callbackstub); UnicastRemoteObject.unexportObject(client, true); catch(exception e)e.printstacktrace();

40 Esempio Sessione Server $ ssh user@fujim11.cli.di.unipi.it Password: fujim11 [~] -> cd java/votazionecallback/server/ fujim11 [~/java/votazionecallback/server] -> ls *.java 4 Candidato.java 4 ClientCallbackInterface.java 4 Votazione.java 4 VotazioneServer.java fujim11 [~/java/votazionecallback/server] -> javac *.java fujim11 [~/java/votazionecallback/server] -> rmiregistry & [1] 8160 fujim11 [~/java/votazionecallback/server] -> java VotazioneServer Server ready

41 Esempio Sessione Client in Parallelo Prima votazione: ssh Password: fujim8 [~] -> cd java/votazionecallback/client/ fujim8 [~/java/votazionecallback/client] -> ls *.java 4 Candidato.java 4 ClientCallbackInterface.java 4 Votazione.java 4 ClientCallbackImpl.java 4 VotazioneClient.java fujim8 [~/java/votazionecallback/client] -> javac *.java fujim8 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Berlusconi E stato votato:berlusconi:1 E stato votato:veltroni:1 E stato votato:prodi:1 Berlusconi:1 Veltroni:1 Prodi:1 ssh user@fujim9.cli.di.unipi.it [...] fujim9 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Veltroni E stato votato:veltroni:1 E stato votato:prodi:1 Berlusconi:1 Veltroni:1 Prodi:1

42 Esempio Sessione Client in Parallelo ssh [...] fujim5 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Prodi E stato votato:prodi:1 Berlusconi:1 Veltroni:1 Prodi:1 Seconda votazione: fujim8 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Casini E stato votato:casini:1 E stato votato:prodi:2 E stato votato:berlusconi:2 Berlusconi:2 Prodi:2 Veltroni:1 Casini:1 fujim9 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Prodi E stato votato:prodi:2 E stato votato:berlusconi:2 Berlusconi:2 Prodi:2 Veltroni:1 Casini:1

43 Esempio Sessione Client in Parallelo fujim5 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Berlusconi E stato votato:berlusconi:2 Berlusconi:2 Prodi:2 Veltroni:1 Casini:1 Terza votazione: fujim8 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Veltroni E stato votato:veltroni:2 E stato votato:veltroni:3 E stato votato:berlusconi:3 Berlusconi:3 Veltroni:3 Prodi:2 Casini:1 fujim9 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Veltroni E stato votato:veltroni:3 E stato votato:berlusconi:3 Berlusconi:3 Veltroni:3 Prodi:2 Casini:1 fujim5 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Berlusconi E stato votato:berlusconi:3 Berlusconi:3 \\ Veltroni:3 \\ Prodi:2 \\ Casini:1

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client

Dettagli

Lezione n.10. RMI CallBacks 9/12/2009 Andrea Corradini

Lezione n.10. RMI CallBacks 9/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.10 LPR-B-09 RMI CallBacks 9/12/2009 Andrea Corradini Lezione 10: RMI CallBacks - Miscellanea Andrea Corradini 1 RMI: PASSAGGIO DI PARAMETRI

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.9 LPR-B-09 RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Lezione 9: RMI - Remote Method Invocation Andrea Corradini 1 Da

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Classpath e Esercizi su RMI

Classpath e Esercizi su RMI Classpath e Esercizi su RMI Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 26/11/2008 Classpath Quando si avvia l interprete, esso deve localizzare le classi

Dettagli

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso Firewall Ogni applicazione di rete, che opera fuori da quelli che sono i confini di una rete locale, incontra inevitabilmente i cosiddetti firewall Tipicamente i firewall bloccano tutto il traffico di

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

RMI: metodi equals e hashcode

RMI: metodi equals e hashcode RMI: metodi equals e hashcode Per verificare se due oggetti remoti contengono gli stessi dati, la chiamata indirizzata al metodo equals() avrebbe bisogno di contattare i server dove si trovano gli oggetti

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell Informazione Politecnico di Milano Programmazione Object Oriented in Java Java Remote Method Invocation Docente: Diego Peroni CEFRIEL

Dettagli

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern

Dettagli

MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola

MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola CdL Magistrale Informatica 2012/2013 Introduzione Uno degli obiettivi dell informatica moderna è quello di offrire servizi

Dettagli

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa RMI Remote Method Invocation Enrico Tassi, 3/4/2009 Slides originali di Nicola Gessa Remote Method Invocation Si colloca del mondo della programmazione distribuita. L obiettivo è di fornire al programmatore

Dettagli

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati Activation In generale i Sistemi ad oggetti distribuiti sono progettati per lavorare con oggetti persistenti. Dato che questi sistemi saranno composti da migliaia (forse milioni) di tali oggetti, sarebbe

Dettagli

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Laboratorio di Sistemi Distribuiti Leonardo Mariani Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante

Dettagli

Oggetti Distribuiti e Java RMI

Oggetti Distribuiti e Java RMI Oggetti Distribuiti e Java RMI Oggetti Locali - Oggetti Distribuiti Oggetti Locali: sono oggetti i cui metodi possono essere invocati solo da un processo locale, cioè da un processo in esecuzione sulla

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Comunicazione fra oggetti distribuiti

Comunicazione fra oggetti distribuiti Comunicazione fra oggetti distribuiti RMI RPC invocazione di metodo remoto - gli oggetti remoti ricevono le RMI interfaccia remota meccanismo per la comunicazione cliente servente come primitiva di un

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino

Dettagli

Firewall. RMI e Firewall

Firewall. RMI e Firewall Firewall Ogni applicazione di rete, che opera fuori da quelli che sono i confini di una rete locale, incontra inevitabilmente i cosiddetti firewall Tipicamente i firewall bloccano tutto il traffico di

Dettagli

Remote Method Invocation

Remote Method Invocation JAVA RMI LSO 2008 Remote Method Invocation Perché RMI? L obiettivo è di permettere ad una applicazione in esecuzione su una macchina locale di invocare i metodi di un oggetto in esecuzione su un altro

Dettagli

Java RMI (Remote Method Invocation)

Java RMI (Remote Method Invocation) Java RMI (Remote Method Invocation) Accesso ad oggetti remoti In Java non sono possibili riferimenti remoti RPC in JAVA Le RMI introducono la possibilità di richiedere esecuzione di metodi remoti in JAVA

Dettagli

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione Java RMI Alcune premesse Interfaccia e Implementazione Modello OO Interfaccia esprime una vista astratta di un ente computazionale, nascondendo organizzazione interna dettagli di funzionamento Implementazione

Dettagli

Programmazione di reti Corso B. 22 Novembre 2016 Lezione 9

Programmazione di reti Corso B. 22 Novembre 2016 Lezione 9 Programmazione di reti Corso B 22 Novembre 2016 Lezione 9 Eccezione ECHO server NIO if (key.isreadable()){ try{ SocketChannel channel= (SocketChannel) key.channel(); ByteBuffer[] bfs = (ByteBuffer[]) key.attachment();

Dettagli

Java RMI: Esempio Completo di un Applicazione Distribuita

Java RMI: Esempio Completo di un Applicazione Distribuita Java RMI: Esempio Completo di un Applicazione Distribuita Il Problema Produttore/Consumatore in Ambiente Distribuito* *a cura del Prof. L. Nigro, Università della Calabria Java RMI (Remote Method Invocation)

Dettagli

Esercitazione di Sistemi Distribuiti: Java RMI

Esercitazione di Sistemi Distribuiti: Java RMI Esercitazione di Sistemi Distribuiti: Java RMI Anno Accademico 2007-08 Marco Comerio comerio@disco.unimib.it Richiami Teorici Oggetti distribuiti 2-16 Usuale organizzazione di un oggetto remoto con un

Dettagli

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari Java RMI I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: - Sistemi Distribuiti Dip. Informatica (S.Pizzutilo) - Seminario Java RMI di G.Cozzolongo Java RMI: Remote Method

Dettagli

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247 Registri RMI Per poter interagire con un server remoto, un client deve essere in possesso di una sua referenza remota (ovvero un oggetto stub). Un servizio di Naming è una risorsa centralizzata che può

Dettagli

Agenti Mobili in Java RMI

Agenti Mobili in Java RMI Agenti Mobili in Java RMI Un agente è una computazione che agisce per conto di un host presso un altro host. Gli agenti in Java RMI sfruttano due peculiarità di Java: Serializzazione, attraverso cui gli

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Dettagli

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124 UnicastRemoteObject Java RMI fornisce diverse classi base per definire server remoti: UnicastRemoteObject < RemoteServer < RemoteObject dove A < B significa che A è una sottoclasse di B. UnicastRemotObject

Dettagli

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread: Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

Laboratorio di Reti Lezione 10 RMI: Callbacks, Code Mobility. 29/11/2016 Laura Ricci

Laboratorio di Reti Lezione 10 RMI: Callbacks, Code Mobility. 29/11/2016 Laura Ricci Laboratorio di Reti Lezione 10 : 29/11/2016 Laura Ricci Laura Ricci 1 IL MECCANISMO DELLE CALLBACK Il meccanismo delle callback consente di realizzare il pattern Observer in ambiente distribuito, utile

Dettagli

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002. INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002 Esercizio 4) import fiji.io.simplereader; class Programma{ public static

Dettagli

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) (RMI) Remote Method Invocation (RMI) in Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi disi.unige.it Walter Cazzola Java: Remote

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Un ambiente di esecuzione che gestisce o naming di oggetti, sicurezza, concorrenza, transazioni, persistenza, distribuzione oggetti (location

Dettagli

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti Sistemi Distribuiti Anno Accademico 2005-06 Prof. Flavio De Paoli 1 Il modello ad oggetti 2 Distributed Objects 2-16 Common organization of a remote object with client-side proxy. 3 Caratteristiche Oggetti

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Dettagli

Java e Serializzazione dalla A all'xml di Leonardo Puleggi

Java e Serializzazione dalla A all'xml di Leonardo Puleggi dalla A all'xml di Leonardo Puleggi Indice generale Introduzione2 Grafo di Riferimenti 4 Attributi Transient.. 6 Metodi writeobject e readobject... 7 Ereditarietà e Serializzazione...10 Serializzazione

Dettagli

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1 Il modello Java RMI Anno accademico 2011/12 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Architettura del modello 1 L oggetto remoto è l unità di distribuzione

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Linguaggi di Programmazione: Paradigmi di Programmazione

Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione Socket, Servlet e Remote Method Invocation Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Java Relazioni Associazioni 1 Associazione Uno a Zero-Uno Un esempio Un autovettura ha al più un proprietario 0..1 Dato il verso di navigazione specificato è necessario avere una

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Esempio: Interfacce. Gioco Interfacce

Esempio: Interfacce. Gioco Interfacce Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica

Dettagli

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati. Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli

Dettagli

Esempio: Interfacce. Gioco Interfacce

Esempio: Interfacce. Gioco Interfacce Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica

Dettagli

Concorrenza e sincronizzazione

Concorrenza e sincronizzazione Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente

Dettagli

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

LA PROGRAMMAZIONE RMI

LA PROGRAMMAZIONE RMI Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Remote Method Invocation Prof. Franco Zambonelli A.A. 2005-2006 LA PROGRAMMAZIONE

Dettagli

Multithreading. Multithreading/2

Multithreading. Multithreading/2 Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2

Dettagli

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo parametrico vs polimorfismo per inclusione Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

RMI Remote Method Invocation. da materiale di Carlo Ghezzi e Alfredo Motta

RMI Remote Method Invocation. da materiale di Carlo Ghezzi e Alfredo Motta RMI Remote Method Invocation da materiale di Carlo Ghezzi e Alfredo Motta L idea alla base di tutta la programmazione distribuita è semplice Un client esegue una determinata richiesta Tale richiesta viaggia

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

Multithreading in Java I parte. Lorenzo Gallucci Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)

Dettagli

Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array

Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Interfaccia Comparable L altra volta abbiamo

Dettagli

Un esercizio d esame. Flavio De Paoli

Un esercizio d esame. Flavio De Paoli Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori

Dettagli

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 1) Scrivere l'output del seguente programma Java public class Bean private String str; Bean(String str ) this.str = str; public String tostring()

Dettagli

Introduzione Programmazione Java

Introduzione Programmazione Java Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Esercitazione 15. Il problema dello Sleeping Barber

Esercitazione 15. Il problema dello Sleeping Barber Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione ad Oggetti. Java Parte II Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una

Dettagli

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI Programmazione in Rete e Laboratorio Architettura / Un servizio presso un computer-server è identificato dai seguenti valori: IP (32 bit, presto 128 bit) (16 bit) Servizi telnet TCP

Dettagli

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1. I mattoni di base di un programma Java Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 2 28 settembre

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI una breve introduzione alla programmazione in rete Chi sono? Come contattarmi? Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino Corso Svizzera, 185 I-10149

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI una breve introduzione alla programmazione in rete Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino baldoni@di.unito.it

Dettagli

Esercitazione. Docente Ing. Mariateresa Celardo

Esercitazione. Docente Ing. Mariateresa Celardo Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un

Dettagli

Laboratorio di Programmazione di Rete Corso A

Laboratorio di Programmazione di Rete Corso A Laboratorio di Programmazione di Rete Corso A Anno Accademico 2005-2006 Docente: Laura Ricci Assistente: Paolo Mori INFORMAZIONI UTILI Orario del Corso: Lunedì 9.00-11.00 Laboratorio Gruppo A 11.00-13.00

Dettagli

Il linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete

Il linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Il linguaggio Java Remote Method Invocation (RMI) Oggetto remoto Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Client Server 2 Schema di principio oggetto client oggetto

Dettagli

I Thread. un thread è uno stream di esecuzione del programma

I Thread. un thread è uno stream di esecuzione del programma I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

La concorrenza in Java package java.util.concurrent Antonio Furone

La concorrenza in Java package java.util.concurrent Antonio Furone La concorrenza in Java package java.util.concurrent Antonio Furone Coda Bloccante La classe LinkedTransferQueue è stata esplicitamente disegnata per dare supporto a problemi di tipo produttore/consumatore.

Dettagli

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010 Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1

Dettagli

Gestione dei thread in Java LSO 2008

Gestione dei thread in Java LSO 2008 Gestione dei thread in Java LSO 2008 Cos è un Thread? Si può avere la necessità di suddividere un programma in sottoattività separate da eseguire indipendentemente l una dall altra Queste sottoattività

Dettagli

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi statici. Dichiarazione e chiamata di metodi statici Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Il problema nasce dalla caratteristica di Java di essere distribuito

Il problema nasce dalla caratteristica di Java di essere distribuito Organizzazione della lezione 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Istanziazione

Dettagli

Scrivere il codice del compareto in modo tale che confronti due Studenti per età e a parità di questa per matricola

Scrivere il codice del compareto in modo tale che confronti due Studenti per età e a parità di questa per matricola Domanda 1 Scrivere il codice del compareto in modo tale che confronti due Studenti per età e a parità di questa per matricola class Studente implements Comparable { private String matricola;

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione distribuita in Java. Socket & Client-Server Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una

Dettagli

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

Datagrammi. NOTA: MulticastSocket estende DatagramSocket Datagrammi Le applicazioni che comunicano tramite socket possiedono un canale di comunicazione dedicato. Per comunicare, un client ed un server stabiliscono una connessione, trasmettono dati, quindi chiudono

Dettagli

domenica 9 giugno 13 Serializzazione

domenica 9 giugno 13 Serializzazione Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe

Dettagli

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che

Dettagli

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre 2001

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre 2001 COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 NOME COGNOME MATRICOLA Scrivere in stampatello Nome, Cognome e Matricola su ogni foglio consegnato. ESERCIZIO 1. Si consideri il seguente

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Corso di Reti di Calcolatori. Datagrammi

Corso di Reti di Calcolatori. Datagrammi Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che

Dettagli

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto

Dettagli

Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 7 e 8

Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 7 e 8 Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 7 e 8 Bounded Buffer con sincronizzazione Java (1) public class BoundedBuffer private

Dettagli

Laboratorio di Programmazione 1 [Java]

Laboratorio di Programmazione 1 [Java] Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una

Dettagli

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)

Dettagli

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012 Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente

Dettagli