JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO"

Transcript

1 JAVA JAVA Introduzione INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) Cross Platform Web Dinamico Versioni e IDE DIAPOSITIVA 2 1

2 JAVA La programmazione orientata agli oggetti JAVA La programmazione OOP Nascita della OOP NASCITA DELLA OOP 1970 Programmi Dati Algoritmo Sistema Programmazione strutturata Programmazione OOP DIAPOSITIVA 4 2

3 JAVA La programmazione OOP Classi e Oggetti CLASSI E OGGETTI Classe Cane Oggetto pabn Oggetto snoopy Oggetto scoobydoo Oggetto spank Oggetto pluto DIAPOSITIVA 5 JAVA La programmazione OOP Incapsulamento INCAPSULAMENTO ATTRIBUTI - nome - colori - tipo - amici - datanascita - difantasia - abilita Classe Cane METODI - abbaia () - scodinzola () - mangia () - gioca() DIAPOSITIVA 6 3

4 JAVA La programmazione OOP Ereditarietà EREDITARIETÀ Classe Cane Classe Alano Classe Barboncino Classe Mastino Classe Collie Classe PT DIAPOSITIVA 7 JAVA La programmazione OOP Polimorfismo POLIMORFISMO Classe PT Classe Cane Classe Collie commissariorex lassie DIAPOSITIVA 8 4

5 JAVA La programmazione OOP Linguaggi LINGUAGGI Linguaggi puri Linguaggi ibridi DIAPOSITIVA 9 JAVA La portabilità 5

6 JAVA Portabilità PORTABILITÀ Sistema Linux con JVM COMPILAZIONE INTERPRETAZIONE Codice Sorgente Bytecode Sistema MAC con JVM Java Runtime Enviroment (JVM e le librerie di classi) Compilatore ed altri strumenti JDK Sistema WIN con JVM DIAPOSITIVA 11 JAVA BlueJ 6

7 JAVA BLUEJ BLUEJ IDE per sviluppare in Java Multi-Piattaforma Licenza GNU Kent University BlueJ DIAPOSITIVA 13 JAVA BLUEJ Selezione JVM SELEZIONE JVM DIAPOSITIVA 14 7

8 JAVA BLUEJ Creazione di un progetto CREAZIONE PROGETTO Project New Project Raggiungi la posizione desiderata Digita il nome del progetto BlueJ crea una cartella con questo nome (che rappresenta il progetto) DIAPOSITIVA 15 JAVA BLUEJ Creazione di una classe CREAZIONE CLASSE Pulsante <New Class> BlueJ crea un file con questo nome DIAPOSITIVA 16 8

9 JAVA BLUEJ Creazione di una classe per eseguire codice CREAZIONE CLASSE PER ESEGUIRE CODICE DIAPOSITIVA 17 JAVA BLUEJ Creazione di una classe per eseguire codice CREAZIONE CLASSE PER ESEGUIRE CODICE DIAPOSITIVA 18 9

10 JAVA BLUEJ Creazione di una classe propriamente detta CREAZIONE CLASSE PROPRIAMENTE DETTA DIAPOSITIVA 19 JAVA BLUEJ Creazione di un oggetto CREAZIONE OGGETTO DIAPOSITIVA 20 10

11 JAVA BLUEJ Creazione di un oggetto CREAZIONE OGGETTO DIAPOSITIVA 21 JAVA Gli elementi del linguaggio 11

