Organizzazione della lezione. Organizzazione della lezione. Lezione 3 Programmazione Object-Oriented. Oriented in Java

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Organizzazione della lezione. Organizzazione della lezione. Lezione 3 Programmazione Object-Oriented. Oriented in Java"

Transcript

1 Organizzazione della lezione Lezione 3 Programmazione Object-Oriented Oriented in Java Vittorio Scarano Corso di Programmazione Distribuita ( ) Laurea di I livello in Informatica Università degli Studi di Salerno La programmazione orientata agli oggetti motivazioni, obiettivi e principi guida della progettazione Unified Modeling Language (UML) Alcune semplici classi Uso della classe Date e GregorianCalendar Creazione di una nuova classe (Employee) Campi e metodi statici Parametri dei metodi Costruzione di oggetti ed inizializzazione 2 Organizzazione della lezione Hardware/Software: una evoluzione sbilanciata La programmazione orientata agli oggetti motivazioni, obiettivi e principi guida della progettazione Unified Modeling Language (UML) Alcune semplici classi Uso della classe Date e GregorianCalendar Creazione di una nuova classe (Employee) Campi e metodi statici Parametri dei metodi Costruzione di oggetti ed inizializzazione 3 Hardware: progresso tecnologico velocissimo i PC di oggi erano chiamati supercomputer 20 anni fa uso di processori e memorie in moltissimi manufatti Software: di complessità sempre crescente che coinvolge team di programmatori Obiettivi contrastanti: un sistema per risolvere problemi in maniera efficiente che sia però così semplice da essere gestibile 4

2 Alcune leggi e strategie La programmazione orientata agli oggetti Hofstadter's Law: It always takes longer than you expect, even when you take Hofstadter's Law into account. Ninety-Ninety Rule of Project Schedules: The first ninety percent of the task takes ninety percent of the time, and the last ten percent takes the other ninety percent. 5 Una metodologia per costruire sistemi software: robusti adattabili e portabili riusabili Principio economico prima che informatico: Dell, Compaq, etc. contro IBM, HP, etc. McLaren, Williams contro Ferrari (anni 80) L idea: Non importa il colore del gatto, basta che acchiappi il topo Mao Tze Tung Implementazione nascosta dalla interfaccia 6 Obiettivo 1: la robustezza del software Obiettivo 2: la adattibilità del software Software robusto: I programmi hanno una vita molto lunga capace di trattare in maniera coerente con input strani Importanza nei sistemi life-critical: un fallimento: il software per il Therac-25 cancellazione di caratteri a video ma non dall input Capace di seguire richieste dell utente: Esempio: input e memorizzazione di più dati di quelli previsti Correttezza: per tutti i valori dell input, compreso i valori detti di boundary (limite) 7 Necessario trattare con la evoluzione dell ambiente aumento velocità della CPU, rete videogiochi antichi non utilizzabili sicurezza (alla aumentata connettività ) mutazioni esterne: anno 2000, Euro, etc. Software capace di evolvere con poco sforzo portabile su piattaforme diverse 8

3 Obiettivo 3: la riusabilità del software La programmazione a oggetti Sviluppo del software di qualità: Il programma è costituito da oggetti costoso veloce Necessario poter riutilizzare il software già scritto importanza del lavoro cooperativo Riusabilità fatta con sicurezza la specifica precisa delle componenti da riutilizzare permette di evitare possibili errori scelti tra quelli disponibili o creati ex-novo che espongono delle funzionalità la cui implementazione si ignora Confronta con programmazione strutturata: algoritmi per risolvere problemi (funzioni) (poi) memorizzazione dati in strutture dati La OOP inverte l ordine: la organizzazione dei dati precede la scelta delle funzionalità 9 10 Caratteristiche chiave della OOP Il vocabolario della OOP: le classi Ogni oggetto è responsabile delle azioni correlate ai dati che contiene un oggetto può manipolare i propri dati ma non deve (dovrebbe) mai manipolare i dati degli altri. Un oggetto espone dei metodi: funzioni che permettono di accedere ai dati nella maniera corretta. Chi (o cosa) usa un oggetto ignora i dettagli della implementazione 11 Classe: modello (schema) secondo il quale un oggetto verrà creato (istanziato) Tutto quanto è disponibile in Java è in una classe: la libreria standard fornisce di tutto, di più anche i nostri programmi sono in una o più classi necessaria una accurata progettazione OOP Principi guida della progettazione OOP: Astrazione Incapsulamento Modularità 12

4 Principio 1: Astrazione Descrizione formale delle caratteristiche fondamentali di un sistema nomi e funzionalità Sufficientemente dettagliata per il comportamento sufficientemente astratta (ad alto livello) per non includere dettagli non necessari Astrazione alla progettazione di strutture dati: Abstract Data Types (ADT) modello matematico di organizzazione dei dati specifica tipo di dati, operazioni, e parametri delle operazioni cosa fa non come lo fa (interfaccia (interface Java)) realizzata da una classe Java 13 Principio 2: Incapsulamento (Information hiding) Le componenti del sistema non devono rivelare dettagli sulle implementazioni interne Concede la libertà al programmatore: le scelte implementative possono essere cambiate solo necessario mantenere la interfaccia verso l esterno L incapsulamento permette la adattabilità necessario solamente cambiare implementazione interna alla classe L incapsulamento permette la riusabilità riuso di componenti con implementazione non nota 14 Principio 3: Modularità Un esempio di gerarchia is a Struttura organizzata in cui componenti diverse di un sistema sono diverse in unità funzionali separate. Esempio: una casa suddivisa in: unità elettrica unità di riscaldamento e raffreddamento unità idraulica unità strutturale (mura) Di norma, strutturata in maniera gerarchica: definizioni simili vengono raggruppate a livelli dallo specifico verso il generale gerarchia is a ( è un ) Edifici Appartamenti Case Commerciali In parchi In edifici A 2 piani Basse Grattacieli 15 16

5 Il vocabolario della OOP: gli oggetti Progettare con oggetti Tre caratteristiche fondamentali: Identificare le classi ed i metodi da applicare il comportamento dell oggetto: quali metodi possono essere applicati? lo stato dell oggetto: come reagisce l oggetto? l identità dell oggetto: come si distingue l oggetto tra altri oggetti simili? Tutti gli oggetti istanza della stessa classe: hanno lo stesso comportamento differiscono di solito nello stato differiscono sempre nella identità 17 nella programmazione procedurale si definivano prima gli algoritmi e poi la struttura dati Nella fase di progettazione, si arriva ad una descrizione del problema in linguaggio naturale Una regola empirica da applicare : nella descrizione in linguaggio naturale del problema i sostantivi sono le classi i verbi sono i metodi 18 Progettare con oggetti: un esempio Relazioni tra classi Per elaborare ordini in un magazzino merci: Le classi possono essere: Articolo (Item) Ordine (Order) Indirizzo per la spedizione (Shipping Address) Pagamento (Payment) Conto (Account) I metodi possono essere: Aggiungere un articolo (add) ad un ordine Spedire (ship) o annullare (cancel) un ordine Un pagamento viene applicato (apply) ad un ordine Tra le tante relazioni possibili, le più importanti: Dipendenza Aggregazione Ereditarietà Le relazioni tra classi formano un diagramma delle classi usato per modellare il sistema software da progettare 19 20

