Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori"

Transcript

1 Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1

2 OOP Java è un linguaggio di programmazione ad oggetti Cos è l Object Oriented Programming (OOP)? Cosa sono gli oggetti? Oggetti il mondo che ci circonda è costituito da oggetti le persone, le auto, i palazzi, etc. ognuno di questi oggetti ha la capacità di eseguire certe azioni e ognuna di queste azioni ha effetti su qualche altro oggetto nel mondo OOP È una metodologia programmativa che vede il programma come costituito da oggetti che interagiscono fra loro per mezzo di azioni ciò è facile da capire se gli oggetti sono la rappresentazione di quelli reali 3 Programmazione ad oggetti in Java Un po di storia In principio era sistema di processi ( Algoritmi + strutture dati = programmi Wirth) Algoritmi focus sul sistema come calcolatore sviluppo dei linguaggi di programmazione (procedurali, funzionali, etc.) Dati focus sul sistema come banca dati sviluppo dei DBMS 4 Programmazione ad oggetti in Java 2

3 I problemi di un tale approccio Chi manipola cosa? ovvero quale algoritmo manipola quali dati? La definizione di componente risulta difficile se non impossibile Scelte progettuali legate all implementazione Difficoltà nel testing e nella manutenzione Difficile riuso 5 Programmazione ad oggetti in Java La soluzione L incapsulamento realizzare componenti software come black box definire in maniera precisa le interfacce delle componenti realizzare una completa indipendenza interfacciaimplementazione... che porta alla: componibilità riusabilità manutenibilità 6 Programmazione ad oggetti in Java 3

4 L approccio object-oriented Un oggetto è una black box che incapsula dati e algoritmi oggetto = Dati+Algoritmi dati: determinano lo stato dell oggetto insieme dei valori di attributi (variabili) metodi: realizzano gli algoritmi e manipolano lo stato comandi per la manipolazione dello stato Il sistema è visto, quindi, come una collezione di oggetti che interagiscono fra loro tramite lo scambio di messaggi (invocazione di metodi) 7 Programmazione ad oggetti in Java Incapsulamento Definizione: un oggetto è frutto della incapsulazione in un unica struttura software di dati e funzioni e consiste di una porzione pubblica (interfaccia) e di una privata (implementazione) interfaccia visibile: comandi invocabili dall esterno (cioè da altri oggetti) implementazione invisibile: variabili locali (attributi di istanza) metodi (procedure) che eseguono comandi 8 Programmazione ad oggetti in Java 4

5 Cos è un oggetto? Un oggetto è la rappresentazione di un entità reale o concettuale per esempio: il mio gatto, il tuo telefono, la tua applicazione, l evento di un click del mouse, etc. frutto di un processo di astrazione che porta a estrarre solo le caratteristiche salienti per una data applicazione non si considerano tutte le peculiarità, ma solo alcune 9 Programmazione ad oggetti in Java Astrazione Oggetti Rappresentazione Mondo reale 10 Programmazione ad oggetti in Java 5

6 Le caratteristiche di un oggetto Un oggetto ha tre caratteristiche: stato, comportamento e identità stato: è una delle possibili condizioni in cui può trovarsi è dato dal valore dei suoi attributi comportamento: determina come un oggetto risponde alle richieste di altri oggetti è definito dalle sue operazioni identità: due oggetti anche se si trovano nello stesso stato, sono comunque due entità ben distinte 11 Programmazione ad oggetti in Java Lo stato È determinato dalle variabili definite Le variabili sono chiamate attributi o variabili d istanza Gli attributi di un oggetto possono essere tipi semplici o a loro volta oggetti Es. Una linea telefonica possiede uno stato che è determinato dal suo numero, dal fatto che sia in uso o meno e da un altra linea telefonica su cui effettuare il dirottamento delle chiamate 12 Programmazione ad oggetti in Java 6

7 Comportamento È la modalità con cui un oggetto risponde alle richieste da parte di altri oggetti Gli oggetti comunicano tra loro scambiandosi messaggi (chiamati anche comandi) attraverso le rispettive interfacce I messaggi attivano i metodi che determinano il comportamento degli oggetti i metodi sono l implementazione di una procedura che esegue un comando 13 Programmazione ad oggetti in Java Identità Due oggetti sono due entità diverse anche se possiedono lo stesso stato Es. due biciclette di marca, modello e colore uguali sono comunque due entità a se stanti Ogni oggetto ha un proprio OID (Object IDentifier) che è univoco nel sistema invariante nel tempo Un oggetto esiste indipendentemente dal valore dei suoi attributi (le proprietà che ne identificano lo stato) 14 Programmazione ad oggetti in Java 7

8 Come creo gli oggetti? Per poter creare oggetti serve un modello che incorpora le caratteristiche di stato e di comportamento di un oggetto da cui partire È una sorta di modulo che definisce oggetti omogenei una volta per tutte Una volta definito è possibile creare gli oggetti Tale modello si chiama classe 15 Programmazione ad oggetti in Java Astrazione Classi Classificazione Istanziazione Oggetti Rappresentazione Mondo reale 16 Programmazione ad oggetti in Java 8