12 JAVA Gli elementi del Linguaggio Tipi di dato TIPI DI DATO TIPO BIT VALORI VALORI unsigned VALORE INIZIALE boolean false char 16 unicode [0; ] - \u0000 byte 8 [-128; 127] [0; 255] 0 short 16 [-2 15 ; ] [0; int 32 [-2 31 ; ] [0; ] 0 long 64 [-2 63 ; ] [0; ] 0 float 32 precisione singola 0.0 double 64 precisione doppia 0.0 void DIAPOSITIVA 23 JAVA Gli elementi del Linguaggio Operatori OPERATORI OPERATORI SIGNIFICATO Autoincremento / decremento + - * / % Aritmetici + Concatenazione ==!= > >= < <= Confronto &&! Logici = Assegnazione += -= *= /= %= Assegnazione combinati. Accesso ai membri di un oggetto /*..*/ /**..*/ //.. Commenti DIAPOSITIVA 24 12

13 JAVA Gli elementi del Linguaggio Modificatori MODIFICATORI Modificatore Applicato a Significato unsigned attributi solo valori non negativi static attributi e metodi di classe (e non di ciascun oggetto) final attributi rende la variabile costante final classe rende la classe non estendibile final metodo rende impossibile l overriding del metodo DIAPOSITIVA 25 JAVA Gli elementi del Linguaggio Modificatori MODIFICATORI Modificatore Applicato a Significato public classi, attributi e metodi visibile da tutte le classi di tutti i package private classi, attributi e metodi visibile solo nella classe protected package classi, attributi e metodi classi, attributi e metodi visibile a tutte le classi dello stesso package (sottoclassi comprese) visibile a tutte le classi dello stesso package (sottoclassi escluse) abstract metodo è un metodo senza corpo abstract synchronized classe metodo classe non istanziabile: impone a tutte le sottoclassi di implementare tutti i metodi astratti è un metodo che accede a un dato da usare in mutua esclusione DIAPOSITIVA 26 13

14 JAVA Gli elementi del Linguaggio Istruzioni condizionali ISTRUZIONI CONDIZIONALI DIAPOSITIVA 27 JAVA Gli elementi del Linguaggio Istruzioni condizionali ISTRUZIONI CONDIZIONALI DIAPOSITIVA 28 14

15 JAVA Gli elementi del Linguaggio Istruzioni Iterative ISTRUZIONI ITERATIVE DIAPOSITIVA 29 JAVA Gli elementi del Linguaggio Variabili Reference VARIABILI REFERENCE DIAPOSITIVA 30 15

16 JAVA Metodi speciali JAVA Metodi Speciali Costruttori COSTRUTTORI Il costruttore è un metodo speciale che viene invocato da Java quando viene creata una nuova istanza di un oggetto (con l operatore new). Costruttore Si usa per inizializzare tutti gli attributi della classe Ha lo stesso nome della classe Non restituisce niente Non può essere invocato esplicitamente DIAPOSITIVA 32 16

17 JAVA Metodi Speciali Finalizzatore FINALIZZATORE Sappiamo che dichiarare una variabile di un certo oggetto alloca spazio solo per il riferimento all oggetto il quale verrà realmente allocato in memoria successivamente con l operatore new. Il Garbage Collector conta i riferimenti ai vari oggetti allocati e quando il numero di riferimenti è zero libera la memoria Garbage Collector Prima di eliminare un oggetto dalla memoria Java invoca il metodo finalize(), che può essere usato per chiudere file, chiudere connessioni a DB, ecc. DIAPOSITIVA 33 JAVA Metodi Speciali equals() EQUALS() DIAPOSITIVA 34 17

18 JAVA Metodi Speciali tostring() TOSTRING() DIAPOSITIVA 35 JAVA API e package 18

19 JAVA API e Package API E PACKAGE Un package è una libreria di classi. La gerarchia di package riflette la gerarchia a livello di file system. Package Per inserire una classe in un package non basta far risiedere il file che la definisce in una certa cartella, bisogna specificare: package <nome_package>; Quando in una classe si fa uso di classi di altri package, bisogna indicarlo: import <path_package>.*; DIAPOSITIVA 37 JAVA API e Package API E PACKAGE Le API delle librerie standard di Java vengono fornite con il JRE e consentono l indipendenza dal sistema. API Le API di Java coprono le esigenze base più disparate: dalla grafica alla gestione del multi-threading; dalle classi contenitore per i tipi base (più la classe String) alle classi per la gestione della programmazione su reti. Documentazione Java 7 DIAPOSITIVA 38 19

20 JAVA Oveloading e Overriding JAVA Overloading ed Overriding OVERLOADING ED OVERRIDING Per overloading si intende la presenza nella stessa classe di più metodi con lo stesso nome ma con firme diverse. Overloading DIAPOSITIVA 40 20

21 JAVA Overloading ed Overriding OVERLOADING ED OVERRIDING Per overriding si intende la possibilità di riscrivere un metodo ereditato Overriding DIAPOSITIVA 41 JAVA La documentazione 21

22 JAVA La Documentazione LA DOCUMENTAZIONE Java offre lo strumento javadoc che interpretando il codice opportunamente commentato genera la documentazione del progetto in HTML. javadoc In BlueJ si trova in: Tools Project Documentation DIAPOSITIVA 43 JAVA La Documentazione DIAPOSITIVA 44 22

23 JAVA Gestione delle eccezioni JAVA Gestione delle eccezioni Sommario GESTIONE DELLE ECCEZIONI Classificazione degli errori La gerarchia delle classi Il blocco try-catch Propagazione dell eccezione Metodi della classe Exception DIAPOSITIVA 46 23

24 JAVA Gestione delle eccezioni Classificazione degli errori CLASSIFICAZIONE DEGLI ERRORI I seguenti eventi possono generare l arresto di un programma utente: l accesso a un vettore con un indice sbagliato il tentativo di apertura di un file che fallisce ecc. ecc. In questi casi il programma viene chiuso presentando a video un messaggio che riporta: - Il nome dell errore - La linea di codice che ha generato l errore - Lo stack dei metodi che hanno portato a quella linea di codice In alcune circostanze questo (spiacevole) comportamento si può evitare! DIAPOSITIVA 47 JAVA Gestione delle eccezioni Classificazione degli errori CLASSIFICAZIONE DEGLI ERRORI Java separa gli errori irreparabili (definiti appunto errori) da quelli che Invece non compromettono il proseguimento del programma (definiti eccezioni). Un errore potrebbe essere il malfunzionamento fisico di un dispositivo di sistema. Un errore non può essere gestito. Un eccezione potrebbe essere il tentativo di eseguire una divisione per zero. In questi casi si può pensare di gestire la situazione. DIAPOSITIVA 48 24

25 JAVA Gestione delle eccezioni Classificazione degli errori CLASSIFICAZIONE DEGLI ERRORI In un programma java quindi ci sono delle porzioni di codice che generano (sollevano) eccezioni e delle altre parti di codice che le gestiscono. Pertanto il programmatore nei confronti di una possibile eccezione può decidere di: - ignorarla - gestirla subito - gestirla altrove nel programma DIAPOSITIVA 49 JAVA Gestione delle eccezioni La gerarchia delle classi LA GERARCHIA DELLE CLASSI Le eccezioni sono organizzate in una gerarchia di classi dove la classe base è la classe Exception che viene specializzata in un certo numero di sottoclassi. DIAPOSITIVA 50 25

26 JAVA Gestione delle eccezioni Il blocco try-catch IL BLOCCO TRY-CATCH Java permette di eseguire porzioni di codice potenzialmente pericoloso in un blocco try-catch. DIAPOSITIVA 51 JAVA Gestione delle eccezioni Il blocco try-catch IL BLOCCO TRY-CATCH Nel blocco try inserisco il codice potenzialmente pericoloso che viene eseguito tutto o fino al sollevamento dell eccezione. A seguire inserisco uno o più clausole catch: ogni clausola catch è in grado di catturare una singola eccezione o una famiglia di eccezioni. Se viene sollevata un eccezione durante l esecuzione del blocco try, si valutano in ordine tutti i catch: viene eseguito solo il blocco di codice del primo catch che è in grado di gestire l eccezione verificatasi. E se l eccezione verificatasi non è gestita da alcun catch? Che senso ha avere più catch? A seguire inserisco il blocco finally che viene sempre e comunque eseguito. DIAPOSITIVA 52 26

27 JAVA Gestione delle eccezioni Propagazione dell eccezione PROPAGAZIONE DELL ECCEZIONE Un catch è in grado di gestire una condizione anomala che si è verificata in un blocco try. Nel blocco try ci possono essere tante istruzioni e anche invocazioni di metodi. BLOCCO DI CODICE invoco il metodo x METODO x invoco il metodo y METODO y istruzione Qualora nell esecuzione di un metodo venga sollevata un eccezione e non venga gestita al suo interno, questa viene propagata al metodo chiamante. DIAPOSITIVA 53 JAVA Gestione delle eccezioni Metodi della classe Exception METODI DELLA CLASSE EXCEPTION In un modulo catch viene per definizione resa disponibile un istanza di una classe Exception o di una sua sottoclasse. Possiamo usare il metodo tostring che mostra il messaggio di errore. Possiamo usare il metodo printstacktrace() ereditato da Throwable per stampare l elenco dei metodi che non hanno gestito l eccezione. DIAPOSITIVA 54 27

28 JAVA Classi astratte ed interfacce JAVA Classi Astratte e Interfacce Classi Astratte CLASSI ASTRATTE Un metodo è astratto quando viene dichiarato con il modificatore abstract che sta ad indicare quanto segue: 1) Il metodo è privo di implementazione 2) Tutte le sottoclassi devono implementare questo metodo Metodi Astratti Se una classe ha anche un solo metodo abstract è essa stessa una classe astratta. Una classe astratta non può essere istanziata ed obbliga tutte le sue sottoclassi ad implementare tutti i suoi metodi abstract. Una classe può essere dichiarata astratta anche se non ha alcun metodo astratto Classi Astratte DIAPOSITIVA 56 28