6 Relazioni: Dipendenza Relazioni: Aggregazione ed ereditarietà La relazione più comune e generale: Aggregazione: una classe A dipende da un altra classe B se gli oggetti di A devono accedere a metodi degli oggetti di B Esempio: gli oggetti della classe Order devono necessariamente usare oggetti della classe Account controllano lo stato del conto del cliente prima di effettuare la spedizione gli oggetti della classe Item, invece, non devono accedere a oggetti della classe Account. un oggetto della classe A contiene oggetti della classe B esempio: un oggetto della classe Order contiene oggetti della classe Item Ereditarietà relazione tra una classe più specializzata ed una più generale esempio: una classe RushOrder (ordine urgente) specializza (eredita) da una classe Order eredita metodi ma ha suoi propri metodi specifici Un esempio sulla ereditarietà Organizzazione della lezione Una classe Persona che ha: stato: nome, cognome, annodinascita metodi: getcognome(), getnome(), dimmieta() Una classe Studente specializza Persona aggiungendo allo stato: matricola, scuola, classe, sezione, voti, etc. metodi: annodidiploma(), votomaturità(), etc. In questa maniera Studente eredita i metodi di Persona La programmazione orientata agli oggetti motivazioni, obiettivi e principi guida della progettazione Unified Modeling Language (UML) Alcune semplici classi Uso della classe Date e GregorianCalendar Creazione di una nuova classe (Employee) Campi e metodi statici Parametri dei metodi Costruzione di oggetti ed inizializzazione 23 24

7 Unified Modeling Language Le relazioni tra classi in UML (1) Un linguaggio per specificare, visualizzare costruire e documentare le componenti di un sistema software UML definisce una ampia varietà di diagrammi: diagrammi di classe diagrammi di collaborazione diagrammi di stato Notazione simbolica per rappresentare le relazioni tra classi in maniera semplice, chiara e completa Dipendenza una classe A dipende da un altra classe B se gli oggetti di A devono accedere a metodi degli oggetti di B Esempio: gli oggetti della classe Order devono necessariamente usare oggetti della classe Account Order Account Le relazioni tra classi in UML (2) Le relazioni tra classi in UML (3) Aggregazione: Ereditarietà un oggetto della classe A contiene oggetti della classe B Esempio: un oggetto della classe Order contiene oggetti della classe Item Order Item relazione tra una classe più specializzata ed una più generale Esempio: una classe RushOrder (ordine urgente) specializza (eredita) da una classe Order Order RushOrder 27 28

8 Un esempio in UML: Programmazione OO e procedurale (1) Programmazione procedurale Classe Persona Studente TasseScolastiche Due tecniche: top-down: raffinamento graduale di operazioni in operazioni più piccole e semplici fino alla codifica in un linguaggio bottom-up: scrittura procedure per compiti semplici e loro composizione per ottenere la funzionalità desiderata Di solito, utile una miscela delle due tecniche: provvedere ad una prima analisi top-down con scrittura del codice e composizione bottom-up Programmazione OO e procedurale (2) Alcune domande Caratteristica: identificazione ed isolamento delle classi (e solo dopo) identificazione dei metodi delle classi Vantaggi: modularizzazione in maniera indipendente lavoro per team di programmatori identificazione e raggruppamento chiaro dei metodi invece di 2000 funzioni, si hanno 100 classi con 20 metodi Una buona programmazione procedurale è in effetti programmazione orientata agli oggetti? in effetti, scomporre ed isolare le funzioni ed evitare variabili e dati globali è una buona tecnica, indipendentemente dalla metodologia usata Si può programmare ad oggetti con un linguaggio che non sia object-oriented? posso evitare di imparare Java o C++ e continuare a usare il C? 31 32

9 Ed alcune risposte (parziali) Organizzazione della lezione Una buona programmazione procedurale è in effetti programmazione orientata agli oggetti? Il vantaggio di avere la classe e di usarla per avere più oggetti dello stesso tipo non può essere ottenuto in un linguaggio procedurale Si può programmare ad oggetti con un linguaggio che non sia object-oriented? Si, così come è possibile inchiodare un chiodo usando un cacciavite invece di un martello. (sarebbe No ) La programmazione orientata agli oggetti motivazioni, obiettivi e principi guida della progettazione Unified Modeling Language (UML) Alcune semplici classi Uso della classe Date e GregorianCalendar Creazione di una nuova classe (Employee) Campi e metodi statici Parametri dei metodi Costruzione di oggetti ed inizializzazione Oggetti e variabili oggetto La classe Date Per lavorare con gli oggetti I costruttori hanno sempre lo stesso nome della classe si deve costruirli specificando lo stato iniziale In Java esistono i costruttori un metodo speciale offerto dalla classe che permette di costruire, inizializzandone il valore, nuovi oggetti Un esempio: la classe Date Un commento: perché si ritiene di usare una classe e non un tipo predefinito (come in alcuni linguaggi)? Per costruire un nuovo oggetto si combina il costruttore con l operatore new new Date() Cosa si fa dell oggetto creato? lo si può passare a un metodo: si può invocarne un metodo: si assegna ad una variabile: System.out.println(new Date()); String s = new Date().toString(); Date compleanno = new Date(); perché una classe è modificabile, un tipo primitivo no