9 Cos è una classe? Tutti gli oggetti che condividono le stesse proprietà (gli attributi) e comportamenti (metodi) possono essere classificati insieme Una classe rappresenta una e una sola astrazione a partire dalla quale è possibile creare oggetti Es. Una Bicicletta è una classe che definisce certe caratteristiche comuni a tutte le biciclette intese come oggetti. Una particolare bicicletta si dice istanza della classe Bicicletta La classe è quella struttura che definisce le caratteristiche delle sue istanze L istanza o oggetto è un esemplare creato a partire dalla sua classe 17 Programmazione ad oggetti in Java Come si definisce una classe La classe: specifica l interfaccia che ogni suo oggetto offre verso gli altri con cui interagisce definizione (signature) dei comandi (o messaggi) nome, tipo ritornato parametri formali definizione degli attributi visibili implementa attributi interni metodi interni operazioni dei metodi 18 Programmazione ad oggetti in Java 9

10 Incapsulamento Un principio ferreo: una classe non deve mai rendere visibili all esterno i suoi attributi ogni manipolazione dello stato delle sue istanze deve avvenire solo ed esclusivamente mediante operazioni definite dalla classe stessa Perché? Si può cambiare l implementazione senza cambiare l interfaccia e gli altri componenti non se ne accorgono modularità: si possono assemblare componenti diversi conoscendo solo l interfaccia 19 Programmazione ad oggetti in Java Le classi come black box Interfaccia visibile Nome attributo1 Implementazione invisibile attributo2 attributom Attributi (stato; visibilità limitata) comando1 comando2 metodo1 metodo2 metodon manipolazioni Metodi (implementazione) comandi attivazioni 20 Programmazione ad oggetti in Java 10

11 Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione: cioè la classe Si ricorda che un programma ad oggetti consiste di oggetti creati a partire da classi diverse che interagiscono fra loro public class NomeClasse { //Definizione Attributi di istanza o di classe //Implementazione Costruttori //Implementazione Metodi 21 Programmazione ad oggetti in Java Come descrivere al programmatore le classi? Esempio classe Punto: «Realizzare una classe che rappresenta un punto in uno spazio bidimensionale a cui attribuire nome Punto. Qualsiasi oggetto creato a partire dalla classe Punto è caratterizzato dall avere un attributo con identificativo x e di tipo int (che rappresenta l ascissa) e un altro attributo con identificativo y e di tipo int (che rappresenta l ordinata). Entrambi gli attributi hanno visibilità pubblica.» 22 Programmazione ad oggetti in Java 11

12 Rappresentazione in UML La classe Punto in un diagramma delle classi di design è rappresentata come in figura Punto + x: int + y: int Sintassi: Modificatore_di_visibilità Identificatore_dell attributo: tipo Modificatore_di_visibilità: + indica public (appartenente all interfaccia della classe) 23 Programmazione ad oggetti in Java Esempio: la classe Punto Definizione di classe Il nome della classe public class Punto { public int x; public int y; Modificatore di visibilità. public: appartiene all interfaccia Definizione degli attributi di istanza 24 Programmazione ad oggetti in Java 12

13 Come si crea un oggetto? NomeClasse nomereference; nomereference = new NomeClasse(); dichiara, non crea crea nomereference.comando(); nomereference.attributo; accesso all interfaccia pubblica 25 Programmazione ad oggetti in Java Esempio: utilizzo della classe Punto Ogni attributo di istanza possiede un tipo! Punto p1; p1 = new Punto(); p1.x = 3; p1.y = 4; int valorex = p1.x; int valorey = p1.y; 26 Programmazione ad oggetti in Java 13

14 Esempio Creare due punti e assegnare i valori per x e y 3 e 4 e 50 e 90. Stampare a video quale punto ha x maggiore public class TestPunto1 { public static void main(string a[]) { Punto p1, p2; p1 = new Punto(); p2 = new Punto(); p1.x = 3; p1.y = 4; p2.x = 50; p2.y = 90; if(p1.x >= p2.x) { System.out.println(Il punto p1 ha x maggiore); else { System.out.println(Il punto p2 ha x maggiore); 27 Programmazione ad oggetti in Java Esercizi Rettangolo Creare una classe che rappresenta un rettangolo Creare 2 istanze della classe assegnando valori per la base e l altezza Calcolare l area e il perimetro di entrambi indicando quale ha area e perimetro maggiore Auto Creare una classe che rappresenta un auto (proprietario, vel max e velocità corrente) Creare tre istanze della stessa assegnando i valori per gli attributi Determinare se le due istanze create hanno lo stesso stato! 28 Programmazione ad oggetti in Java 14

15 Oggetti e reference Variabili di tipo classe (tipo p1 o p2 dell esempio precedente) sono molto differenti rispetto a variabili di tipo primitivo (come int o char) Punto p1, p2; p1 = new Punto(); p2 = new Punto(); int n, m; n = 10;? m = n; n = 9; System.out.println( n + n + m + m); p1.x = 1; p1.y = 2; p2 = p1; p2.x = 3; p2.y = 4; System.out.println( p1 x: + p1.x + y: + p1.y); System.out.println( p2 x: + p2.x + y: + p2.y); 29 Programmazione ad oggetti in Java L operatore = Il risultato di un assegnamento tra reference: fa si che l oggetto a sinistra dell assegnamento sia referenziato anche dal reference a destra 1) Punto p1, p2; p1? p2? 2) p1 = new Punto(); p1 p2? x y x p1 y 3) p2 = new Punto(); x p2 y 30 Programmazione ad oggetti in Java 15

16 L operatore = 4) p1.x = 1; p1 p2 x=1 y x y 5) p1.y = 2; p1 p2 x=1 y=2 x y 6) p2 = p1; p1 p2 x=1 y=2 x y 31 Programmazione ad oggetti in Java L operatore == Permette di verificare se due reference referenziano lo stesso oggetto Esempio: Punto p1, p2; p1 = new Punto(); p2 = new Punto(); p1.x = 1; p1.y = 2; p2.x = 4; p2.y = 3; System.out.println(p1 == p2); p2 = p1; System.out.println(p1 == p2); La prima stampa stampa false, la seconda true p1 p2 p1 p2 x=1 x=2 x=4 y=3 x=1 x=2 x=4 y=3 32 Programmazione ad oggetti in Java 16