29 JAVA Classi Astratte e Interfacce Interfacce INTERFACCE Le interfacce sono il metodo con il quale Java implementa la ereditarietà multipla. Un interfaccia è un contenitore simile a una classe ma che presenta qualche limitazione: 1) tutte le variabili (se ci sono) sono per definizione public static e final 2) tutti i metodi (se ci sono) sono per definizione abstract e public Le interfacce Una classe può implementare una o più interfacce (oltre che estendere una classe) in questo caso sarà obbligata ad implementare tutti i metodi delle interfacce. DIAPOSITIVA 57 JAVA Classi Astratte e Interfacce Interfacce INTERFACCE Per esempio una classe che implementa l interfaccia predefinita Comparable è tenuta a definire il metodo int compareto (Object) il quale viene adoperato in presenza di operatori di confronto. DIAPOSITIVA 58 29

30 JAVA File e Flussi JAVA File e Flussi Sommario FILE E FLUSSI Introduzione ai flussi La gerarchia delle classi Concatenazione dei flussi Input da tastiera File di testo File di dati DIAPOSITIVA 60 30

31 JAVA File e Flussi Introduzione ai Flussi INTRODUZIONE AI FLUSSI Java gestisce tutte le operazioni di I/O con il concetto di flusso (stream in inglese) Connessione remota Tastiera Flusso di Input Programma File di dati Risorsa esterna DIAPOSITIVA 61 JAVA File e Flussi Introduzione ai Flussi INTRODUZIONE AI FLUSSI Java gestisce tutte le operazioni di I/O con il concetto di flusso (stream in inglese) Connessione remota Flusso di Output Monitor Programma File di dati Risorsa esterna DIAPOSITIVA 62 31

