Corso di Telematica II A.A CdL in Ingegneria Informatica CdL in Ingegneria delle Telecomunicazioni e dell Automazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Telematica II A.A. 2006-2007. CdL in Ingegneria Informatica CdL in Ingegneria delle Telecomunicazioni e dell Automazione"

Transcript

1 CdL in Ingegneria Informatica CdL in Ingegneria delle Telecomunicazioni e dell Automazione Corso di Telematica II A.A di 140

2 A.A Storia di Java Nel 1991 Sun Microsystems avviò un progetto, chiamato Green, per sviluppare software per dispositivi a microprocessore per l elettronica l di consumo (set-top top box, palmari, elettrodomestici, ) Il prodotto di questo progetto fu un linguaggio che il suo creatore, James Gosling,, chiamò Oak. Successivamente fu ribattezzato Java Dato che il mercato dell elettronica elettronica di consumo non si sviluppò nei modi previsti, Sun decise di orientare il suo nuovo linguaggio alla creazione c di pagine web dinamiche Nel Maggio 1995 Sun annunciò ufficialmente il nuovo linguaggio Java, J che fu supportato dal browser Netscape Navigator Attualmente Java, giunto alla seconda edizione, viene utilizzato oltre che per creare pagine web dinamiche ed interattive (applet), per applicazioni aziendali (J2EE), per estendere i web server (servlet), per programmare rammare cellulari e palmari (J2ME) 2 di 140

3 A.A Il linguaggio Java General-purpose Object oriented Strongly-typed typed Concurrent Platform-independent (write once, run everywhere ) 3 di 140

4 A.A Sviluppo di un applicativo Java bytecode javac Hello World! Virtual Machine Operating System 4 di 140

5 A.A La piattaforma Java 5 di 140

6 A.A Versioni di Java J2SE Java 2 Standard Edition Applicazioni desktop J2EE Java 2 Enterprise Edition Applicazioni server J2ME Java 2 Micro Edition Applicazioni per Smartphone/PDA Javacard Applicazioni per smartcard 6 di 140

7 A.A Tipologia di applicazioni Java Applicazioni stand-alone alone Applicazioni in grado di girare autonomamente,, senza l ausilio l di altri ambienti Applet Applicazioni integrate in una pagina web Servlet Applicazioni eseguite da un application server (Tomcat, BEA Weblogic, ) Midlet Applicazioni eseguite su un dispositivo mobile (palmare, cellulare, ) 7 di 140

8 A.A Object Oriented Programming (OOP) Il mondo reale è fatto di oggetti : persone, animali, piante, automobili, aerei, computer, Ciascun oggetto è caratterizzato da: attributi o proprietà (dimensione, forma, colore, peso, ) comportamenti o metodi (un bambino piange, dorme, cammina; una automobile accelera, frena, sterza) 8 di 140

9 A.A Oggetti software La progettazione orientata agli oggetti modella gli oggetti del mondo reale Un oggetto è una specifica entità del dominio del problema da modellare caratterizzata da: identità comportamento stato Un programma può essere pensato come costituito da un insieme di oggetti che interagiscono tra di loro allo scopo di risolvere un problema 9 di 140

10 A.A Esempi di oggetti Ferrari F430 Cilindrata: 43 Potenza: 490 Stato: spento Accendi() Spegni() Accelera() Porsche 911 Carrera Cilindrata: 3596 Potenza: 325 Stato: acceso Accendi() Spegni() Accelera() 10 di 140

11 A.A Classi Oggetti che hanno le stesse caratteristiche e lo stesso comportamento possono essere raggruppati in classi. I membri di una classe condividono gli stessi metodi,, ma ciascun membro ha un proprio stato. 11 di 140

12 A.A Esempio di classi ed istanze Automobile Cilindrata: int Potenza: int Stato: boolean Accendi() Spegni() Accelera() istanzia Porsche 911 Carrera: : Automobile Cilindrata: 3596 Potenza: 325 Stato: acceso Accendi() Spegni() Accelera() 12 di 140

13 A.A Interfaccia Si può pensare ad un oggetto come provider di servizi Le richieste che possono essere fatte ad un oggetto sono definite dalla sua interfaccia Il codice per soddisfare la richiesta, insieme ai dati nascosti, rappresenta l implementazione 13 di 140