17 La keyword instanceof Permette di verificare se un oggetto è stato istanziato a partire dalla classe specificata Sintassi: reference instanceof NomeClasse Esempio: Punto p1; p1 = new Punto(); if (p1 instanceof Punto) System.out.println( p1 referenzia un oggetto + di tipo Punto ); 33 Programmazione ad oggetti in Java La costante null Si indica con null la costante utilizzata per inizializzare un reference ad un valore di default usato anche per verificare se il reference è stato correttamente inizializzato dopo la dichiarazione Esempio: Punto p1 = null; if (p1 == null) { p1 = new Punto(); else { System.out.println( oggetto già istanziato ); 34 Programmazione ad oggetti in Java 17

18 Esercizi Creare una classe che rappresenti una Bicicletta. La bicicletta è caratterizzata da avere un colore, una marca ed il numero di marce. Creare quindi una nuova classe (TestBicicletta) in cui vengono istanziate la bicicletta di colore blu, marca Bianchi e numero di marce 4 e la bicicletta di colore rosso, marca Bianchi e numero di marce 5. Stampare quindi a video lo stato dei due oggetti creati Creare una classe che rappresenti un DVD. Il DVD è caratterizzato dal titolo, dal nome del regista, dal tipo di film e dalla lunghezza (espressa in minuti) del movie. Creare quindi una nuova classe (TestDVD) in cui vengono istanziati 3 dvd i cui attributi verranno inizializzati dall utente. Stampare quindi a video lo stato dei tre oggetti creati. Creare una classe (Moto) che rappresenti una moto (proprietario, modello, colore) Creare tre istanze della stessa assegnando i valori per gli attributi Stampare a video lo stato delle istanze Assegnare due reference allo stesso oggetto Stampare a video (dopo aver verificato) lo stato dell istanza con un solo reference 35 Programmazione ad oggetti in Java Esercizi Creare una classe Auto (modello, proprietario, colore) Utilizzare la classe Moto (del punto precedente) Creare una classe TestVeicolo dove si istanziano 2 auto e 2 moto (inserimento dati dall utente), stampare gli stati degli oggetti, indicando se sono auto o moto. Creare una classe StampaVeicoli, dove vengono istanziati 1 moto e 2 auto, dato a tutti il valore di default null, in un secondo momento fare inserire i dati di alcuni oggetti e stampare solo quelli diversi da null. 36 Programmazione ad oggetti in Java 18

19 Le associazioni Ogni sistema è composto da più classi Le associazioni collegano classi e sono il mezzo attraverso cui gli oggetti possono interagire Concetto molto simile a (derivato da) le relazioni nei diagrammi relazionali dei DB Un associazione è un legame semantico fra classi; significa che fra i corrispondenti oggetti c è un legame (detto link) Un link è un istanza di associazione così come un oggetto è istanza di una classe Per default, un associazione è bidirezionale, anche se può essere resa unidirezionale 37 Programmazione ad oggetti in Java Un esempio di associazione Classe Motore +ilmotore + numerocilindri: int + potenza: int 1 1 Auto + marca: String + modello: String + velocitamassima: int + targa: String Classe Associazione Fra le classi Auto e Motore c è un associazione: questo significa che fra ogni istanza della classe auto e ogni istanza della classe motore c è un link Oggetto : classe = link : associazione La navigabilità specifica in quale classe verrà codificata l associazione 38 Programmazione ad oggetti in Java 19

20 Il codice public class Auto { public String marca; public String modello; public Motore ilmotore; public class Motore { public int cilindrata; public int potenza; public class Test { public static void main(string ar[]) { Auto a = new Auto(); Motore m = new Motore(); a.ilmotore = m; Programmazione ad oggetti in Java Metodi: definizione Definire un metodo comporta la definizione di: intestazione (o signature) ci permette di invocare successivamente il metodo body definisce il comportamento del metodo la sequenza di istruzioni che devono essere eseguite Esistono 2 tipi di metodi: quelli che eseguono esclusivamente istruzioni quelli che eseguono istruzioni e restituiscono un valore 40 Programmazione ad oggetti in Java 20

21 Metodi: definizione dell intestazione Intestazione o signature per metodi che esclusivamente eseguono operazioni: [modificatore/i] void nomemetodo([lista parametri formali]) Esempi: public void variavelocita(int nuovovalore) private void controllapressione() Intestazione o signature per metodi che eseguono operazioni e ritornano valori: [modificatore/i] tiporitorno nomemetodo([lista parametri formali]) Esempi: public int calcolaarea() public boolean areauguale(int valore) 41 Programmazione ad oggetti in Java Metodi: definizione del body Il corpo o boby del metodo contiene la sequenza di distruzioni che deve essere eseguita nel momento in cui il metodo viene invocato Il body è racchiuso tra parentesi graffe { e segue la definizione della signature o intestazione del metodo stesso Se il metodo restituisce un valore, l ultima istruzione che viene eseguita deve essere return valore; Se il metodo non restituisce valore non ho l obbligo di inserire la keyword return 42 Programmazione ad oggetti in Java 21

22 Metodi: definizione del body esempi public boolean confrontaarea(int valore) { boolean confronto = false; if (area >= valore) { confronto = true; else { confronto = false; return confronto; public boolean confrontaarea(int valore) { boolean confronto = false; if (area >= valore) { confronto = true; return confronto; public boolean confrontaarea(int valore) { if (area >= valore) { return true; else { return false; 43 Programmazione ad oggetti in Java La descrizione dei metodi Tutti i metodi devono essere descritti La descrizione dovrebbe contenere: le precondizioni indicano le condizioni che devono essere vere prima di invocare il metodo il metodo non deve essere invocato se le precondizioni non sono verificate potrebbe fornire dei risultati non attesi le postcondizioni descrivono gli effetti prodotti dall invocazione del metodo esempio: ciò che viene restituito, se il metodo restituisce un valore; gli effetti sullo stato del calling object,se void, 44 Programmazione ad oggetti in Java 22

23 Esempio descrizione Esempio: Sorgente (directory slide 45) LineaTelefonica + numero: String + prefissonazionale: String + prefissointernazionale: String + isinterurbana(string) : boolean + componinumero(string) : void 45 Programmazione ad oggetti in Java La descrizione in Java Java fornisce un comando javadoc per generare file in formato HTML che descrivono l interfaccia pubblica della classe Basta esprimere le precondizioni e le postcondizioni in maniera un po più formale È possibile commentare tutto ciò che appartiene all interfaccia pubblica Esempio: Sorgente (directory slide 46) per generare la documentazione: javadoc Sorgente.java LineaTelefonica.html (directory slide 46) 46 Programmazione ad oggetti in Java 23

24 Incapsulamento L incapsulamento permette di separare l interfaccia dall implementazione l interfaccia contiene ciò che è visibile all esterno (cioè a chi utilizza la classe incapsulata) l implementazione tutti i dettagli implementativi che si vogliono nascondere a chi utilizza la classe incapsulata Che vantaggi nell effettuare incapsulamento? Riuso del codice Un programmatore che usa un metodo che è stato definito da altri non necessita di conoscere i dettagli implementativi (il body!) Il programmatore devo solo conoscere cosa il metodo fa e non come lo fa esempio: voi utilizzate il metodo SavitchIn.readInt() sapendo che legge da input standard un valore intero, ma non vi siete mai chiesti come lo fa (e non vi interessa!!!!) Possibilità di modificare l implementazione (ad esempio per rendere la classe più efficiente) senza che le classi che utilizzano quella modificata se ne accorgano mi accorgo che l implementazione del metodo la cui interfaccia è cercacarattere utilizza un algoritmo troppo inefficiente, lo modifico lasciando inalterata l interfaccia Stato dell oggetto sempre consistente incapsulo gli attributi e permetto la loro modifica attraverso metodi che appartengono all interfaccia e che effettuano i controlli 47 Programmazione ad oggetti in Java Esempio in cui cambio l implementazione public class LineaTelefonica{ public String numero; In blu ciò che appartiene all interfaccia In nero ciò che apprtiene all implementazione public String restituisciprefissointernazionale() { String nazione = numero.substring(0, 4); return nazione; LineaTelefonica + numero: String public class LineaTelefonica{ public String numero; + restrituisciprefissointernazionale() : String public String restituisciprefissointernazionale() { String nazione = ""; for(int i=0; i<4; i++) { nazione = nazione + numero.charat(i); return nazione; tutto ciò che dichiaro public appartiene all interfaccia 48 Programmazione ad oggetti in Java 24

25 Esempio La classe Semaforo rappresenta un semaforo di un incrocio stradale public class Semaforo{ public String colore; public void cambiacolore() { if (colore.equals("rosso")) { colore = "verde"; else { if (colore.equals("verde")) { colore = "giallo"; else { if (colore.equals("giallo")) { colore = "rosso"; Semaforo + colore: String + cambiacolore() : void 49 Programmazione ad oggetti in Java Esempio public class Semaforo{ public static void main(string a[]) { Semaforo s1 = new Semaforo(); s1.colore = "rosso"; s1.cambiacolore(); s1.cambiacolore(); s1.colore = "blu"; //Errore L implementazione di Semaforo è incapsulata? Posso modificare l implementazione senza che la classe TestSemaforo debba moficarla? No! Cambio il tipo di colore da String a int e il main non funziona piu! Posso ignorare i dettagli implementativi in fase di utilizzo della classe Semaforo? No! Avendo la possibilità di accedere a colore, devo sapere di che tipo è L oggetto s1 rimane sempre in uno stato consistente? No! Posso assegnare il colore blu senza alcun problema. Ma si è mai visto un semaforo blu? 50 Programmazione ad oggetti in Java 25

26 Realizzare l incapsulamento Distinguere fra interfaccia e implementazione Gli attributi di istanza sono un dettaglio implementativo, il significato è dato dalle operazioni che le manipolano esempio: Il significato di un Semaforo non dipende dal fatto che l attributo colore sia di tipo String o int, ma dal funzionamento del metodo cambiacolore Soluzione: modificatori di visibilità per impedire a chi usa oggetti acceda direttamente agli attributi in scrittura esempio: impedire a chi usa oggetti Semaforo di accedere all'attributo colore, mettendo a disposizione solo il metodo cambiacolore Permettere solo stati validi per gli oggetti Lo stato degli oggetti deve contenere sempre valori validi esempio: blu non è un valore valido per il colore di un Semaforo Soluzione: controllare tutte le modifiche dello stato attraverso metodi 51 Programmazione ad oggetti in Java Modificatori public e private Non è considerata buona norma programmativa dichiarare gli attributi di istanza public! non devono far parte dell interfaccia della classe Tali attributi devono essere dichiarati private! devono appartenere all implementazione (si deve operare anche per loro incapsulamento) Se si utilizza il modificatore public ogni altra classe può accedere in maniera diretta all attributo di istanza e quindi modificarlo direttamente! Esempio: Sorgente (directory slide 52) Automobile + velocitacorrente: int + proprietario: String + tostring() : String 52 Programmazione ad oggetti in Java 26

27 Gli attributi private Dichiarare un attributo d istanza private comporta che è accessibile esclusivamente all interno della classe in cui è definito Esempio corretto: Sorgente (directory slide 53) Come già visto è possibile dichiarare anche i metodi private tali metodi sono metodi di servizio che vengono invocati da altri Automobile - velocitacorrente: int - proprietario: String + setvelocitacorrente(velocita :int) : void + setproprietario(proprietario :String) : void + tostring() : String esempio: calcolabase() e calcolaaltezza() sono metodi di servizio per la classe Rettangolo che esporta solo metodi per il calcolo dell area e del perimetro Se la norma è dichiarare gli attributi d istanza private, come faccio al di fuori della classe ad accedere agli attributi stessi? 53 Programmazione ad oggetti in Java Metodi di incapsulamento o accesso Dichiarare gli attributi di istanza private obbliga a chi definisca la classe di dotarla di metodi che permettono l accesso agli attributi stessi Un metodo di incapsulamento è semplicemente un metodo che permette ad un altra classe di leggere o impostare il valore di un attributo di istanza dichiarato private Tali metodi devono appartenere all interfaccia pubblica della classe! Quando l attributo può essere acceduto sia in scrittura che in lettura occorrerà dotare la classe di 2 metodi solo in lettura occorrerà dotare la classe di 1 metodo solo in scrittura occorrerà dotare la classe di 1 metodo 54 Programmazione ad oggetti in Java 27

28 Naming ed esempio I metodi di incapsulamento seguono più o meno la seguente convenzione: in modifica: setnomeattributo in lettura: getnomeattributo Esempio: Sorgente (directory slide 55) Automobile - velocitacorrente: int - proprietario: String + setvelocitacorrente(velocita :int) : void + setproprietario(proprietario :String) : void + tostring() : String + getvelocita() : int + getproprietario() : String 55 Programmazione ad oggetti in Java La keyword this Nell-esempio di Automobile, nel metodo setproprietario(string proprietario) ho ambiguità nella seguente istruzione: proprietario = proprietario; Devo esplicitare quale delle 2 variabili si riferisce all attributo di istanza: this.proprietario = proprietario; this vuol dire l istanza corrente public void setproprietario(string proprietario){ this.proprietario = proprietario; 56 Programmazione ad oggetti in Java 28

29 Naming rispettata sempre? Non è sempre conveniente utilizzare la convenzione Si utilizza esclusivamente quando ha senso! Guardiamo questo esempio: Luce Luce - boolean accesa + void setaccesa(boolean valore) + boolean getaccesa() - boolean accesa + void accendi() + void spegni() + boolean isaccesa() 57 Programmazione ad oggetti in Java Riassumendo Quando si definiscono classi usare sempre le seguenti regole: 1. inserire sempre un commento in testa alla classe che specifica l astrazione che rappresenta. Usare i commenti per generare la documentazione 2. dichiarare tutti gli attributi di istanza appartenenti all implementazione (modificatore private) 3. fornire tutti gli opportuni metodi di incapsulamento per leggere e modificare gli attributi di istanza (appartenenti quindi all interfaccia pubblica, modificatore public) 4. fornire tutti i metodi dell interfaccia pubblica (modificatore public) 5. documentare tutti i metodi inserendo le precondizioni e le postcondizioni 6. dichiarare i metodi di servizio appartenenti all implementazione (modificatore private) 7. inserire sempre nella definizione di classe il metodo tostring() 58 Programmazione ad oggetti in Java 29

30 Overloading Definizione formale: operare overloading di un metodo vuol dire assegnare lo stesso nome a due o più definizioni differenti all interno della stessa classe Come fa Java a sapere quale definizione deve eseguire? Java determina la definizione corretta sulla base del numero e del tipo di argomenti Quando e perché si fa overloading? Non è più semplice definire metodi con nomi diversi? quando diversi metodi semanticamente fanno la stessa cosa ma con parametri in ingresso diversi. Non ha senso modificare il nome 59 Programmazione ad oggetti in Java Esempio La classe LineaTelefonica fornisce anche un metodo che permette di richiamare l ultimo numero selezionato la definizione va modificata inserendo fra gli attributi di istanza anche una stringa che memorizza l ultimo numero composto LineaTelefonica - numero: String - prefissonazionale: String - prefissointernazionale: String - ultimonumerocomposto: String + isinterurbana(string) : boolean + componinumero(string) : void + componinumero() : void Sorgente (directory slide 60) 60 Programmazione ad oggetti in Java 30

31 Ancora sull overloading Non è possibile overloadare un metodo modificando esclusivamente il tipo di ritorno! esempio: public String tostring() {... public void tostring() { Programmazione ad oggetti in Java L inizializzazione degli oggetti Quando si crea un oggetto è buona norma inizializzare i valori degli attributi Come detto, gli attributi vengono inizializzati a valori di default Non è detto che tali valori siano effettivamente quelli corretti. Come faccio a modificarli? utilizzo i metodi di incapsulamento! È possibile però che le operazioni di inizializzazione dell oggetto vadano oltre alla pura assegnazione di valori iniziali per gli attributi se devo costruire un interfaccia grafica, voglio che tutte le operazione di costruzione vengano fatte nel momento in cui istanzio l oggetto 62 Programmazione ad oggetti in Java 31

32 I costruttori Un costruttore è uno speciale tipo di metodo destinato ad effettuare le inizializzazioni dell oggetto Fino ad ora si sono creati oggetti grazie a la sequente sintassi: Sintassi: new NomeClasse() Esempio: new Automobile() Tale sintassi crea l oggetto ed inizializza gli attributi di istanza a valori di default (che non necessariamente sono quelli desiderati!) Usando i costruttori è possibile creare oggetti inizializzandoli a valori desiderati Il costruttore è un metodo speciale che viene invocato nel momento in cui viene creato un oggetto (e solo in quel momento!) 63 Programmazione ad oggetti in Java La sintassi Come un metodo, un costruttore esegue tutte le istruzioni specificate nella sua definizione quando si scrive un costruttore, occorre pero ricordarsi che il suo scopo è quello di eseguire le azioni necessarie all inizializzzione dell oggetto esempio: Sintassi: la classe LineaTelefonica possiede una serie di metodi che hanno come precondizione l inizializzazione della linea stessa: sarebbe opportuno, al posto di invocare i 3 metodi di incapsulamento, inizializzare opportunamente l oggetto linea con i valori per i 3 attributi public NomeClasse([lista parametri formali]) { //inizializzazioni NomeClasse ref = new NomeClasse([argomenti]) 64 Programmazione ad oggetti in Java 32

33 Con la vecchia modalità public class Automobile { private int velocitacorrente; private String proprietario; public void setvelcita(int v) { velocitacorrente = v; public void setproprietario(string p) { proprietario = p;... public class TestAuto { public static void main(string ar[]) { //Voglio creare l auto di Paperino con velocità 100 Automobile a = new Automobile(); a.setvelocita(100); a.setproprietario( Paperino ); 65 Programmazione ad oggetti in Java Con il costruttore... public class Automobile { private int velocitacorrente; private String proprietario; public Automobile(int velocitac, String proprietario) { velocitacorrente = velocitac; this.proprietario = proprietario; public void setvelcita(int v) { velocitacorrente = v; public void setproprietario(string p) { proprietario = p;... public class TestAuto { public static void main(string ar[]) { //Voglio creare l auto di Paperino con velocità 100 Automobile a = new Automobile(100, Paperino ); 66 Programmazione ad oggetti in Java 33

34 ... Se ho vincoli sui valori public class Automobile { private int velocitacorrente; private String proprietario; public Automobile(int velocitac, String proprietario) { setvelocita(velocitac); this.proprietario = proprietario; public void setvelcita(int v) { if(v>=0 && v <= 180) { velocitacorrente = v; else { velocitacorrente = 0; public void setproprietario(string p) { proprietario = p;... public class TestAuto { public static void main(string ar[]) { //Voglio creare l auto di Paperino con velocità 100 Automobile a = new Automobile(100, Paperino ); 67 Programmazione ad oggetti in Java Posso ancora usare l istanziazione classica? Considerando l esempio precedente, la seguente istruzione è lecita? Automobile a = new Automobile(); NO! Perchè? perchè non esiste un costruttore nella classe Automobile che non accetta in ingresso parametri (chiamato costruttore di default)! Perché prima era lecita? E perchè potevo istanziare oggetti? se non viene definito un costruttore all interno di una classe, ne viene assegnato uno di default (costruttore di default) che non accetta in ingresso parametri e la cui implementazione è più o meno la seguente: public class Automobile {... public Automobile() { 68 Programmazione ad oggetti in Java 34

35 Overlodare i costruttori Sempre! ovviamente dove ha senso che significa rendere la classe più flessibile Overlodare i costruttori vuol dire realizzare più costruttori che inizializzano l pggetto variando la lista dei parametri formali nei costruttori in cui non viene richiesto il valore di inizializzazione di uno più attributi, devono, nell implementazione, comunque inizializzare tali attributi 69 Programmazione ad oggetti in Java Esempio: definizione classe Automobile public class Automobile { private int velocitacorrente; private String proprietario; public Automobile(int velocitac, String proprietario) { setvelocitacorrente(velocitac); this.proprietario = proprietario; public Automobile(String proprietario) { velocitacorrente = 0; this.proprietario = proprietario; public Automobile(int velocita) { setvelocitacorrente(velocita); this.proprietario = null; public Automobile() { velocitacorrente = 0; this.proprietario = null; Programmazione ad oggetti in Java 35

36 Esempio: uso classe Automobile public class TestAutomobile { public static void main(string a[]) { //Voglio creare una auto con velocità corrente 100 //e proprietario Paperino Automobile a1 = new Automobile(100, Paperino ); //Voglio creare una auto con proprietario Paperino Automobile a2 = new Automobile( Paperino ); //Voglio creare una auto con velocità corrente 130 Automobile a3 = new Automobile(130); //Voglio creare una auto con valori di default Automobile a2 = new Automobile(); Programmazione ad oggetti in Java Richiamare un costruttore da un altro Come notato, i costruttori visti nell esempio compiono le stesse azioni: inizializzare il valore di velcoitacorrente e di proprietario È comodo invocare da un costruttore un altro costruttore passando i giusti argomenti a tutti gli effetti è l invocazione di un metodo Regola più o meno generale: implemento il costruttore (a) che accetta in ingresso i valori per tutti gli attributi di istanza inizializzabili con passaggio di parametri implemento i costruttori che accettano in ingresso un sottoinsieme dei valori accettati dal costruttore (a) invocando il costruttore (a) stesso come se fosse un metodo 72 Programmazione ad oggetti in Java 36

37 La keyword this Per fare ciò, non invoco esplicitamente il costruttore con il nome, ma utilizzo la keyword this (deve essere la prima istruzione nella definizione del metodo) public class Automobile { private int velocitacorrente; private String proprietario; public Automobile(int velocitac, String proprietario) { setvelocitacorrente(velocitac); this.proprietario = proprietario; public Automobile(String proprietario) { this(0, proprietario); public Automobile(int velocita) { this(velocita, null); public Automobile() { this(0, null); Programmazione ad oggetti in Java Esercizi Individuare metodi di incapsulamento e costruttori per una classe che rappresenta un automobile caratterizzata da: velocitacorrente velocitamassima numeroditelaio una classe che rappresenta una videocassetta. La videocassetta è caratterizzata da un titolo, una durata il fatto che sia protetta o meno in registrazione 74 Programmazione ad oggetti in Java 37

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

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

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

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

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

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

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

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

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

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

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Object Oriented Software Design

Object Oriented Software Design Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi Introduzione alla Programmazione Orientata agli Oggetti Classi, Oggetti e Messaggi Agenda 1. La metodologia di progettazione ad oggetti Concetti fondamentali: oggetti, classi, messaggi 2. I concetti fondamentali

Dettagli

Traccia di soluzione dell esercizio del 25/1/2005

Traccia di soluzione dell esercizio del 25/1/2005 Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello

Dettagli

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

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

Dettagli

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

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Strumenti di modellazione. Gabriella Trucco

Strumenti di modellazione. Gabriella Trucco Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell

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

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

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

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

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

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

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

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

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

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

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

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

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

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

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

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

MODELLO RELAZIONALE. Introduzione

MODELLO RELAZIONALE. Introduzione MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

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

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Progettazione di Database. Un Esempio

Progettazione di Database. Un Esempio Progettazione di Database Un Esempio Data Base Management System Applicazione 1 Applicazione 2 Applicazione 3 DBMS A B C D E Il Modello Relazionale Una relazione è costituita su un insieme di domini, non

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

Progettazione di una base di dati Ufficio della Motorizzazione

Progettazione di una base di dati Ufficio della Motorizzazione Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2008/2009 1 Scopo del progetto Progettazione di una base di dati Ufficio della Motorizzazione Si vuole realizzare un applicazione base

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

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

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

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

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica. Progettazione logica Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica. La progettazione logica è basata su un particolare modello logico dei

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

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

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

Esercizio 1: trading on-line

Esercizio 1: trading on-line Esercizio 1: trading on-line Si realizzi un programma Java che gestisca le operazioni base della gestione di un fondo per gli investimenti on-line Creazione del fondo (con indicazione della somma in inizialmente

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

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

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

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010) Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica, Ingegneria dei Sistemi Informatici Esercitazioni

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

COSTER. Import/Export su SWC701. SwcImportExport

COSTER. Import/Export su SWC701. SwcImportExport SwcImportExport 1 Con SWC701 è possibile esportare ed importare degli impianti dal vostro database in modo da tenere aggiornati più Pc non in rete o non facente capo allo stesso DataBase. Il caso più comune

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

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

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007 Basi di dati Concetti introduttivi Ultima modifica: 26/02/2007 ESEMPIO INSEGNAMENTI Fisica, Analisi, Informatica Aule Docenti Entità Relazioni Interrogazioni St udent i Database 2 Tabella (I) STUDENTE

Dettagli

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente

Dettagli

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme

Dettagli

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate

Dettagli

Amministrazione gruppi (Comunità)

Amministrazione gruppi (Comunità) Amministrazione gruppi (Comunità) Guida breve per il docente che amministra il gruppo Premessa Di regola i gruppi sono creati all interno della Scuola. Nel caso in cui vi fosse la necessità di aprire un

Dettagli

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome. Prof. Francesco Accarino Raccolta di esercizi modello ER Esercizio 1 Un università vuole raccogliere ed organizzare in un database le informazioni sui propri studenti in relazione ai corsi che essi frequentano

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

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

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

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto) Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Sede di Latina Laurea in Ingegneria dell Informazione Fasi del ciclo di vita del software (riassunto) Corso di PROGETTAZIONE DEL SOFTWARE

Dettagli

FotoAeree. La Sardegna vista dall alto MANUALE PER L USO DELL APPLICAZIONE

FotoAeree. La Sardegna vista dall alto MANUALE PER L USO DELL APPLICAZIONE FotoAeree La Sardegna vista dall alto MANUALE PER L USO DELL APPLICAZIONE REGIONE AUTONOMA DELLA SARDEGNA [2] Indice 1. Introduzione 2. Navigatore 5 7 8 9 2.1. Strumenti di navigazione 2.2. Ricerca 3.

Dettagli

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

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

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

IL MIO PRIMO SITO: NEWS

IL MIO PRIMO SITO: NEWS Pagina 1 IL MIO PRIMO SITO: NEWS Sommario IL MIO PRIMO SITO: NEWS...1 Introduzione...2 I Contenitori...2 Creo un Contenitore...3 I Tracciati...4 Creo le Notizie...6 Inserisco il Testo...6 Inserisco un

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

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented 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 Programmazione Object Oriented in Java

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

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

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

Automazione Industriale 4- Ingegneria del Software

Automazione Industriale 4- Ingegneria del Software Automation Robotics and System CONTROL Università degli Studi di Modena e Reggio Emilia Automazione Industriale 4- Ingegneria del Software Cesare Fantuzzi (cesare.fantuzzi@unimore.it) Ingegneria Meccatronica

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

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

Il Modello Relazionale

Il Modello Relazionale Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981

Dettagli