10 Variabili di riferimento (reference( reference) Classe Date Le variabili oggetto contengono riferimenti a oggetti, non oggetti l operatore new restituisce un riferimento all oggetto creato possibili assegnarle a null per indicare che non fa riferimento ad alcun oggetto la copia di variabili oggetto effettua la copia dei riferimenti non degli oggetti Date compleanno = new Date(); Date scadenza = compleanno; compleanno scadenza Date 37 Memorizza un punto temporale: implementazione: numero (positivo o negativo) di millisecondi trascorsi dalla epoch 1 gennaio 1970 Greenwich Mean Time La progettazione object-oriented: un esempio una descrizione di data (31 dicembre 1976, 23:59:59) è una convenzione arbitraria disciplinata da un calendario il calendario è quello gregoriano (esistono anche quello ebraico, cinese etc.) separazione tra il tempo (Date) e la rappresentazione mediante convenzioni (GregorianCalendar) possibile usare altri calendari 38 Uso di Date e GregorianCalendar Uso di GregorianCalendar Classe Date : pochi metodi metodo before e after: if (today.before(compleanno)) System.out.println ( Comprare il regalo! ); else System.out.println ( Troppo tardi: un altra figuraccia! ); Classe GregorianCalendar : molti metodi e costruttori GregorianCalendar s1 = new GregorianCalendar(); //data e ora della costruzione GregorianCalendar s2 = new GregorianCalendar(1999,11,31); GregorianCalendar s3 = new GregorianCalendar(1999,Calendar.DECEMBER,31); GregorianCalendar s4 = new GregorianCalendar(1999,Calendar.DECEMBER,31, 23, 59, 59); Metodo get preleva informazioni da un oggetto uso di costanti Metodo set GregorianCalendar now = new GregorianCalendar(); int mese = now.get(calendar.month); int giorno = now.get (Calendar.DAY_OF_WEEK); modifica lo stato di un oggetto GregorianCalendar Metodo add scadenza.set(2001, Calendar.April, 15); scadenza.add(calendar.month, 2); //sposta avanti di 2 mesi 39 40

11 Alcuni commenti Conversione tra Date e GregorianCalendar Metodi di modifica Conversione da GregorianCalendar a Date cambiano lo stato dell oggetto (Es. set, add ) Metodi di accesso leggono lo stato dell oggetto (Es. get) Convenzione in Java: i metodi di modifica iniziano con set i metodi di accesso iniziano con get Esempio: metodo settime e gettime 41 GregorianCalendar now = new GregorianCalendar(); Date ora = now.gettime(); Conversione da Date a GregorianCalendar GregorianCalendar now = new GregorianCalendar(); now.settime(ora); int anno = now.get(calendar.year); Maggiori dettagli l esempio CalendarTest.java (pag ) la nota API a pag. 136 del libro 42 Costruzioni di classi personalizzate Definizione di una classe Definizioni di classi più complesse In generale: con più metodi e costruttori di norma senza il metodo main Una convenzione importante (in Java): si definiscono prima i metodi di una classe la sua interfaccia verso l esterno e poi si definiscono i campi (stato) della classe Esempio: definizione di una classe Employee (impiegato) con metodi per il nome, il salario (aumenti etc.), data di assunzione etc. 43 class NomeDellaClasse { costruttore 1 (..) costruttore 2 (..) metodo 1 (..) metodo 2 (..) campo 1 campo 2 44

12 Definizione di una classe Employee Definizione di una classe EmployeeTest Employee.java import java.util.*; // per Date e Calendar // costruttore public Employee (String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar cal = new GregorianCalendar(year, month-1, day); hireday = cal.gettime(); public String getname () { return name; private String name; private double salary; private Date hireday; Il costruttore stesso nome della classe assegna i campi dell oggetto che costruisce Un metodo di accesso restituisce il nome Campi della istanza una stringa (Nome) un double (salario) data di assunzione tutti campi privati 45 EmployeeTest.java import java.util.*; public class EmployeeTest { public static void main (String [ ] args) { Employee[ ] staff = new Employee [ 3 ] ; staff [0]=new Employee ( Gianni, 30000, 1987, 12, 10); staff [1]=new Employee ( Giorgio, 35000, 1985, 10, 31); staff [2]=new Employee ( Ugo, 28000, 2000, 1, 1); for (int i=0; i< staff.length; i++) System.out.println ( Nome: + staff[i].getname() + Salario: + staff[i].getsalary() + Assunto: + staff[i].gethireday() ); Dichiarazione di array di Employee Assegnazione: uso del costruttore Stampa dei dati inseriti uso di metodi getsalary() e gethireday() definiti in maniera simile a getname() (vedi libro) 46 Compilazione ed esecuzione Java è dinamico, vero? C:\>javac Employee.java C:\>javac EmployeeTest.java C:\>java EmployeeTest Nome:Gianni Salario: Assunto:Thu Dec 10 Nome:Giorgio Salario: Assunto:Thu Oct 31 Nome:Ugo Salario: Assunto:Sat Jan 01 C:\> La classe Employee viene caricata dalla macchina virtuale durante la esecuzione Facciamo una prova: modifichiamo il costruttore in modo da inserire un salario negativo (il valore negativo del salario passato dal costruttore!) ricompiliamo la classe Employee eseguiamo senza ricompilare EmployeeTest e 47 48

13 Compilazione ed esecuzione Una descrizione in UML C:\>javac Employee.java C:\>javac EmployeeTest.java C:\>java EmployeeTest Nome:Gianni Salario: Assunto:Thu Dec 10 Nome:Giorgio Salario: Assunto:Thu Oct 31 Nome:Ugo Salario: Assunto:Sat Jan 01 C:\>javac Employee.java C:\>java EmployeeTest Nome:Gianni Salario: Assunto:Thu Dec 10 Nome:Giorgio Salario: Assunto:Thu Oct 31 Nome:Ugo Salario: Assunto:Sat Jan 01 C:\> 49 Modificatori di accesso -= privato + = pubblico EmployeeTest «misc» + main (String [ ] args) Nome della classe Metodi delle istanze Employee - name : String - salary : double - hireday : Date «constructor» +Employee(n: String, s:double, year: int, month: int, day: int) «misc» + getname() : String + getsalary() : double + gethireday() : Date + raisesalary(percent double) Variabili delle istanze 50 Alcuni commenti sui costruttori Un tipico errore nei costruttori Costruttore: metodo con lo stesso nome della classe Attenzione: un costruttore può essere chiamato solamente con l operatore new una classe può avere più costruttori un costruttore può accettare zero, uno o più parametri un costruttore non restituisce un valore public Employee (String n, double s, int year, int month, int day) { String name = n; double salary = s; Date hireday = new GregorianCalendar(year, month-1,day); private String name; private double salary; private Date hireday; Dove è l errore? stiamo oscurando con variabili locali al costruttore i campi della istanza: 51 52

14 Il metodo raisesalary() I parametri di raisesalary() Per poter modificare il salario di un dipendente Implementato così: Chiamato così: public void raisesalary (double percent) { double raise = salary * percent/100; // calcolo aumento salary += raise; // aggiorno stipendio private String name; private double salary; private Date hireday; Employee e = new Employee ( tizio, 1000, 1998, 12, 1); e.raisesalary(5.3); 53 public void raisesalary (double percent) Un parametro esplicito (percent) ed uno implicito (l oggetto che figura prima della chiamata del metodo) e.raisesalary(5.3); Ci si può riferire al parametro implicito con this public void raisesalary (double percent) { double raise = this.salary * percent/100; // calcolo aumento this.salary += raise; // aggiorno stipendio 54 L importanza della privatezza dei dati Un esempio con la classe Employee Campi privati (name, salary, hireday) accesso esclusivamente attraverso i metodi (pubblici) Se si riscontrano errori: si conosce esattamente quali sono i metodi che modificano i campi che si trovano all interno della classe Si può modifica la implementazione semplicemente modificando i metodi Eventuali errori di assegnazione possono essere riconosciuti dai metodi (salario < 0) 55 Ricordiamo che: public void raisesalary (double percent) { double raise = salary * percent/100; // calcolo aumento salary += raise; // aggiorno stipendio private String name; private double salary; private Date hireday; il metodo raisesalary è pubblico mentre il campo salary è privato 56

15 Un errore evitato a tempo di compilazione!! Accesso dei metodi ai dati privati Sarebbe possibile scrivere in EmployeeTest: public class EmployeeTest { public static void main (String [ ] args) { Employee[ ] staff = new Employee [ 3 ] ; staff[0].raisesalary(5.3); // ok, accesso con metodo pubblico // poi, per errore Morale: staff[0].salary = 1000; // NO! errore IN COMPILAZIONE! non dichiarare campi istanza pubblici campo ma fornire la implementazione di metodi getcampo(), setcampo() per l accesso al campo 57 Una caratteristica sorprendente: i metodi di un oggetto accedono ai dati privati di tutti gli oggetti della stessa classe Esempio: boolean equals (Employee other) { return name.equals(other.name); il metodo equals() accede al campo name sia dell oggetto a cui appartiene sia al campo privato dell oggetto Employee other 58 Metodi privati Organizzazione della lezione Pratica di buona programmazione: I campi istanza sono privati ed i metodi pubblici Eccezione: metodi privati che suddividono il codice in moduli indipendenti (usati solo da altri metodi della classe) possibile cambiarlo senza preoccuparsi di chi lo usa: solamente i metodi della classe lo usano Campi di istanza final tipo di campo in cui il valore assegnato dal costruttore non può essere cambiato. Esempio: il nome di un impiegato String final name; 59 La programmazione orientata agli oggetti motivazioni, obiettivi e principi guida della progettazione Unified Modeling Language (UML) Alcune semplici classi Uso della classe Date e GregorianCalendar Creazione di una nuova classe (Employee) Campi e metodi statici Parametri dei metodi Costruzione di oggetti ed inizializzazione 60

16 Campi statici L uso di campi statici Una variabile statica (di classe) è una variabile di cui ne esiste solamente una copia per tutta la classe Esempio: supponiamo di voler assegnare un campo ID ad ogni impiegato della classe Employee aggiungiamo: una variabile di istanza (per ogni singolo impiegato) id una variabile statica (per tutti gli oggetti della classe) nextid che viene inizializzata (1 volta) ad 1. private int id; private static int nextid = 1; 61 Implementiamo un metodo per assegnare l id: public void setid() { id = nextid++; private int id; private static int nextid = 1; Così dopo ogni chiamata di setid() il prossimo dipendente prenderà una nuova id. 62 La nuova versione di Employee La nuova classe EmployeeTest Employee.java import java.util.*; public void setid() { id = nextid++; public int getid () { return id; // campi delle istanze della classe private String name; private double salary; private Date hireday; private int id; private static int nextid = 1; Due nuovi metodi: uno per settare l Id l altro per leggerla Il campo id risulta essere privato: accesso solo tramite setid() e getid() Il campo nextid static (unico per tutta la classe) viene incrementato ogni volta che l id è usato da un impiegato 63 EmployeeTest.java import java.util.*; public class EmployeeTest { public static void main (String [ ] args) { Employee[ ] staff = new Employee [ 3 ] ; staff [0]=new Employee ( Gianni, 30000, 1987, 12, 10); staff [1]=new Employee ( Giorgio, 35000, 1985, 10, 31); staff [2]=new Employee ( Ugo, 28000, 2000, 1, 1); for (int i=0; i< staff.length; i++) { staff[i].setid(); System.out.println ( Nome: + staff[i].getname() + Salario: + staff[i].getsalary() + Assunto: + staff[i].gethireday() + Id: + staff[i].getid() ); Per ogni staff setto la ID questo fa incrementare nextid (campo statico) alla stampa, l id sarà 1,2,3 per i tre impiegati 64

17 Costanti statiche Metodi statici Le costanti statiche sono abbastanza comuni classicamente in Math vengono definiti valori utili Tipicamente le costanti statiche sono allo stesso tempo public e final: questo va bene: risultano accessibili solamente in lettura (di fatto) non essendo modificabili Altri esempi di costanti: la codifica intera dei mesi nella classe Calendar public class Math { public static final double PI = ; 65 Sono metodi che non operano su oggetti (non hanno parametri impliciti) Esempio: i metodi messi a disposizione da Math Math.pow(x,y) Non è necessario chiamare il metodo statico da un oggetto basta chiamare il metodo con il nome della classe I metodi statici possono accedere solo ai campi statici: public static int getnextid() { return nextid; 66 Metodi statici particolari Organizzazione della lezione Metodi fabbricatori metodi che pur non essendo costruttori restituiscono un oggetto della classe Metodo main () permette la esecuzione di un programma associato ad una classe spesso utile aggiungere un metodo main ad una classe anche se non si userà perché può servire per testare il comportamento della classe esempio: si può aggiungere un main di test a Employee La programmazione orientata agli oggetti motivazioni, obiettivi e principi guida della progettazione Unified Modeling Language (UML) Alcune semplici classi Uso della classe Date e GregorianCalendar Creazione di una nuova classe (Employee) Campi e metodi statici Parametri dei metodi Costruzione di oggetti ed inizializzazione 67 68

18 Parametri dei metodi Il passaggio di parametri in Java Passaggio di parametri: per valore il valore del parametro attuale viene copiato nel parametro formale le modifiche effettuate dal metodo non hanno effetto sulla variabile passata al metodo (parametro attuale) per riferimento il metodo riceve la locazione di memoria della variabile le modifiche effettuate dal metodo sono effettuate sulla variabile passata al metodo (parametro attuale) Poiché le uniche variabili non di riferimento sono quelle dei tipi primitivi: tutte i passaggi di parametri di variabili di tipo primitivo sono fatti per valore tutti i passaggi di parametri di oggetti sono fatti passando per valore la variabile riferimento (per i puristi) questo non è un passaggio per riferimento ad esempio non si può fare lo swap Alcuni metodi statici in EmployeeTest L overloading dei metodi EmployeeTest.java import java.util.*; public class EmployeeTest { public static void triplesalary (Employee x) { x.raisesalary (200); public static void main (String [ ] args) { Employee[ ] staff = new Employee [ 3 ] ; // creazione dei tre impiegati triplesalary (staff[1]); // metodo statico for (int i=0; i< staff.length; i++) { staff[i].setid(); System.out.println ( Nome: + staff[i].getname() + Salario: + staff[i].getsalary() + Assunto: + staff[i].gethireday() + Id: + staff[i].getid() ); Definizione metodo statico passaggio di parametri di una variabile di riferimento le modifiche fatte a x sono fatte a staff[1] Stampa degli impiegati 71 È possibile avere più metodi con lo stesso nome utile per gestire (ad esempio) costruttori diversi Come capisce il compilatore quale metodo usare? ogni metodo ha una sua firma: la sequenza di nome ed il tipo (e la successione) dei parametri passati ad esempio, la classe String ha 4 metodi indexof indexof (int) indexof (int, int) indexof (String) indexof (String, int) 72

19 Costruttori predefiniti Inizializzazione di campo esplicita Solo se non si costruisce una classe senza costruttori, allora viene fornito (dal compilatore) il costruttore predefinito (senza parametri) altrimenti si inserisce esplicitamente, se lo si vuole public Employee () { // costruttore vuoto 73 I campi possono essere esplicitamente inizializzati: private String qualifica = Impiegato ; anche eventualmente con chiamate a metodi della classe: static int assignid() { int r = nextid++; return r private int id = assignid(); 74 Blocchi di inizializzazione Blocchi di codice inseriti nella classe eseguiti ogni volta che viene creato un oggetto public Employee (String n, double s) { name = n; salary = s: { // blocco di inizializzazione id = nextid; nextid++; private String name; private double salary; private int id; private static int nextid=1; 75

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Programmi applicativi Un programma applicativo (o applicativo) è un eseguibile che può essere utilizzato dall utente e che ha funzionalità di alto livello (word processor, spreadsheet, DBMS) Univ. Milano-Bicocca

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro - PowerDIP Software gestione presenze del personale aziendale - Guida all inserimento e gestione dei turni di lavoro - Informazioni preliminari. E necessario innanzitutto scaricare e installare l ultima

Dettagli

INTRODUZIONE ALLE BASI DATI RELAZIONALI

INTRODUZIONE ALLE BASI DATI RELAZIONALI INTRODUZIONE ALLE BASI DATI RELAZIONALI RELAZIONI E TABELLE Nelle BASI DI DATI RELAZIONALI le informazioni sono organizzate in TABELLE; Le tabelle sono rappresentate mediante griglie suddivise in RIGHE

Dettagli

Refactoring 5 Sposta Metodo. 5 Sposta Metodo. 5 Sposta Metodo - Codice iniziale

Refactoring 5 Sposta Metodo. 5 Sposta Metodo. 5 Sposta Metodo - Codice iniziale Refactoring Un metodo sta usando più caratteristiche (attributi e operazioni) di un altra classe che non quella in cui è definito Crea un nuovo metodo con un corpo simile nella classe che il metodo usa

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività Valentina Presutti (A-L) Riccardo Solmi (M-Z) Definizione del problema Modello di un dominio Si vuole

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Le aree dell informatica

Le aree dell informatica Fondamenti di Informatica per la Sicurezza a.a. 2006/07 Le aree dell informatica Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università

Dettagli

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi 7 Disegni sperimentali ad un solo fattore Giulio Vidotto Raffaele Cioffi Indice: 7.1 Veri esperimenti 7.2 Fattori livelli condizioni e trattamenti 7.3 Alcuni disegni sperimentali da evitare 7.4 Elementi

Dettagli

Analisi e diagrammi di struttura: esercizi

Analisi e diagrammi di struttura: esercizi Analisi e diagrammi di struttura: esercizi Angelo Di Iorio A.A. 2013-2014 Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2013-2014 1 / 18 Modello di dominio e classi di analisi

Dettagli

Sistemi Web per il turismo - lezione 3 -

Sistemi Web per il turismo - lezione 3 - Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla

Dettagli

Via Oberdan, 42, 48018 Faenza (RA) Italy Tel.: ++39-0546-677111 Fax: ++39-0546-677577 E-mail: support_ahd@eu.irco.com WAVE MODE MOBILE GUIDA RAPIDA

Via Oberdan, 42, 48018 Faenza (RA) Italy Tel.: ++39-0546-677111 Fax: ++39-0546-677577 E-mail: support_ahd@eu.irco.com WAVE MODE MOBILE GUIDA RAPIDA Via Oberdan, 4, 4808 Faenza (RA) Italy Tel.: ++9-0546-677 Fax: ++9-0546-677577 E-mail: support_ahd@eu.irco.com WAVE MODE MOBILE GUIDA RAPIDA * tasti con doppia funzionalità : dipende dalla modalità di

Dettagli

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007 Files in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Definizione di file in C++ Un esempio Uso dei file Esempi Esercizi Motivazioni il programma in esecuzione legge (sequenzialmente)

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1 Modelli di Base Dati 4 Un DBMS: Access a.a. 2001/2002 4.1 DBMS 4.2 DBMS = Data Base Management System Software per la costruzione e la gestione di una base dati Esempi di DBMS: Oracle, MySQL, SQLServer,

Dettagli

I database. Introduzione alla teoria delle basi di dati

I database. Introduzione alla teoria delle basi di dati I database Introduzione alla teoria delle basi di dati 1 Cosa sono e a cosa servono i Database Un database (o base di dati) e' una raccolta organizzata di dati correlati. Il principale scopo di un database

Dettagli

18/05/2016 MANUALE UTENTE

18/05/2016 MANUALE UTENTE 18/05/2016 MANUALE UTENTE Indice dei contenuti 2 1. ACCESSO AL SISTEMA PAGOINRETE... 3 2. HOME PAGE... 4 3. RICHIEDI ASSISTENZA... 5 4. SERVIZI DI PAGAMENTO... 6 5. VISUALIZZA CONDIZIONI CONTRATTUALI PSP...

Dettagli

Università per Stranieri di Siena

Università per Stranieri di Siena Università per Stranieri di Siena Certificazione CILS Manuale istruzioni ISCRIZIONI ON-LINE Manuale per ISCRIZIONE ON-LINE ESAMI DITALS Passo 1. Collegamento al sito Collegarsi all indirizzo: http://online.unistrasi.it/logincils.htm

Dettagli

M n a u n a u l a e l e o p o e p r e a r t a i t v i o v o Ver. 1.0 19/12/2014

M n a u n a u l a e l e o p o e p r e a r t a i t v i o v o Ver. 1.0 19/12/2014 Ver. 1.0 19/12/2014 Sommario 1 Introduzione... 3 1.1 Aspetti funzionali NtipaTime... 3 2 Accesso al sistema... 4 2.1 Riservatezza dei dati login Utente... 4 2.2 Funzionalità Role_user... 5 2.2.1 Struttura

Dettagli

La codifica. dell informazione

La codifica. dell informazione La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

WINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

WINDOWS95. 1. Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni WINDOWS95 1. Avviare Windows95 Avviare Windows95 non è un problema: parte automaticamente all accensione del computer. 2. Barra delle applicazioni 1 La barra delle applicazioni permette di richiamare le

Dettagli

Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare!

Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare! Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare! Elena M. Brambilla Technical Account Manager & Training Manager - Zend Technologies Chi sonoio.elena M. Brambilla Technical

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: cristian.delfabbro@uniud.it telefono: 0432 558676

Dettagli

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; } Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double

Dettagli

VoipExperts.it - CISCO <=> AVAYA

VoipExperts.it - CISCO <=> AVAYA In questo articolo ci occuperemo di mettere in comunicazione (trunk) un centralino Avaya Ip Office con il call manager di Cisco usando come protocollo H323. Per i test in laboratorio, sono stati usati

Dettagli

Ministero della Salute

Ministero della Salute Ministero della Salute DIREZIONE GENERALE DELLA PROGRAMMAZIONE SANITARIA UFFICIO V FAQ ANAGRAFE FONDI SANITARI DOCUMENTI, DATI E INFORMAZIONI DA INSERIRE NEL SIAF 1. Quando si richiede il profilo per accedere

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti

Dettagli

UNIWEB- GUIDA STUDENTE INSERIMENTO PIANO DEGLI STUDI ON LINE

UNIWEB- GUIDA STUDENTE INSERIMENTO PIANO DEGLI STUDI ON LINE UNIWEB- GUIDA STUDENTE INSERIMENTO PIANO DEGLI STUDI ON LINE In queste pagine vengono illustrate le procedure da seguire per l inserimento del piano degli studi tramite Uniweb per quei corsi di laurea

Dettagli

Procedura operativa per la gestione della funzione di formazione classi prime

Procedura operativa per la gestione della funzione di formazione classi prime Procedura operativa per la gestione della funzione di formazione classi prime Questa funzione viene fornita allo scopo di effettuare la formazione delle classi prime nel rispetto dei parametri indicati

Dettagli

Introduzione al NATTING

Introduzione al NATTING Introduzione al NATTING I Router CISCO sono in grado di svolgere funzioni proprie di un firewall, in particolare possono effettuare la trasformazione degli indirizzi IP PRIVATI usati dai pc della rete

Dettagli

Lettura e scrittura di file di dati input/output

Lettura e scrittura di file di dati input/output Lettura e scrittura di file di dati input/output Lettura e scrittura da disco Molto semplice in C++: si fa esattamente come se fosse una tastiera (se sto leggendo da disco) o lo schermo (se sto scrivendo

Dettagli

1 Considerare la seguente descrizione del processo di prestito dei libri di una biblioteca, per il quale si vuole progettare un software:

1 Considerare la seguente descrizione del processo di prestito dei libri di una biblioteca, per il quale si vuole progettare un software: 1 Considerare la seguente descrizione del processo di prestito dei libri di una biblioteca, per il quale si vuole progettare un software: Un testo può essere composto da uno o più tomi. Ogni tomo ha una

Dettagli

Introduzione ORGANIZZAZIONE DEL LIBRO. Il libro è composto da 12 capitoli organizzati nelle tre parti seguenti:

Introduzione ORGANIZZAZIONE DEL LIBRO. Il libro è composto da 12 capitoli organizzati nelle tre parti seguenti: Introduzione Questo libro, espressamente rivolto ai programmatori esperti in Java, tratta gli elementi essenziali della piattaforma Java 2 Enterprise Edition (J2EE) e analizza in modo particolare le nuove

Dettagli

PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20

PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 Introduzione Materiale richiesto Notebook o computer Controllore PCD1 E Cavo USB Scheda «Training»

Dettagli

testo Saveris Web Access Software Istruzioni per l'uso

testo Saveris Web Access Software Istruzioni per l'uso testo Saveris Web Access Software Istruzioni per l'uso 2 1 Indice 1 Indice 1 Indice... 3 2 Descrizione delle prestazioni... 4 2.1. Utilizzo... 4 2.2. Requisiti di sistema... 4 3 Installazione... 5 3.1.

Dettagli

Corso di Informatica

Corso di Informatica CdLS in Odontoiatria e Protesi Dentarie Corso di Informatica Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Immagini in movimento 2 Immagini in movimento Memorizzazione mediante sequenze di fotogrammi.

Dettagli

Materiale didattico. Sommario

Materiale didattico. Sommario Diploma Universitario in Ingegneria Informatica Corso di Ingegneria del Software Docente: ing. Anna Rita Fasolino Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II

Dettagli

B2B. Manuale per l utilizzatore.

B2B. Manuale per l utilizzatore. B2B Manuale per l utilizzatore. Pag.1 di 9 Accesso al portale Dal sito istituzionale di (www.safesafety.com) si accede alla sezione e-commerce B2B cliccando sull omonima icona. E anche possibile accedere

Dettagli

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino mento del listino re il listino è molto semplice e richiede poco tempo. Prima di lanciare il comando listino occorre fare attenzione al tipo di listino che si deve aggiornare. Tenere ben presente che i

Dettagli

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica Corso di laurea in Informatica Mobile Prof. De Prisco Prova scritta del 22/01/2016 NOME: COGNOME: MATRICOLA: Domande Punti 1 /10 2 /10 3 /10 4 /10 5 /10 6 /10 7 /10 8 /10 9 /10 10 /10 TOTALE /100 Quesito

Dettagli

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno. Tipo File Per memorizzare un dato su un supporto magnetico come un hard disk o un nastro, o più in generale su un'unità di memoria di massa viene utilizzata un tipo di dato chiamato file. Un file può essere

Dettagli

Note_Batch_Application 04/02/2011

Note_Batch_Application 04/02/2011 Note Utente Batch Application Cielonext La Batch Application consente di eseguire lavori sottomessi consentendo agli utenti di procedere con altre operazioni senza dover attendere la conclusione dei suddetti

Dettagli

Canzone. PER DIMENTICARE degli ZERO ASSOLUTO. Piano per una lezione.

Canzone. PER DIMENTICARE degli ZERO ASSOLUTO. Piano per una lezione. Canzone. PER DIMENTICARE degli ZERO ASSOLUTO. Piano per una lezione. moryama Livello: da pre-intermedio in su Tempo: 2 ore circa Obiettivi: scrivere una lettera con formule di scusa e di auguri; praticare

Dettagli

Lezione 3 Progettazione di siti

Lezione 3 Progettazione di siti Lezione 3 Progettazione di siti Ingegneria dei Processi Aziendali Modulo 1 Servizi Web Unità didattica 1 Protocolli Web Ernesto Damiani Università di Milano Elementi base della progettazione di servizi

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

ECDL CORE 5.0. Modulo 1 Concetti di base dell ICT 1.6 Aspetti giuridici. Docente: Stefania De Martino Liceo G. Leopardi Recanati a.s.

ECDL CORE 5.0. Modulo 1 Concetti di base dell ICT 1.6 Aspetti giuridici. Docente: Stefania De Martino Liceo G. Leopardi Recanati a.s. ECDL CORE 5.0 Modulo 1 Concetti di base dell ICT Docente: Stefania De Martino Liceo G. Leopardi Recanati a.s. 2012/2013 Scopi del Modulo 1 Concetti di base dell ICT, richiede che il candidato comprenda

Dettagli

SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI

SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI 1/10 SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI 2/10 ARCHITETTURA DI SISTEMA Il sistema è basato su una rete di stazioni di ricarica, con configurazione e tipologia

Dettagli

Manutenzione periodica al PIANO DEI CONTI

Manutenzione periodica al PIANO DEI CONTI Manutenzione periodica al PIANO DEI CONTI La nuova gestione Utilità Piano dei Conti Premessa... 2 La creazione di un nuovo sottoconto... 3 1. Nuovo sottoconto tramite duplica da piano dei conti standard...

Dettagli

RICHIESTA CERTIFICATO DI AGIBILITÀ IMPRESE CHE OCCUPANO LAVORATORI DEL SETTORE DELLO SPETTACOLO

RICHIESTA CERTIFICATO DI AGIBILITÀ IMPRESE CHE OCCUPANO LAVORATORI DEL SETTORE DELLO SPETTACOLO RICHIESTA CERTIFICATO DI AGIBILITÀ IMPRESE CHE OCCUPANO LAVORATORI DEL SETTORE DELLO SPETTACOLO MANUALE UTENTE Data di consegna 15/05/2015 Versione 1.0 - Pag. 1 1. Introduzione... 3 2. Scopo del documento...

Dettagli

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE a.s. 2015/16 CLASSE 2^ ASA Indirizzo di studio Liceo scientifico Scienze Applicate Docente Disciplina

Dettagli

(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B Compito: Domanda 1 Per l'algoritmo fornito di seguito, qual è il valore assunto dalla variabile contatore quando l'algoritmo termina: Passo 1 Poni il valore di contatore a 1 Passo 2 Ripeti i passi da 3

Dettagli

Java Native Interface Appunti

Java Native Interface Appunti Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per

Dettagli

MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione)

MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione) UNIVERSITA DEGLI STUDI DI MACERATA AREA PERSONALE SETTORE P.T.A. Ufficio presenze e affari generali P.T.A. MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione) Ufficio presenze affari generali

Dettagli

Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi

Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi Uso degli oggetti Uso di oggetti predefiniti attraverso l'invio di messaggi. Il concetto di metodo; argomenti e restituzione di valori; segnatura e prototipo di un metodo. Il concetto di overloading. Le

Dettagli

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione.

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione. Scrivere un programma per la gestione di una videoteca. Il programma deve essere in grado di tenere traccia dello stato corrente (presente/in prestito a x/smarrito da x/danneggiato da x a livello nn) e

Dettagli

ALBO PRETORIO WEB MANUALE DI GESTIONE

ALBO PRETORIO WEB MANUALE DI GESTIONE ALBO PRETORIO WEB MANUALE DI GESTIONE Demos Data S.r.l. INDICE 1. Accesso all area riservata 2. Inserimento di una nuova pubblicazione con allegati 2.1 Nuova pubblicazione 2.2 Allegare documenti 3. Modifica

Dettagli

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Manuale utente Soggetto Promotore Erogatore Politiche Attive Manuale utente Soggetto Promotore Erogatore Politiche Attive Guida all utilizzo del Sistema Garanzia Giovani della Regione Molise Sistema Qualità Certificato UNI EN ISO 9001:2008 9151.ETT4 IT 35024 ETT

Dettagli

Matematica con il foglio di calcolo

Matematica con il foglio di calcolo Matematica con il foglio di calcolo Sottotitolo: Classe: V primaria Argomento: Numeri e operazioni Autore: Guido Gottardi, Alberto Battaini Introduzione: l uso del foglio di calcolo offre l opportunità

Dettagli

GUIDA PER LA COMPILAZIONE DELLA DOMANDA ON LINE DI PARTECIPAZIONE AL

GUIDA PER LA COMPILAZIONE DELLA DOMANDA ON LINE DI PARTECIPAZIONE AL GUIDA PER LA COMPILAZIONE DELLA DOMANDA ON LINE DI PARTECIPAZIONE AL CONCORSO PER L AMMISSIONE AI CORSI DI DOTTORATO DI RICERCA CICLO XXXI A.A. 2015-2016 URRI/MC/as 1 La presente Guida fornisce le indicazioni

Dettagli

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38

Dettagli

Integrazione al Manuale Utente 1

Integrazione al Manuale Utente 1 CONTABILITA PROFESSIONISTI La contabilità dei professionisti di Picam (criterio di cassa, registro cronologico, registro incassi e/o pagamenti) è utilizzabile solamente nella versione Picam.com e Picam.com

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) gianfranco.rossi@unipr.it Indice 1 Introduzione

Dettagli

Manuale Sito Videotrend

Manuale Sito Videotrend Manuale Sito Videotrend 1 Sommario INTRODUZIONE...3 PRESENTAZIONE...4 1 GESTIONE DDNS...6 1.1 GESTIONE DDNS...6 1.2 CONNESSIONE DDNS...6 1.3 CREA ACCOUNT DDNS...7 1.4 GESTIONEACCOUNT...7 1.5 IMPIANTI DDNS...8

Dettagli

Processi, Threads e Agenti

Processi, Threads e Agenti Processi, Threads e Agenti Processi in Sistemi Distribuiti Un sistema software distribuito ècompostodaun insieme di processi in esecuzione su più nodi del sistema. Un algoritmo distribuito può essere definito

Dettagli

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

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

Dettagli

Ministero delle Infrastrutture e dei Trasporti SERVIZIO DI CONTROLLO INTERNO

Ministero delle Infrastrutture e dei Trasporti SERVIZIO DI CONTROLLO INTERNO SERVIZIO DI CONTROLLO INTERNO ISTRUZIONI PER L UTILIZZO DELLA NUOVA PIATTAFORMA PER IL CONTROLLO DI GESTIONE SIGEST ROMA, SETTEMBRE 2009 INDICE 1. PREMESSA... 3 2. INFORMAZIONI GENERALI... 3 3. MODALITA

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 1/01/016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

Dettagli

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1 Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1 Release NOTE 1.1 Prima Versione del Manuale INDICE 1-INTRODUZIONE... 4 2- GESTIONE DEL CATALOGO PIXMANIA-PRO SU IMAIO... 5 3-Configurazione

Dettagli

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi Progetto B Progettare un applicazione web basata su Servlet e JSP che permetta la collaborazione di diversi utenti nel creare, aggiornare e gestire un archivio di pagine personali degli autori di un giornale.

Dettagli

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

SaWork ha un modulo specifico per il consulente che ha la visibilità su tutte le aziende sue clienti da dove può:

SaWork ha un modulo specifico per il consulente che ha la visibilità su tutte le aziende sue clienti da dove può: SaWork è una soluzione software, dedicato alla gestione della sicurezza in azienda secondo quanto previsto dal Decreto Legge81/08 e dal successivo decreto 106/09 SaWork è una soluzione software pensata

Dettagli

La ricerca con. A cura del gruppo Portale della Biblioteca Digitale. Novembre 2011. Sistema Bibliotecario di Ateneo Università di Padova

La ricerca con. A cura del gruppo Portale della Biblioteca Digitale. Novembre 2011. Sistema Bibliotecario di Ateneo Università di Padova La ricerca con A cura del gruppo Portale della Biblioteca Digitale Novembre 2011 Come funziona Google Esplora il web per raccogliere tutti i siti, le immagini, le pagine che contengono i termini che hai

Dettagli

ISTRUZIONI PER L USO DEL SOFTWARE. PER LA PROGRAMMAZIONE DEI TELECOMANDI Alias

ISTRUZIONI PER L USO DEL SOFTWARE. PER LA PROGRAMMAZIONE DEI TELECOMANDI Alias ISTRUZIONI PER L USO DEL SOFTWARE PER LA PROGRAMMAZIONE DEI TELECOMANDI Alias Alias e la nuova linea di telecomandi universali programmabili che permettono di replicare qualsiasi tipo di telecomando esistente

Dettagli

e-shop Ordina online i tuoi prodotti con pochi e semplici clic!

e-shop Ordina online i tuoi prodotti con pochi e semplici clic! Ordina online i tuoi prodotti con pochi e semplici clic! ACQUISTI IMPERO ONLINE GUIDA UTENTE Introduzione e-shop, il sito web per gli acquisti Impero online e-shop garantisce l accesso a 10 000 articoli

Dettagli

WORKING HOLIDAY VISA GUIDA ALLA RICHIESTA ONLINE DEL WORKING HOLIDAY VISA 417 PER L AUSTRALIA

WORKING HOLIDAY VISA GUIDA ALLA RICHIESTA ONLINE DEL WORKING HOLIDAY VISA 417 PER L AUSTRALIA WORKING HOLIDAY VISA GUIDA ALLA RICHIESTA ONLINE DEL WORKING HOLIDAY VISA 417 PER L AUSTRALIA Caratteristiche del visto Working Holiday visa (subclass 417) Requisiti: - età 18-30 - non avere figli - essere

Dettagli

ALLEGATO: ISTRUZIONI PER L OPERATORE DI SEDE PER ACQUISIRE LE DOMANDE TELEMATICHE DI RICONGIUNZIONE

ALLEGATO: ISTRUZIONI PER L OPERATORE DI SEDE PER ACQUISIRE LE DOMANDE TELEMATICHE DI RICONGIUNZIONE ALLEGATO: ISTRUZIONI PER L OPERATORE DI SEDE PER ACQUISIRE LE DOMANDE TELEMATICHE DI RICONGIUNZIONE Di seguito la descrizione dettagliata degli adempimenti a carico dell operatore. Una volta che la domanda

Dettagli

Capitolo 9. Esercizio 9.1. Esercizio 9.2

Capitolo 9. Esercizio 9.1. Esercizio 9.2 Capitolo 9 Esercizio 9.1 Considerare lo relazione in figura 9.19 e individuare le proprietà della corrispondente applicazione. Individuare inoltre eventuali ridondanze e anomalie nella relazione. Docente

Dettagli

Introduzione alle macchine a stati (non definitivo)

Introduzione alle macchine a stati (non definitivo) Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in

Dettagli

Progettazione logica

Progettazione logica Progettazione logica Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E- R in modo corretto ed efficiente. Richiede

Dettagli

Autodesk Map parte I digitalizzazione e importazione dati

Autodesk Map parte I digitalizzazione e importazione dati Autodesk Map parte I digitalizzazione e importazione dati Marco Negretti e-mail: marco.negretti@polimi.it http://geomatica.como.polimi.it V 5.1 10/10/08 I dati in Autodesk Map I dati vengono memorizzati

Dettagli

HARDWARE INTERNET NETWORKING

HARDWARE INTERNET NETWORKING EASYGEST GESTIONE SCADENZE SCADENZE Tramite la gestione dello scadenziario è possibile ottenere in tempo reale la situazione degli incassi da ottenere e dei pagamenti da effettuare. La registrazione delle

Dettagli

Ingegneria del Software 9. Macchine a stati. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Ingegneria del Software 9. Macchine a stati. Dipartimento di Informatica Università di Pisa A.A. 2014/15 Ingegneria del Software 9. Macchine a stati Dipartimento di Informatica Università di Pisa A.A. 2014/15 so far Modello del dominio Modello statico: diagrammi delle classi Modello dinamico : diagrammi di

Dettagli

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it Guida introduttiva su Eclipse Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it Introduzione Eclipse è un ambiente di sviluppo (IDE) multilinguaggio e multipiattaforma scritto in Java. E Open Source. Può

Dettagli

Manuale cliente finale portale accertamenti delibera 40

Manuale cliente finale portale accertamenti delibera 40 Manuale cliente finale portale accertamenti delibera 40 Il presente manuale è indirizzato al cliente, per inoltrare la documentazione per l attivazione/riattivazione della fornitura con Accertamento Documentale.

Dettagli

ANAGRAFE NAZIONALE CREDITI FORMATIVI. Manuale utente

ANAGRAFE NAZIONALE CREDITI FORMATIVI. Manuale utente ANAGRAFE NAZIONALE CREDITI FORMATIVI Manuale utente Versione 1.0.0 APRILE 2015 1. Registrazione Per accedere al Sistema è necessario avere un nome utente e una password, ottenibili mediante una semplice

Dettagli

OPERAZIONI CHIUSURA E APERTURA Note operative

OPERAZIONI CHIUSURA E APERTURA Note operative OPERAZIONI CHIUSURA E APERTURA Note operative N.B. E importante accertarsi, in caso di multiutenza, che altri operatori non effettuino operazioni contabili mentre ci si appresta a generare le chiusure

Dettagli

Navigare in Internet Laboratorio di approfondimento la creazione di siti web e/o blog. Marco Torciani. (Seconda lezione) Unitre Pavia a.a.

Navigare in Internet Laboratorio di approfondimento la creazione di siti web e/o blog. Marco Torciani. (Seconda lezione) Unitre Pavia a.a. Navigare in Internet Laboratorio di approfondimento la creazione di siti web e/o blog (Seconda lezione) Unitre Pavia a.a. 2014-2015 27/01/2015 dott. 1 In informatica l'hypertext Markup Language (HTML)

Dettagli