14 A.A Esempio di interfaccia Automobile richieste implementazione interfaccia Accendi() Spegni() Accelera() Frena() Sterza() 14 di 140

15 A.A Information hiding Secondo il paradigma OOP i programmatori possono essere suddivisi in due categorie: Creatori di nuove classi Utilizzatori di classi esistenti L obiettivo dei creatori di nuove classi deve essere quello di rendere nota solamente l interfaccia l agli utilizzatori, nascondendo l implementazione In questo modo il creatore della classe può modificare l implementazione, senza che gli utilizzatori debbano cambiare il loro codice 15 di 140

16 A.A Riutilizzo del codice Una volta che è stata creata e testata, una classe rappresenta una unità di codice utile alla risoluzione di un problema Il modo più semplice di riutilizzo è la composizione : si definisce un oggetto di una classe come membro di un altra classe Automobile Motore Cambio 16 di 140

17 A.A Ereditarietà Quando è necessario specializzare il comportamento di una classe, aggiungendone delle funzionalità,, si può ricorrere all ereditarietà Automobile Coupè Cabriolet 17 di 140

18 A.A Ereditarietà (2) La classe derivata (o sottoclasse) eredita le caratteristiche ed il comportamento della classe base (o superclasse) Automobile Accendi() Spegni() Accelera() Cabriolet Accendi() Spegni() Accelera() ApriCapote() ChiudiCapote() 18 di 140

19 A.A Diagramma di sequenza Ferrari F430 MotoreV8 CambioF1 tempo Folle() Accendi() InserisciMarcia() Accelera() regime:int StaccaFrizione() 19 di 140

20 A.A OOP in Java Java è un linguaggio object oriented che consente di implementare un sistema progettato secondo i metodi dell Object Oriented Design (OOD) In linguaggi procedurali come il C, l unitl unità di programmazione è la funzione In Java l unitl unità di programmazione è la classe,, da cui possono essere istanziati oggetti 20 di 140

21 A.A Il primo programma Java /* * file : Hello.java * scopo: visualizzare un messaggio */ /** * Questa classe visualizza un messaggio di benvenuto. * */ public class Hello { /** * metodo di avvio dell applicazione. * args argomenti passati tramite la linea di comando */ public static void main(string[] args) { } } // stampa un messaggio a video System.out.println( Hello world! ); 21 di 140

22 A.A Commenti Su una singola linea // questo è un commento su una linea singola Su linee multiple /* commento su linee multiple */ Javadoc /** commento usato per generare la documentazione con javadoc */ 22 di 140

23 A.A JavaDoc JavaDoc nacque come strumento interno utilizzato dai ricercatori della Sun che stavano lavorando alla creazione del linguaggio Java e delle sue librerie la grande mole di sorgenti fece pensare alla creazione di un tool per la generazione automatica di documentazione HTML la creazione e manutenzione di un gran numero di pagine web richiese l'aiuto di un sistema automatico per la gestione dei riferimenti incrociati fra classi e gli inevitabili errori di battitura JavaDoc nacque quindi per permettere ai programmatori di inserire dei frammenti HTML nei commenti (ignorati quindi dal compilatore) con le prime versioni si potevano inserire le descrizioni di ogni i classe e dei suoi metodi, nonché il significato dei parametri e delle variabili membro 23 di 140

24 A.A JavaDoc (2) /** * descrizione della classe * autore versione */ public class DocTest { /** descrizione dell attributo */ public int i; } /** * descrizione del metodo * nome_parametro descrizione valore di ritorno */ public void f(int p1) Descrizione Nome dello sviluppatore classe e/o metodo destinati a scomparire in future versioni eccezione generata da un metodo collegamento ipertestuale a documentazione locale e non parametri di un metodo (richiesto per ogni parametro) valori di ritorno di un metodo (non va usato per metodi o costruttori che restituiscono void ) associazione a un altro metodo o classe data di aggiunta di un metodo a una classe sinonimo introdotto in Javadoc 1.2 numero di versione di una classe o un metodo 24 di 140

25 A.A Coding style I nomi delle classi devono iniziare con una lettera maiuscola Metodi, variabili, attributi devono iniziare con una lettera minuscola I nomi composti vengono dichiarati secondo la convenzione CamelCase : le parole vengono riportate per esteso in minuscolo, una di seguito all altra, altra, utilizzando un carattere maiuscolo come lettera iniziale di ogni parola NomeClasse nomevariabile nomemetodo() 25 di 140