32 JAVA File e Flussi Introduzione ai Flussi INTRODUZIONE AI FLUSSI Java gestisce tutte le operazioni di I/O con il concetto di flusso (stream in inglese) Un flusso di byte indica la trasmissione di dati strutturati Flusso di byte Un flusso di caratteri indica la trasmissione di testi Flusso di caratteri DIAPOSITIVA 63 JAVA File e Flussi La gerarchia delle classi LA GERARCHIA DELLE CLASSI Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 64 32

33 JAVA File e Flussi Concatenazione di flussi CONCATENAZIONE DI FLUSSI In entrambe le gerarchie ci sono due classi per l input e due classi per l output. Le due classi forniscono due punti di vista sullo stesso tipo di flusso. Queste due classi di solito si usano insieme: una di seguito all altra. Flusso Basso Livello Flusso Alto Livello Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 65 JAVA File e Flussi Input da tastiera INPUT DA TASTIERA L input da tastiera è visto come un flusso di caratteri che partono dallo standard input (tastiera) ed arrivano al programma. Tastiera Flusso di Input Programma Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter DIAPOSITIVA 66 33

34 JAVA File e Flussi Input da tastiera INPUT DA TASTIERA Con la classe InputStreamReader leggo i byte dallo standard input e li codifico in caratteri utilizzando un certo charset. La classe BufferedReader gestisce per noi un buffer in modo da fornire solo dati significati (si pensi al metodo readline()). Tastiera InputStreamReader BufferedReader Programma Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter DIAPOSITIVA 67 JAVA File e Flussi Input da tastiera INPUT DA TASTIERA Con la classe InputStreamReader leggo i byte dallo standard input e li codifico in caratteri utilizzando un certo charset. La classe BufferedReader gestisce per noi un buffer in modo da fornire solo dati significati (si pensi al metodo readline()). Tastiera InputStreamReader BufferedReader Programma DIAPOSITIVA 68 34

35 JAVA File e Flussi File di testo FILE DI TESTO Flusso di Input Flusso di Output File di testo Programma File di testo Apertura in sovrascrittura (o creazione) in scrittura (o append) in lettura Chiusura Scrittura Lettura Operazioni sui file Cominciamo a studiare l operazione di lettura. DIAPOSITIVA 69 JAVA File e Flussi File di testo Lettura FILE DI TESTO: LETTURA Prima di tutto dobbiamo aprire il file in lettura. Flusso di Input File di testo Programma Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter DIAPOSITIVA 70 35

36 JAVA File e Flussi File di testo Lettura FILE DI TESTO: LETTURA Con la classe FileReader leggo i caratteri dal file. La classe BufferedReader gestisce per noi un buffer in modo da fornire solo dati significativi (si pensi al metodo readline()). FileReader BufferedReader File di testo Programma Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter DIAPOSITIVA 71 JAVA File e Flussi File di testo Lettura FILE DI TESTO: LETTURA Con la classe FileReader leggo i caratteri dal file. La classe BufferedReader gestisce per noi un buffer in modo da fornire solo dati significativi (si pensi al metodo readline()). FileReader BufferedReader File di testo Programma DIAPOSITIVA 72 36

37 JAVA File e Flussi File di testo Scrittura FILE DI TESTO: SCRITTURA Prima di tutto dobbiamo aprire il file in scrittura. Flusso di Output Programma File di testo Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter DIAPOSITIVA 73 JAVA File e Flussi File di testo Scrittura FILE DI TESTO: SCRITTURA Con la classe FileWriter scrivo fisicamente sul file. La classe PrintWriter fornisce metodi di scrittura evoluti come print() e println(). PrintWriter FileWriter Programma File di testo Object Le classi per i flussi di caratteri Reader Writer BufferedReader InputStreamReader PrintWriter OutputStreamWriter FileReader FileWriter DIAPOSITIVA 74 37

38 JAVA File e Flussi File di testo Scrittura FILE DI TESTO: SCRITTURA Con la classe FileWriter scrivo fisicamente sul file. La classe PrintWriter fornisce metodi di scrittura evoluti come print() e println(). PrintWriter FileWriter Programma File di testo DIAPOSITIVA 75 JAVA File e Flussi File di testo Scrittura FILE DI TESTO: SCRITTURA DIAPOSITIVA 76 38

39 JAVA File e Flussi File di testo Scrittura FILE DI TESTO: SCRITTURA Le apertura in scrittura di un file consentono solo le due modalità indicate: - in sovrascrittura (creazione) - in append (aggiunta in coda) In nessun caso è possibile modificare o eliminare un valore archiviato in un file. DIAPOSITIVA 77 JAVA File e Flussi File di testo File di testo per dati FILE DI TESTO PER DATI Possiamo inserire (e poi leggere) in un file di testo anche valori di tipo diverso. In lettura, una volta acquisita la stringa: 10;3.14, possiamo separare i vari campi con uno strumento che si chiama StringTokenizer. DIAPOSITIVA 78 39

