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

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

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

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

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

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

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

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

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

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

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

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

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

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

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

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

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

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

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

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

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

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

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

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

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili 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 Corso di

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette

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

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

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

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

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

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

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

LABORATORIO DI INFORMATICA 1 2014-2015. - parte 6 -

LABORATORIO DI INFORMATICA 1 2014-2015. - parte 6 - LABORATORIO DI INFORMATICA 1 2014-2015 - parte 6 - Lettura da File Obiettivo: leggere un file Per prima cosa dobbiamo creare un oggetto che rappresenti il file che vogliamo utilizzare (inserendo anche

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Conclusioni Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

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

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

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Java Servlet Parte a versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

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

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD Introduzione alla programmazione Java Dott. Ing. M. Banci, PhD Obiettivi del corso Creare, compilare, e eseguire programmi Java Tipi di dato primitivi Flusso di controllo Java Metodi Arrays Introduzione

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

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

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

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

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

4. Un ambiente di sviluppo per Java

4. Un ambiente di sviluppo per Java pag.15 4. Un ambiente di sviluppo per Java Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori Java, in particolare si tratta di editor complessi che mettono a disposizione tools

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

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

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

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA" V i a A n g e l o Ma j, 1 2 4 1 2 1 B E R G A M O 035 237502 Fax: 035 236331 Sito e contatti: www.liceolussana.com Codice fiscale: 80026450165 PROGRAMMA SVOLTO

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

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

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

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

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

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

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Prova di Laboratorio di Programmazione

Prova di Laboratorio di Programmazione Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare

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

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

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

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

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

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

Adobe Flash CS5.5 e Web Animation. Lezione 7: introduzione ad ActionScript 3.0, livelli guida, realizzazione di un player audio in streaming

Adobe Flash CS5.5 e Web Animation. Lezione 7: introduzione ad ActionScript 3.0, livelli guida, realizzazione di un player audio in streaming Adobe Flash CS5.5 e Web Animation Lezione 7: introduzione ad ActionScript 3.0, livelli guida, realizzazione di un player audio in streaming Cos è ActionScript ActionScript è il linguaggio di programmazione

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

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

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

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Informatica 3 Lezione 7 -

Dettagli

Eclipse - Nozioni Base

Eclipse - Nozioni Base Eclipse - Nozioni Base 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

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Introduzione all uso di Eclipse

Introduzione all uso di Eclipse Introduzione all uso di Eclipse Daniela Micucci Programmazione Outline Eclipse: concetti generali Definire un workspace Creare un project Importare un file Utilizzo 1 Introduzione Eclipse è un ambiente

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

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

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