26 A.A La keyword class Ogni programma Java consiste di almeno una classe Per definire una nuova classe si usa la keyword class: public class Hello { Lo specificatore public indica che la classe è visibile dall esterno Il codice va salvato in un file con lo stesso nome della classe ed estensione.java 26 di 140

27 A.A Il metodo main Un applicazione Java comincia l esecuzione l dal metodo chiamato main La definizione di questo metodo deve essere: public static void main(string String[] args) public indica che il metodo è visibile dall esterno. I metodi statici si possono richiamare senza creare un istanza della classe: Classe.metodoStatico.metodoStatico(); La keyword void indica che il metodo non restituisce alcun valore in output Segue (tra parentesi tonde) la lista dei parametri accettati dal metodo: in questo caso un array di stringhe Per Per adoperare adoperare il il metodo metodo di di una una classe classe occorre occorre sempre sempre istanziarla. istanziarla. Questa Questa può può essere essere una una limitazione limitazione per per alcune alcune procedure procedure che che si si limitano limitano a a ricevere ricevere un un input input e e produrre produrre un un output, output, senza senza che che debba debba essere essere memorizzato memorizzato uno uno stato stato (funzioni). (funzioni). E E possibile possibile dichiarare dichiarare metodi metodi in in modo modo che che non non richiedano richiedano una una istanza istanza per per essere essere utilizzati: utilizzati: si si tratta tratta dei dei metodi metodi statici statici 27 di 140

28 A.A Metodo di stampa a video Per stampare un messaggio a video, si usa l oggetto l predefinito System.out,, che permette la stampa a video di messaggi Per richiamare un metodo di un oggetto si usa la notazione puntata (dot notation): oggetto.metodo(); System.out ha il metodo println() che stampa un messaggio a video, andando a capo System.out.println( Hello world! ); 28 di 140

29 A.A Compilazione ed esecuzione Per compilare il file Hello.java: javac Hello.java Se non viene dato nessun messaggio d errore, d verrà creato il corrispondente file.class Per eseguire il programma: java Hello 29 di 140

30 A.A Tipi di dato primitivi Interi Reali Caratteri Booleani byte short float double int long 30 di 140

31 A.A Range dei tipi di dato Tipo Dim (bit) Min Max boolean char 16 Unicode 0 Unicode byte short int long float * *10 38 double * * di 140

32 A.A Operatori aritmetici Operazione Java Operatore Espressione algebrica Espressione Java Addizione + a+b a+b Sottrazione - p-c p-c Moltiplicazione * bm b*m Divisione / x/y x/y Modulo % r mod s r%s Autoincremento ++ x=x+1 x++ Autodecremento -- x=x-1 x-- 32 di 140

33 A.A Operatori relazionali Operatore Significato Esempio < <= Minore di Minore o uguale a a < b a <= b > <= Maggiore di Maggiore o uguale di a > b a >= b ==!= Uguale Diverso a == b a!= b 33 di 140

34 A.A Operatori logici Operatore Significato Esempio && And logico (x<a) && (x>b) Or logico (x<0) (x>c)! Not logico!x 34 di 140

35 A.A Operatori sui bit Operatore Significato Esempio & And bit a bit a&0x01 Or bit a bit a 0x01 ~ Not (complemento a 1) ~x ^ Xor bit a bit a^0x01 << Shift a sinistra x<<8 >> Shift a destra x>>8 35 di 140

36 A.A Istruzioni Java Istruzione Dichiarativa Imperativa Semplice Strutturata assegnazione continue blocco iterativa return break condizionale 36 di 140

37 A.A Istruzioni dichiarative Dichiarazione di variabile: tipo nomevar [=val]; int numerocilindri; float cilindrata = f; Dichiarazione di costante: final tipo NOMECOSTANTE = val; final double RAGGIO = 3.0; 37 di 140

38 A.A Istruzioni semplici Assegnazione var = valore; raggio = 2.0f; var = espressione; Espressioni Variabili Costanti Operatori area = PI*raggio*raggio; areatriangolo = (base*altezza)/2; 38 di 140

39 A.A Condizioni booleane Rappresentano il risultato di espressioni più o meno complesse Producono un risultato di tipo vero/falso Si possono usare tutti gli operatori relazionali e logici Esempi: (x>=10 && x<=100) (X==7 x==8) 39 di 140

40 A.A Istruzione condizionale if if(condizione) istruzione; if(condizione) istruzione1; else istruzione2; if(condizione1) istruzione1; else if(condizione2) istruzione2; else if(condizione3) istruzione3; else istruzione4; istruzione può essere sia una singola istruzione che un blocco di istruzioni, racchiuse tra parentesi graffe 40 di 140

41 A.A Istruzione condizionale switch switch(espressione) { case val_1: istruz_1_a; istruz_n_a; break; case val_n: istruz_1_b; istruz_n_b; break; } default: istruz_1_d; istruz_n_d; break; L espressione deve essere di uno dei seguenti tipi: long, int, byte, short, char 41 di 140

42 A.A Istruzioni iterative while while(espr_booleana) istruzione L istruzione viene eseguita ripetutamente finché l espressione booleana risulta vera (ciclo a condizione iniziale) do-while do istruzione while(espr_booleana); L istruzione istruzione viene eseguita almeno una volta, mentre con while può non essere mai eseguita (ciclo a condizione finale) istruzione può essere sia una singola istruzione che un blocco di istruzioni, racchiuse tra parentesi graffe 42 di 140

43 A.A Istruzioni iterative (2) for for(init; boolean_expr; step) istruzione Prima della prima iterazione viene eseguita l istruzione l di inizializzazione; quindi viene effettuato il test sulla condizione booleana; se è vera viene eseguita l istruzione l e quindi l istruzione l step; altrimenti l esecuzione l passa all istruzione successiva al for (cicli( enumerativi) Esempio: for(int i=0; i<100; i++) System.out.println( n= n= +i); 43 di 140

44 A.A Metodi I metodi consentono di rendere modulare un programma Vantaggi della modularizzazione: Manutenibilità Riutilizzo del codice Compattezza (si evitano ripetizioni di frammenti di codice) 44 di 140

45 A.A Dichiarazione di un metodo outputtype nome(type1 param1,type2 param2,,typen paramn) { istruzione1; istruzionen; } return outputval; param1,param2, paramn paramn sono detti parametri formali Il tipo speciale void indica che il metodo non restituisce alcun valore 45 di 140

46 A.A Chiamata di un metodo Un metodo può essere richiamato solo in riferimento ad un dato oggetto, usando la seguente sintassi: nomeoggetto.nomemetodo(arg1,arg2, (arg1,arg2,, argn); int x = a.fa.f(); Spesso, nel gergo dell OOP, ci si riferisce alla chiamata di un metodo di un oggetto nel senso di inviare un messaggio ad un oggetto 46 di 140

47 A.A Passaggio dei parametri by value Il valore del parametro attuale viene copiato nel corrispondente parametro formale. Qualsiasi modifica ai parametri formali non altererà il valore dei parametri attuali public void m1() { int a=5; m2(a); System.out.println(a); } public void m2(int i) { i=10; } Per default tutte le variabili dei tipi primitivi (int( int,, float, )) vengono passate by value 47 di 140

48 A.A Passaggio dei parametri by reference Il metodo chiamato ha la possibilità di accedere direttamente ai dati del chiamante ed eventualmente modificarli public void m1() { int[] a=new int[5]; a[0]=1; m2(a); System.out.println(a[0]); } public void m2(int[] i) { i[0]=10; } Per default tutti gli array e gli oggetti vengono passati by reference erence 48 di 140

49 A.A Array Un array è una struttura dati composta da elementi dello stesso tipo Dichiarazione: tipo[] nome = new tipo[dim]; Esempio: int[] vett = new int[10]; L operatore new alloca la memoria per l array 49 di 140

50 A.A Gestione della memoria Viene utilizzato l operatore l new per allocare memoria per un oggetto La pulizia della memoria da oggetti non più utilizzati viene svolta automaticamente dal Garbage Collector della JVM Non appena la memoria scende al di sotto di una certa soglia, viene invocato il Garbage Collector, che va in cerca di tutti gli oggetti non più referenziati e li distrugge, liberando la memoria da essi occupata 50 di 140

51 A.A Gestione della memoria(2) Prima dell intervento del Garbage Collector: Dopo l intervento l del Garbage Collector: 51 di 140

52 A.A Inizializzazione di un array E possibile inizializzare un array con una lista di valori: int n[] = {1,2,3,4,5}; Per default gli elementi degli array dei tipi primitivi sono inizializzati a 0 oppure false per i boolean La lunghezza di un array è memorizzata nell attributo length: dim = n.lentgh; 52 di 140

53 A.A Stringhe Vengono gestite dalla classe String Questa classe ha ben 9 tipi di costruttori, qui vengono mostrati i più comuni: String s = new String(); String s = new String( hello hello ); String s1 = new String(s); String s2 = Ciao ; I I costruttori costruttori sono sono metodi metodi speciali speciali chiamati chiamati quando quando viene viene creata creata una una nuova nuova istanza istanza di di classe classe e e servono servono ad ad inizializzare inizializzare lo lo stato stato iniziale iniziale dell oggetto. dell oggetto. Questi Questi metodi metodi hanno hanno lo lo stesso stesso nome nome della della classe classe di di cui cui sono sono membro membro e e non non restituiscono restituiscono nessun nessun tipo. tipo. Se Se una una classe classe non non è è provvista provvista di di costruttore, costruttore, Java Java ne ne utilizza utilizza uno uno speciale speciale di di default default senza senza caratteristiche caratteristiche specifiche. specifiche. Dal Dal momento momento che che il il linguaggio linguaggio garantisce garantisce la la chiamata chiamata al al costruttore costruttore ad ad ogni ogni instanziazione instanziazione di di un un oggetto, oggetto, un un costruttore costruttore scritto scritto correttamente correttamente garantisce garantisce che che tutti tutti i i dati dati membro membro vengano vengano inizializzati. inizializzati. 53 di 140

54 A.A Metodi per la manipolazione di stringhe int length() restituisce il numero di caratteri componenti boolean equals(string s2) confronta due stringhe int indexof(string s2) ricerca la sottostringa s2, restituendone l indice l oppure -11 se questa non è presente String substring(int int beginindex,int int endindex) estrae una sottostringa di indici iniziali e finali beginindex,endindex endindex 54 di 140

55 A.A Tipi di dato astratto (ADT) Implementiamo, tramite una classe, un nuovo tipo di dato per memorizzare il tempo nel formato HH:MM:SS import java.text.decimalformat; public class Time1 { Definire Definire un un ADT ADT significa significa specificare: specificare: private int hour; 1. private int minute; 1. Nome Nome dell ADT dell ADT 2. private int second; 2. Costruttori: Costruttori: insieme insieme delle delle modalità modalità con con cui cui definire definire (creare) (creare) i i valori valori dell ADT public Time1() { dell ADT 3. settime(0,0,0); 3. Funzioni: Funzioni: insieme insieme delle delle signature signature } di di funzioni funzioni (operatori) (operatori) usate usate per per manipolare manipolare i i valori valori dell ADT dell ADT public void settime(int int h,int m,int s) { Assiomi Assiomi hour = (h>=0 && h<24)? h : 0; regole regole per per definire definire il il minute = (m>=0 && m<60)? m : 0; significato significato (semantica) (semantica) delle delle second = (s>=0 && s<60)? s : 0; funzioni funzioni } sono sono regole regole di di riscrittura, riscrittura, trasformazione trasformazione public String tostring() { DecimalFormat twodigits = new DecimalFormat( ); } } return twodigits.format(hour) + : + twodigits.format(minute) + : +twodigits.format(second)+(hour<12? +twodigits.format(second)+(hour<12? AM : PM ); 55 di 140

56 A.A Modificatori di accesso Gli attributi o i metodi dichiarati con la keyword public sono accessibili da ogni parte del programma Gli attributi o i metodi dichiarati con la keyword private sono accessibili solo da metodi della stessa classe: private int hour; private int minute; E buona norma di progettazione dichiarare private tutti gli attributi di una classe, permettendo l accesso l tramite degli appositi metodi; in questo modo si può controllare la validità dei valori da assegnare agli attributi 56 di 140

57 A.A Costruttore E uno speciale metodo che ha lo stesso nome della classe ed è privo del valore di ritorno Ha lo scopo di inizializzare gli attributi di un oggetto durante la fase di creazione public class Punto { double x,y; }; public Punto(double x0,double y0) { x=x0; y=y0; } Viene invocato quando si crea un oggetto tramite l operatore l new Punto p1 = new Punto(1.0,-1.5); 1.5); 57 di 140

58 A.A Overloading All interno di una classe è possibile definire più volte un metodo con lo stesso nome, in modo da adeguarlo a contesti di utilizzo differenti Due metodi possono avere lo stesso nome a patto di: Avere lo stesso tipo di ritorno Differire per numero e tipo dei parametri formali Il costruttore non è altro che un metodo, quindi è possibile fare overloading: public Time1(int int h) { settime(h,0,0); } public Time1(int int h,int m) { settime(h,m,0); } 58 di 140

59 A.A Creazione di oggetti Per poter utilizzare la classe Time1,, creiamo un altra classe TimeTest: public class TimeTest { } public static void main(string args[]) { Time1 time = new Time1(); time.settime(13,27,6); System.out.println( Time: +time.tostring()); } 59 di 140

60 A.A Creazione di oggetti (2) Per creare un nuovo oggetto della classe Time1: Time1 time = new Time1(); L operatore new alloca la memoria per il nuovo oggetto della classe Time1. Quindi richiama il costruttore della classe Time1 per inizializzarne gli i attributi. Infine collega l oggetto appena creato con il reference time Digitando: Time1 time; si crea un reference ad un oggetto di classe Time1, che non è collegato a nessun oggetto. Di conseguenza se si prova a richiamare un metodo, si riceverr iceverà un messaggio d errore 60 di 140

61 A.A Metodi set/get Gli attributi privati di una classe possono essere manipolati solo da metodi della stessa classe Per assegnare un valore ad un attributo, o per ottenerne il valore, si creano dei metodi pubblici, chiamati rispettivamente setattributo(), getattributo(); ad esempio: public void sethour(int h) { hour = (h>=0 && h<24)? h : 0; } public int gethour() { return hour; } 61 di 140

62 A.A Composizione Una forma di riutilizzo del codice è la composizione, in cui una classe ha come attributi dei reference ad oggetti di altre classi Esempio: public class AlarmClock { private Time1 alarmtime; in questo caso la classe AlarmClock ha come attributo un oggetto della classe Time1 62 di 140

63 A.A This reference Ogni oggetto ha accesso ad un reference a se stesso, chiamato this,, tramite il quale si può accedere sia agli attributi che ai metodi Esempio: public class Time1 { int hour,minute,second; } public Time1(int int hour,int minute,int int second) { this.hour = hour; this.minute = minute; this.second = second; } i nomi dei parametri sono uguali a quelli degli attributi. Si usa a il reference this per riferirsi a questi ultimi 63 di 140

64 A.A Attributi statici Ciascun oggetto di una data classe ha una propria copia degli attributi Ci sono casi in cui si vuole che una sola copia di un attributo sia condivisa tra tutte le istanze della classe In questo caso si dichiara tale attributo statico : static int count; Attraverso Attraverso la la parola parola riservata riservata static static è è possibile possibile specializzare specializzare alcune alcune proprietà proprietà o o metodi metodi appartenenti appartenenti ad ad una una classe. classe. In In particolare, particolare, se se una una proprietà proprietà è è preceduta preceduta dalla dalla parola parola static, static, tale tale proprietà proprietà (il (il suo suo valore) valore) si si intenderà intenderà come come una una proprietà proprietà di di classe classe e e non non solo solo di di una una determinata determinata istanza istanza di di essa. essa. Una Una eventuale eventuale modifica modifica al al valore valore di di una una proprietà proprietà di di classe classe verrebbe verrebbe automaticamente automaticamente avvertita avvertita da da tutte tutte le le istanze istanze esistenti esistenti di di tale tale classe. classe. Analogamente, Analogamente, un un metodo metodo static static è è considerato considerato un un metodo metodo appartenente appartenente ad ad una una classe. classe. 64 di 140

65 A.A Package Un package è una collezione di classi I principali benefici derivanti dall uso di package sono: Riutilizzo del codice Garantiscono l unicitl unicità del nome di una classe Con il JDK vengono forniti una serie di package per le funzionalit ità più comuni: I/O, grafica, networking,, suono, 65 di 140

66 A.A Creazione di un package Aggiungere prima della dichiarazione di una classe: package it.poliba.sisinflab; Compilare con: javac d d. Time1.java L opzione d dice al compilatore di creare le directory specificate nel nome del package a partire da quella corrente. In questo caso sarà creata una directory it,, contenente la directory poliba,, contenente sisinflab che conterrà il file Time1.class 66 di 140

67 A.A Visibilità a livello package Nella dichiarazione di attributi o di classi, se non si specifica a nén public né private, la visibilità è da intendersi a livello di package Esempio: package it.poliba.prova; class Prova { int nome; } in questo caso la classe Prova e il suo attributo nome sono visibili solo dalle altre dello stesso package 67 di 140

68 A.A Uso di un package Per poter utilizzare le classi contenute in un package in un altra classe esterna a tale package, si usa la keyword import: import it.poliba.sisinflab.*; questa istruzione importa tutte le classi del package specificato 68 di 140

69 A.A Classpath Il compilatore Java cerca le classi da linkare: prima in quelle standard fornite insieme al J2SDK poi nella directory ext di tale Software Development Kit infine nei percorsi specificati tramite la variabile d ambiente d classpath Per default la variabile classpath contiene solo la directory corrente. Se si devono usare package contenuti in altre directory, si deve aggiungere il percorso a tale variabile d ambiente: d CLASSPATH=c: c:\mypackages; 69 di 140

70 A.A File jar Quando un applicazione Java è composta da molte classi, è possibile raggruppare i files.class in un archivio compresso, di estensione.jar In ogni archivio jar è presente un file chiamato MANIFEST.MF che contiene informazioni sul contenuto dell archivio Il file MANIFEST è un file di testo composto da coppie attributo-valore, ad esempio: Manifest-version: 1.0 Created-By: NetBeans IDE Main-class: ServerMain Per creare un archivio si usa il comando jar: jar cvmf MANIFEST.MF archivio.jar input-files Un Un Integrated Integrated Development Development Environment Environment (IDE), (IDE), in in italiano italiano ambiente ambiente integrato integrato di di sviluppo, sviluppo, (anche (anche Integrated Integrated Design Design Environment Environment o o Integrated Integrated Debugging Debugging Environment) Environment) è è un un software software che che aiuta aiuta i i programmatori programmatori nello nello sviluppo sviluppo del del software. software. Normalmente Normalmente consiste consiste in in un un editor editor di di codice codice sorgente, sorgente, un un compilatore compilatore e/o e/o un un interprete, interprete, un un tool tool di di building building automatico automatico e e (solitamente) (solitamente) un un debugger. debugger. 70 di 140

71 A.A File jar Opzione c t u x [nomefile[ nomefile] f v Descrizione Crea un archivio nuovo o vuoto aggiungendovi i file. Se uno qualsiasi dei nomi indicati è una directory questa viene elaborata in modo ricorsivo Visualizza il contenuto dell archivio Aggiorna un file jar esistente Estrae i file. Se se ne indicano i nomi vengono estratti solo i file corrispondenti Specifica il nome del file jar come secondo argomento del comando. Se manca questo flag,, il comando jar riporta il risultato nell output standard (se si sta creando un file.jar)) oppure legge dall input standard (se si sta estraendo o visualizzando un file.jar) Genera un output verboso m 0 Memorizza senza compressione Aggiunge un manifest ad un file.jar. Ogni archivio ha un manifesto predefinito, ma si può anche indicare un proprio manifesto se si vuole autenticare il contenuto dell archivio M I C Non crea un file di manifesto per queste voci Crea un file indice Cambia temporaneamente la directory di destinazione 71 di 140

72 A.A Ereditarietà E una forma di riutilizzo del software in cui una nuova classe viene creata a partire da una esistente, ereditandone gli attributi ed i metodi, ed aggiungendone di nuovi, per specializzarne il comportamento Il vantaggio è che non è necessario disporre del codice sorgente di una classe per poterla estendere 72 di 140

73 A.A Superclasse e sottoclasse Classe base (superclasse): public class Biciclo { public void sterza() {}; public void frena() {}; public void avvia() {}; } private Color colore; Classe derivata (sottoclasse): public class Ciclomotore extends Biciclo { public accendimotore() {}; } private String targa; private float cilindrata; 73 di 140

74 A.A Gerarchia di classi 74 di 140

75 A.A Membri protected Gli attributi e i metodi di una classe dichiarati con lo specificatore catore di accesso protected sono visibili soltanto dalle sue sottoclassi public ClasseBase { protected int attr1; } public ClasseDerivata extends ClasseBase { } public ClasseDerivata() { attr1=0; } 75 di 140

76 A.A Costruttori nelle classi derivate Quando viene istanziato un oggetto di una classe derivata, deve essere richiamato il costruttore della superclasse per inizializzare zare gli attributi ereditati Per default viene richiamato il costruttore standard della superclasse Se si vuole specificare un particolare costruttore, si usa la keyword super: super(x,y (x,y); 76 di 140

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

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

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

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

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

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

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

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

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Programmazione di rete in Java

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

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

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

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

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

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

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

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

Dettagli

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Scuola Specializzazione Istruzione Superiore Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Michele Batocchi ITC Vittorio Emanuele II Perugia A.S. 2007/2008 Introduzione

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

Generalizzazione di funzioni e di classi. Macro come funzioni generiche Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

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

Dettagli

1 EJB e Portal Component Object http://desvino.altervista.org

1 EJB e Portal Component Object http://desvino.altervista.org 1 EJB e Portal Component Object http://desvino.altervista.org In questo tutorial studiamo come sfruttare la tecnologia EJB, Enterprise JavaBean, all interno del SAP Netweaver Portal. In breve, EJB è un

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Progettazione Orientata agli Oggetti

Progettazione Orientata agli Oggetti Progettazione Orientata agli Oggetti Sviluppo del software Ciclo di vita del software: comprende tutte le attività dall analisi iniziale fino all obsolescenza (sviluppo, aggiornamento, manutenzione) Procedimento

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Riferimenti ed Oggetti

Riferimenti ed Oggetti Riferimenti e oggetti Riferimenti ed Oggetti In non si possono definire variabili di tipo oggetto ma solo di tipo riferimento a oggetto. I riferimenti sono assimilabili ai tipi base. Allocazione statica

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public: 1 Pila.h versione 6 struct Pila { private: int size; int defaultgrowthsize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialsize) ; Pila(); ~Pila() ; void copy(pila * to)

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Il Tutorial per BlueJ

Il Tutorial per BlueJ Il Tutorial per BlueJ Versione 1.4 per BlueJ Versione 1.2.x Michael Kölling Mærsk Institute University of Southern Denmark Tradotto in italiano da Vito Di Viggiano, Orlando Demauro, Gianluca Leo, Gianpaolo

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

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI di Luca Carnini Tesina presentata per la discussione del diploma di laurea in Ingegneria informatica Politecnico di Milano sede

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di esempio CERCA 90 NEL SACCHETTO = estrai num Casi num 90 Effetti CERCA 90 NEL

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

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

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

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

Il linguaggio Java. Concetti base. I packages

Il linguaggio Java. Concetti base. I packages Il linguaggio Java I packages Concetti base Un package è una collezione di classi ed interfacce correlate che fornisce uno spazio dei nomi ed un controllo sugli accessi Un package facilita il reperimento

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Struttura di un programma Java. Package. Uso dei package

Struttura di un programma Java. Package. Uso dei package Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Struttura di un programma

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Compilare il primo programma. Primo programma in C. Esercizio Somma due numeri. Compilare il primo programma. Analisi. Analisi

Compilare il primo programma. Primo programma in C. Esercizio Somma due numeri. Compilare il primo programma. Analisi. Analisi Primo in C Un semplice L ambiente di sviluppo Dev-C++ Codifica del Compilazione e correzione errori Esecuzione e verifica 2 Esercizio Somma due numeri Si realizzi un in linguaggio C che acquisisca da tastiera

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

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

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Il World Wide Web: nozioni introduttive

Il World Wide Web: nozioni introduttive Il World Wide Web: nozioni introduttive Dott. Nicole NOVIELLI novielli@di.uniba.it http://www.di.uniba.it/intint/people/nicole.html Cos è Internet! Acronimo di "interconnected networks" ("reti interconnesse")!

Dettagli