40 JAVA File e Flussi File di testo File di testo per dati FILE DI TESTO PER DATI È una classe del package java.util che separa una stringa in vari token separati da un delimitatore. StringTokenizer hasmoretoken() restituisce true se ci sono altri token da estarre nexttoken() restituisce il token attuale e si sposta su quello successivo DIAPOSITIVA 79 JAVA File e Flussi File strutturati FILE STRUTTURATI Flusso di Input Flusso di Output File di dati Programma File di dati Apertura in sovrascrittura (o creazione) in scrittura (o append) in lettura Chiusura Scrittura Lettura Operazioni sui file Cominciamo a studiare l operazione di lettura. DIAPOSITIVA 80 40

41 JAVA File e Flussi File strutturati Lettura FILE STRUTTURATI: LETTURA Prima di tutto dobbiamo aprire il file in lettura. Flusso di Input File di dati Programma Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 81 JAVA File e Flussi File strutturati Lettura FILE STRUTTURATI: LETTURA Con la classe FileInputStream leggo i byte dal file. La classe ObjectInputStream formatta questi dati nel tipo richiesto: fornisce infatti metodi come readint(), readdouble(), readbool() e anche readobject() (per gli oggetti). FileInputStream ObjectInputStream File di dati Programma Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 82 41

42 JAVA File e Flussi File strutturati Lettura FILE STRUTTURATI: LETTURA Con la classe FileInputStream leggo i byte dal file. La classe ObjectInputStream formatta questi dati nel tipo richiesto: fornisce infatti metodi come readint(), readdouble(), readbool() e anche readobject() (per gli oggetti). FileInputStream ObjectInputStream File di dati Programma Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 83 JAVA File e Flussi File strutturati Scrittura FILE STRUTTURATI: SCRITTURA Prima di tutto dobbiamo aprire il file in scrittura. Flusso di Output Programma File di dati Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 84 42

43 JAVA File e Flussi File strutturati Scrittura FILE STRUTTURATI: SCRITTURA Con la classe FileOutputStream scrivo fisicamente sul file. La classe ObjectOutputStream fornisce metodi come writeint(), writedouble(), writebool() e anche writeobject() (per gli oggetti). ObjectOutputStream FileOutputStream Programma File di testo Object Le classi per i flussi di byte InputStream OutputStream FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream DIAPOSITIVA 85 JAVA File e Flussi File strutturati Scrittura FILE STRUTTURATI: SCRITTURA Con la classe FileOutputStream scrivo fisicamente sul file. La classe ObjectOutputStream fornisce metodi come writeint(), writedouble(), writebool() e anche writeobject() (per gli oggetti). ObjectOutputStream FileOutputStream Programma File di testo DIAPOSITIVA 86 43

44 JAVA File e Flussi File strutturati Scrittura FILE STRUTTURATI: SCRITTURA La classe UnaClasseQualsiasi per potere essere usata come argomento di writeobject() deve implementare l interfaccia Serializable. DIAPOSITIVA 87 JAVA Gestione del Multithreading 44

45 JAVA Gestione del Multi-threading Introduzione MULTI-THREADING Con il termine thread (processo leggero) si indicano le varie trame (o filoni) di un processo. Thread Supponiamo per esempio che un processo avvii un nuovo thread per farsi aiutare nel portare avanti un lavoro. DIAPOSITIVA 89 JAVA Gestione del Multi-threading Introduzione MULTI-THREADING Con il termine thread (processo leggero) si indicano le varie trame (o filoni) di un processo. Thread Un processo (o anche un thread) può avviare un numero imprecisato di thread. DIAPOSITIVA 90 45

46 JAVA Gestione del Multi-threading Introduzione MULTI-THREADING Con il termine thread (processo leggero) si indicano le varie trame (o filoni) di un processo. Thread Inoltre un processo potrebbe anche avviare più thread e poi morire. DIAPOSITIVA 91 JAVA Gestione del Multi-threading Introduzione MULTI-THREADING Con il termine thread (processo leggero) si indicano le varie trame (o filoni) di un processo. Thread Ovviamente non tutti i thread devono completare il lavoro loro assegnato contemporanemente DIAPOSITIVA 92 46

47 JAVA Gestione del Multi-threading Introduzione MULTI-THREADING Con il termine thread (processo leggero) si indicano le varie trame (o filoni) di un processo. Thread Il multi-threading può essere adoperato quando un processo deve svolgere diverse attività in contemporanea. Multi-threading Per esempio, quando si esegue un programma Java, in realtà si lancia il processo della JVM (java.exe) il quale lancia diversi thread: il gestore degli eventi utili alla grafica, il garbage collector, il programma utente java mandato in esecuzione, ecc. DIAPOSITIVA 93 JAVA Gestione del Multi-threading Informazioni sul thread corrente INFORMAZIONI SUL THREAD CORRENTE Cominciamo ad imparare come leggere e modificare informazioni relative al thread del programma in esecuzione ESERCIZIO DIAPOSITIVA 94 47

48 JAVA Gestione del Multi-threading La classe Thread LA CLASSE THREAD E se volessimo avviare un thread dal main? Una strada è quella di creare una nuova classe che deriva da Thread Una sottoclasse di Thread deve fare overriding del metodo run() che viene invocato dalla JVM all avvio del thread e contiene il lavoro del thread Una volta istanziata la classe possiamo avviare il thread (metodo start), fermarlo (metodo stop), e/o distruggerlo (metodo destroy). DIAPOSITIVA 95 JAVA Gestione del Multi-threading La classe Thread Un esempio monothread Margherita: i costruttori MARGHERITA: I COSTRUTTORI ESERCIZIO DIAPOSITIVA 96 48

49 JAVA Gestione del Multi-threading La classe Thread Un esempio monothread Margherita: il metodo run() MARGHERITA: IL METODO RUN() ESERCIZIO DIAPOSITIVA 97 JAVA Gestione del Multi-threading La classe Thread Un esempio monothread Margherita: uso numero 1 MARGHERITA: USO #1 ESERCIZIO DIAPOSITIVA 98 49

50 JAVA Gestione del Multi-threading La classe Thread Un esempio monothread Margherita: uso numero 2 MARGHERITA: USO #2 ESERCIZIO DIAPOSITIVA 99 JAVA Gestione del Multi-threading La classe Thread Un esempio monothread Margherita: uso numero 3 MARGHERITA: USO #3 ESERCIZIO DIAPOSITIVA

51 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita MARGHERITA E se volessimo avviare più thread dal main? Modifichiamo l esempio in modo che ogni thread stampi il suo output in una certa colonna a se intestata. DIAPOSITIVA 101 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: i costruttori MARGHERITA: I COSTRUTTORI ESERCIZIO DIAPOSITIVA

52 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: il metodo run() MARGHERITA: IL METODO RUN() ESERCIZIO DIAPOSITIVA 103 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: uso numero 1 MARGHERITA: USO #1 ESERCIZIO DIAPOSITIVA

53 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: uso numero 2 MARGHERITA: USO #2 ESERCIZIO DIAPOSITIVA 105 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: uso numero 3 MARGHERITA: USO #3 ESERCIZIO DIAPOSITIVA

54 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: uso numero 4 MARGHERITA: USO #4 ESERCIZIO DIAPOSITIVA 107 JAVA Gestione del Multi-threading La classe Thread Un esempio multi-thread Margherita: uso numero 5 MARGHERITA: USO #5 Se imposto ad un valore casuale la quantità di tempo che un thread deve aspettare prima di passare al petalo successivo ottengo un interfogliamento meno banale. ESERCIZIO DIAPOSITIVA

55 JAVA Gestione del Multi-threading L interfaccia Runnable L INTERFACCIA RUNNABLE E se la mia classe thread è già sottoclasse di qualcun altro? L ereditarietà multipla in Java si ottiene con le interfacce. Una classe che implementa l interfaccia Runnable è tenuta a implementare il metodo run(). Un oggetto di una siffatta classe può essere abbinato ad un oggetto della classe Thread. Runnable La classe Thread ha tra gli altri un costruttore che prende come argomento un riferimento ad un oggetto che implementi l interfaccia Runnable. Il riferimento all oggetto stesso this è un riferimento valido in tal senso. DIAPOSITIVA 109 JAVA Gestione del Multi-threading L interfaccia Runnable un esempio multi-thread Margherita Runnable: attributi e costruttore MARGHERITA RUNNABLE: ATTRIBUTI E COSTRUTTORE ESERCIZIO DIAPOSITIVA

56 JAVA Gestione del Multi-threading L interfaccia Runnable un esempio multi-thread Margherita Runnable: gli altri costruttori MARGHERITA RUNNABLE: GLI ALTRI COSTRUTTORI ESERCIZIO DIAPOSITIVA 111 JAVA Gestione del Multi-threading L interfaccia Runnable un esempio multi-thread Margherita Runnable: i metodi da inoltrare MARGHERITA RUNNABLE: I METODI DA INOLTRARE Il metodo run() non subisce modifche ESERCIZIO DIAPOSITIVA

57 JAVA Gestione del Multi-threading L interfaccia Runnable un esempio multi-thread Margherita Runnable: usi numeri 1 e 2 MARGHERITA RUNNABLE: USI #1 E #2 Questa classe Margherita può essere utilizzata esattamente come quella precedente che estendeva Thread. ESERCIZIO DIAPOSITIVA 113 JAVA Gestione del Multi-threading L interfaccia Runnable un esempio multi-thread Margherita Runnable: uso numero 3 MARGHERITA RUNNABLE: USO #3 Questa classe Margherita può essere utilizzata esattamente come quella precedente che estendeva Thread. ESERCIZIO DIAPOSITIVA

58 JAVA Gestione del Multi-threading L interfaccia Runnable un esempio multi-thread Margherita Runnable: uso numero 4 MARGHERITA RUNNABLE: USO #4 Questa classe Margherita può essere utilizzata esattamente come quella precedente che estendeva Thread. ESERCIZIO DIAPOSITIVA 115 JAVA Gestione del Multi-threading L interfaccia Runnable Altri usi possibili ALTRI USI DI RUNNABLE Abbiamo dichiarato un oggetto di tipo Thread nella classe Margherita e inoltrato alcuni metodi tipici. Alternativamente a ciò si potrebbe: Scrivere il solo metodo run() nella classe che implementa Runnable Nel main (o altrove) istanziare un oggetto di questa classe istanziare un oggetto di tipo Thread al quale si lega l oggetto appena istanziato fare uso dei metodi start(), stop(), getname(), ecc, dell oggetto di tipo Thread Questa soluzione induce a produrre un codice meno pulito ma in alcuni casi può risultare utile DIAPOSITIVA

59 MUTUA ESCLUSIONE Quando un dato deve essere usato in mutua esclusione da Thread diversi, i metodi che accedono a questo dato devono essere dichiarati con il modificatore synchronized Utente 1 Operatore Posti Disponibili Utente ESERCIZIO DIAPOSITIVA 117 JAVA Gestione del Networking NETWORKING DIAPOSITIVA

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Jav@Lab Il linguaggio Java I file sequenziali

Jav@Lab Il linguaggio Java I file sequenziali Jav@Lab Il linguaggio Java I file sequenziali Input e Output Secondo i canoni dei linguaggi di programmazione "procedurali" il concetto di input e output è strettamente legato al tipo di dispositivo esterno

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

Dettagli

Input/Output in Java

Input/Output in Java Corso Java Input/Output in Java Docente: Dott. Marco Bianchi Slide realizzate da Ing. A.Bei, Dott. M.Bianchi, Dott. F.Lombardi Input/Output in Java Per effettuare operazioni di I/O in Java è possibile

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Corso Android New Edition Corso Online Programmatore Android New Edition

Corso Android New Edition Corso Online Programmatore Android New Edition Corso Android New Edition Corso Online Programmatore Android New Edition Accademia Domani Via Pietro Blaserna, 101-00146 ROMA (RM) info@accademiadomani.it Programma Generale del Corso di Programmatore

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Java. Programmazione orientata agli oggetti

Java. Programmazione orientata agli oggetti Java Programmazione orientata agli oggetti Nella programmazione orientata agli oggetti (OOP), un applicazione consiste di una collezione di oggetti interagenti, ognuno dei quali comprende una struttura

Dettagli

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1 + Programmazione concorrente in Java 1 + Introduzione al multithreading 2 La scomposizione in oggetti consente di separare un programma in sottosezioni indipendenti. Oggetto = metodi + attributi finalizzati

Dettagli

Flussi, lettori e scrittori

Flussi, lettori e scrittori Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri,

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte) INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione

Dettagli

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java.

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java. Corso di Laurea in Informatica e Comunicazione Digitale a.a. 2006-2007 Interazione Uomo-Macchina Introduzione a Java Seconda Parte Irene Mazzotta Giovanni Cozzolongo Vincenzo Silvetri 1 Richiami: Java

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

Telematica II 17. Esercitazione/Laboratorio 6 Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Un flusso (stream) è una astrazione che produce e/o consuma informazioni.

Un flusso (stream) è una astrazione che produce e/o consuma informazioni. I programmi Java eseguono l I/O mediante i flussi. Un flusso (stream) è una astrazione che produce e/o consuma informazioni. Ogni flusso è collegato ad un dispositivo fisico dal sistema di I/O di java.

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI SPECIFICI DI APPRENDIMENTO Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

INTRODUZIONE INTRODUZIONE JAVA JAVA

INTRODUZIONE INTRODUZIONE JAVA JAVA INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

Proff. Fabio Ciao e Raffaele Bortone

Proff. Fabio Ciao e Raffaele Bortone ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMAZIONE ANNUALE A.S. 2014/2015 Classe IV C Informatica Proff. Fabio Ciao e Raffaele Bortone Libro di testo: Cloud

Dettagli

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Introduzione al linguaggio Java Cosa c è di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Dove trovare informazioni?

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

Laboratorio di Informatica Lezione 4

Laboratorio di Informatica Lezione 4 Laboratorio di Informatica Lezione 4 Cristian Consonni 28 ottobre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 4 1 / 42 Outline 1 Canali standard 2 Input da tastiera 3 Output 4 Esercizi (parte

Dettagli

Input e Output in Java

Input e Output in Java Input e Output in Java Stream Redirecting Scomposizione dell input Uso di file Set di caratteri 1 Inserimento dati e test Riconsideriamo la versione iniziale della classe DataSet usata per illustrare le

Dettagli

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Salerno Formazione, società operante nel settore della didattica, della formazione professionale e certificata

Dettagli

Introduzione. Java. Streams. Streams

Introduzione. Java. Streams. Streams Java il sistema di I/O G. Prencipe prencipe@di.unipi.it Introduzione La gestione del sistema di I/O è una parte fondamentale di qualsiasi linguaggio di programmazione In questa lezione approfondiremo la

Dettagli

SOMMARIO INTRODUZIONE...XV CAPITOLO 1: PRESENTAZIONE...1 CAPITOLO 2: FONDAMENTI DI JAVA...39

SOMMARIO INTRODUZIONE...XV CAPITOLO 1: PRESENTAZIONE...1 CAPITOLO 2: FONDAMENTI DI JAVA...39 sommario 24-06-2004 10:18 Pagina V SOMMARIO INTRODUZIONE.......................................XV CAPITOLO 1: PRESENTAZIONE.......................................1 1.1 Introduzione...2 1.2 L organizzazione

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Primi programmi in Java. Lezione IV

Primi programmi in Java. Lezione IV Primi programmi in Java Lezione IV Scopo della lezione Realizzare dei semplici programmi scritti in Java. Esercitarsi nelle operazioni necessarie per passare dalla scrittura di codice Java all esecuzione

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

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

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

Dettagli

INDICE. Indice. Introduzione

INDICE. Indice. Introduzione V Indice Introduzione XIII Capitolo 1 La programmazione multithread 1 1.1 Cosa sono i thread 2 Utilizzare i thread per dare una possibilità ad altri task 9 Avvio ed esecuzione dei thread 10 Esecuzione

Dettagli

Esercizi e soluzioni

Esercizi e soluzioni Esercizi e soluzioni Esercizi e soluzioni Esercizi modulo 1 Esercizio 1.a) HelloWorld Digitare, salvare, compilare ed eseguire il programma HelloWorld. Consigliamo al lettore di eseguire questo esercizio

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

Dettagli

Architettura Client-Server

Architettura Client-Server Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

Dettagli

un programma Java 2.1 Scrittura, compilazione ed esecuzione

un programma Java 2.1 Scrittura, compilazione ed esecuzione 2 Scrivere ed eseguire un programma Java Contenuto 2.1 Scrittura, compilazione ed esecuzione 2.2 La compilazione 2.3 L esecuzione 2.4 I package e la direttiva import 2.5 Cosa può andare male? 2.6 Esercizi

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

Programmazione Java Avanzata Concetti su Java

Programmazione Java Avanzata Concetti su Java Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008) Java Virtual Machine Il codice scritto in Java

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

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

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4  Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Le basi della programmazione ad oggetti: per costruire in modo adeguato una applicazione basata sulla programmazione ad oggetti occorre

Dettagli

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output Prof. Franco Zambonelli Lucidi realizzati in collaborazione

Dettagli

Iprogrammi scritti in Java sono formati da Classi che

Iprogrammi scritti in Java sono formati da Classi che Capitolo 3. Pesci e Animali Domestici Le Classi di Java Translated by Francesco Orciuoli Iprogrammi scritti in Java sono formati da Classi che rappresentano gli oggetti del mondo reale. Sebbene le persone

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

Programmazione concorrente in Java

Programmazione concorrente in Java Programmazione concorrente in Java Multithreading in Java Ogni thread e un oggetto, creato come istanza della classe java.lang.thread La classe Thread contiene tutti i metodi per gestire i threads L utente

Dettagli

Utilizzo delle classi

Utilizzo delle classi Utilizzo delle classi I metodi costruttore ed il loro utilizzo. Alcune classi di ingresso e uscita 2 Classi ed Oggetti predefiniti Oggetti predefiniti Sono presenti nel programma Non è necessario crearli

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da:

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da: Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread procede nella sua esecuzione per portare

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

2. Strutture dei Sistemi Operativi

2. Strutture dei Sistemi Operativi 1 2. Strutture dei Sistemi Operativi Quali servizi un generico sistema operativo mette a disposizione degli utenti, e dei programmi che gli utenti vogliono eseguire? interfaccia col sistema operativo stesso

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

LICEO SCIENTIFICO LEONARDO DA VINCI - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Modulo 1: Introduzione all informatica Fondamenti di teoria della elaborazione

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

789:;<:' .&+/"0&12%34%5&66+,("%3787%% %"+&%88$77%9%8:$:7%% ;<'&12%8%=,+>"%3787 % % % %"+&%88$77%9%8:$:7%

789:;<:' .&+/0&12%34%5&66+,(%3787%% %+&%88$77%9%8:$:7%% ;<'&12%8%=,+>%3787 % % % %+&%88$77%9%8:$:7% !"#$"%&'()')*+'!"#$%!&'()%*&++,+&-%%!"#$%&'"(()("*+,#$'"&$-. 789:;"%3787 % % % %"+&%88$77%9%8:$:7%?("'(%)"'"%'&0% 0,6"+,@"+("%1(%A'5"+=,B/,%C+,'1&$%

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

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione.

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione. pag.112 9. Input e output Nell informatica classica il concetto di input e output era strettamente legato all uso dei dispositivi esterni di memorizzazione (dischi, nastri) e quindi al concetto di file,

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

Introduzione alla programmazione in Java

Introduzione alla programmazione in Java Introduzione alla programmazione in Java 1 Programmare ad oggetti La programmazione come attività di creazione di modelli. I concetti di classe, oggetto e scambio di messaggi. Un primo esempio di programma

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

Operazioni di scrittura e lettura con periferici in linguaggio Java

Operazioni di scrittura e lettura con periferici in linguaggio Java Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI IL LINGUAGGIO JAVA Dispense per il corso di laboratorio di sistemi I.T.I.S. ABACUS A.S. 2008/2009 Autore: Roberto Amadini Testo di riferimento: La programmazione ad oggetti C++ Java (Lorenzi, Moriggia,

Dettagli