Lezione 4 Programmazione Object-Oriented in Java

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Lezione 4 Programmazione Object-Oriented in Java"

Transcript

1 Lezione 4 Programmazione Object-Oriented in Java Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione 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 A.A Università di Salerno 1

2 Organizzazione della lezione 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/Software: una evoluzione sbilanciata 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 A.A Università di Salerno 2

3 Alcune leggi e strategie 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 La programmazione orientata agli oggetti 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 A.A Università di Salerno 3

4 Obiettivo 1: la robustezza del software Software robusto: 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 Obiettivo 2: la adattibilità del software I programmi hanno una vita molto lunga 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 A.A Università di Salerno 4

5 Obiettivo 3: la riusabilità del software Sviluppo del software di qualità: 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 9 La programmazione a oggetti Il programma è costituito da oggetti 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à 10 A.A Università di Salerno 5

6 Caratteristiche chiave della OOP 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 Il vocabolario della OOP: le classi 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 A.A Università di Salerno 6

7 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 A.A Università di Salerno 7

8 Principio 3: Modularità 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 ) 15 Un esempio di gerarchia is a Edifici Appartamenti Case Commerciali In parchi In edifici A 2 piani Basse Grattacieli 16 A.A Università di Salerno 8

9 Il vocabolario della OOP: gli oggetti Tre caratteristiche fondamentali: 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 Progettare con oggetti Identificare le classi ed i metodi da applicare 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 A.A Università di Salerno 9

10 Progettare con oggetti: un esempio 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 19 Relazioni tra classi 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 20 A.A Università di Salerno 10

11 Relazioni: Dipendenza La relazione più comune e generale: 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. 21 Relazioni: Aggregazione ed ereditarietà Aggregazione: 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 22 A.A Università di Salerno 11

12 Un esempio sulla ereditarietà 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 23 Organizzazione della lezione 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 24 A.A Università di Salerno 12

13 Unified Modeling Language 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 25 Le relazioni tra classi in UML (1) 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 26 A.A Università di Salerno 13

14 Le relazioni tra classi in UML (2) Aggregazione: un oggetto della classe A contiene oggetti della classe B Esempio: un oggetto della classe Order contiene oggetti della classe Item Order Item 27 Le relazioni tra classi in UML (3) Ereditarietà relazione tra una classe più specializzata ed una più generale Esempio: una classe RushOrder (ordine urgente) specializza (eredita) da una classe Order Order RushOrder 28 A.A Università di Salerno 14

15 Un esempio in UML: Classe Persona Studente TasseScolastiche 29 Programmazione OO e procedurale (1) Programmazione procedurale 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 30 A.A Università di Salerno 15

16 Programmazione OO e procedurale (2) 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 31 Alcune domande. 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? 32 A.A Università di Salerno 16

17 Ed alcune risposte (parziali) 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 ) 33 Organizzazione della lezione 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 34 A.A Università di Salerno 17

18 Oggetti e variabili oggetto Per lavorare con gli oggetti 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)? perché una classe è modificabile, un tipo primitivo no. 35 La classe Date I costruttori hanno sempre lo stesso nome della classe 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(); 36 A.A Università di Salerno 18

19 Variabili di riferimento (reference) 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 Classe Date 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 A.A Università di Salerno 19

20 Uso di Date e 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); 39 Uso di GregorianCalendar Metodo get preleva informazioni da un oggetto uso di costanti GregorianCalendar now = new GregorianCalendar(); int mese = now.get(calendar.month); int giorno = now.get (Calendar.DAY_OF_WEEK); Metodo set 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 40 A.A Università di Salerno 20

21 Alcuni commenti Metodi di modifica 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 Conversione tra Date e GregorianCalendar Conversione da GregorianCalendar a Date 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 A.A Università di Salerno 21

22 Costruzioni di classi personalizzate Definizioni di classi più complesse 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 Definizione di una classe In generale: class NomeDellaClasse { costruttore 1 (..) costruttore 2 (..) metodo 1 (..) metodo 2 (..) campo 1 campo 2 44 A.A Università di Salerno 22

23 Definizione di una classe Employee Employee.java import java.util.*; // per Date e Calendar public class Employee { // 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 Definizione di una classe EmployeeTest 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 A.A Università di Salerno 23

24 Compilazione ed esecuzione 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:\> 47 Java è dinamico, vero? 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. 48 A.A Università di Salerno 24

25 Compilazione ed esecuzione 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 Compilazione ed esecuzione 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:\> 50 A.A Università di Salerno 25

26 Una descrizione in UML Modificatori di accesso - = privato + = pubblico EmployeeTest «misc» + main (String [ ] args) Nome della classe 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 Metodi delle istanze 51 Alcuni commenti sui 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 52 A.A Università di Salerno 26

27 Un tipico errore nei costruttori public class Employee { 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: 53 Il metodo raisesalary() Per poter modificare il salario di un dipendente Implementato così: Chiamato così: public class Employee {. 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); 54 A.A Università di Salerno 27

28 I parametri di raisesalary() 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 class Employee {. public void raisesalary (double percent) { double raise = this.salary * percent/100; // calcolo aumento this.salary += raise; // aggiorno stipendio 55 L importanza della privatezza dei dati 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) 56 A.A Università di Salerno 28

29 Un esempio con la classe Employee Ricordiamo che: public class Employee {. 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 57 Un errore evitato a tempo di compilazione!! 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 58 A.A Università di Salerno 29

30 Accesso dei metodi ai dati privati Una caratteristica sorprendente: i metodi di un oggetto accedono ai dati privati di tutti gli oggetti della stessa classe Esempio: public class Employee { 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 59 Metodi privati 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 public class Employee { String final name; 60 A.A Università di Salerno 30

31 Organizzazione della lezione 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 61 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. public class Employee { private int id; private static int nextid = 1; 62 A.A Università di Salerno 31

32 L uso di campi statici Implementiamo un metodo per assegnare l id: public class Employee { 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. 63 La nuova versione di Employee Employee.java import java.util.*; public class Employee {. 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 64 A.A Università di Salerno 32

33 La nuova classe EmployeeTest 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 65 Costanti statiche 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 = ; 66 A.A Università di Salerno 33

34 Metodi statici 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 ai campi statici: public class Employee { public static int getnextid() { return nextid; 67 Metodi statici particolari 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 68 A.A Università di Salerno 34

35 Organizzazione della lezione 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 69 Parametri dei metodi 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) 70 A.A Università di Salerno 35

36 Il passaggio di parametri in Java 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 71 Alcuni metodi statici in EmployeeTest 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 72 A.A Università di Salerno 36

37 L overloading dei metodi È 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) 73 Costruttori predefiniti 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 class Employee {. public Employee () { // costruttore vuoto 74 A.A Università di Salerno 37

38 Inizializzazione di campo esplicita I campi possono essere esplicitamente inizializzati: public class Employee {. private String qualifica = Impiegato ; anche eventualmente con chiamate a metodi della classe: public class Employee {. static int assignid() { int r = nextid++; return r private int id = assignid(); 75 Blocchi di inizializzazione Blocchi di codice inseriti nella classe eseguiti ogni volta che viene creato un oggetto public class Employee {. 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; 76 A.A Università di Salerno 38

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

Organizzazione della lezione. Organizzazione della lezione. Lezione 3 Programmazione Object-Oriented. Oriented in Java Organizzazione della lezione Lezione 3 Programmazione Object-Oriented Oriented in Java Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli

Dettagli

Lezione 5 Namespace e JavaDoc

Lezione 5 Namespace e JavaDoc Lezione 5 Namespace e JavaDoc Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Il namespace di Java: i package

Dettagli

7. Java: Programmazione generica

7. Java: Programmazione generica 7. Java: Programmazione generica Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione La classe

Dettagli

Laurea in Informatica. "Programmazione Distribuita" - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione

Laurea in Informatica. Programmazione Distribuita - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione Lezione 6 Ereditarietà Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno 2 La progettazione OOP: suggerimenti Mantenere sempre, sempre, sempre

Dettagli

Dichiarazione di una classe. Dichiarazione ereditarietà

Dichiarazione di una classe. Dichiarazione ereditarietà Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante

Dettagli

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011.

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011. Programmazione II Lezione 18 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 11/1/2011 1/26 Programmazione II Lezione 18 11/1/2011 Sommario 1 2/26 Programmazione II Lezione 18 11/1/2011 Parte I 3/26 Programmazione

Dettagli

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo

Dettagli

6. Java: Ereditarietà

6. Java: Ereditarietà 6. Java: Ereditarietà Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Il namespace di Java:

Dettagli

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

Organizzazione della lezione. Organizzazione della lezione. Lezione 4 Programmazione Object-Oriented. Oriented in Java Organizzazione della lezione Lezione 4 Programmazione Object-Oriented Oriented in Java Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 C1 Incapsulamento e tecniche OOP 1 Prerequisiti Tecnica elementare della programmazione Principi di programmazione OOP Metodologie di progettazione software 2 1 Introduzione

Dettagli

Programmazione II. Lezione 13. Daniele Sgandurra 3/12/2010.

Programmazione II. Lezione 13. Daniele Sgandurra 3/12/2010. Programmazione II Lezione 13 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 3/12/2010 1/29 Programmazione II Lezione 13 3/12/2010 Sommario 1 Strutturare il Controllo 2 Java Oggetti e Classi 2/29 Programmazione

Dettagli

Java: Definire Classi e Creare Oggetti

Java: Definire Classi e Creare Oggetti Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO

Dettagli

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti Fondamenti di Programmazione Prof.ssa Elisa Tiezzi Programmazione orientata a oggetti 1 Programmazione OO Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array 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 Laurea

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Organizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni

Organizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni Organizzazione della lezione Lezione 5 Programmazione generica e eccezioni Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Programmazione II. Lezione 15. Daniele Sgandurra 10/12/2010.

Programmazione II. Lezione 15. Daniele Sgandurra 10/12/2010. Programmazione II Lezione 15 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 10/12/2010 1/48 Programmazione II Lezione 15 10/12/2010 Sommario 1 Astrarre sul Controllo Funzioni di Ordine Superiore Eccezioni

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Array. Walter Didimo

Array. Walter Didimo Array Walter Didimo Un problema ricorrente Gli strumenti di programmazione che abbiamo visto sin qui non sono ancora sufficienti per risolvere tutti i problemi di base Consideriamo ad esempio il seguente

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 06 Programmi e Oggetti Software Marzo 2010 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Programmi e Oggetti Software Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Programmi e Oggetti Software

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Riferimenti versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Lezione 6: Array e puntatori

Lezione 6: Array e puntatori Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

UML UNIFIED MODELING LANGUAGE

UML UNIFIED MODELING LANGUAGE UML UNIFIED MODELING LANGUAGE Cos è UML E un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (C, C++, Java, ) Fornisce una serie di diagrammi per rappresentare ogni tipo

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Programmazione in Java (I modulo) Lezione 20: Ereditarietà Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi

Dettagli

Progettazione Object-Oriented

Progettazione Object-Oriented Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci

Dettagli

Ereditarietà: concetti di base

Ereditarietà: concetti di base : concetti di base L ereditarietà è uno dei concetti base della programmazione ad oggetti Concetto di base: l ereditarietà permette di usare una classe precedentemente definita per la definizione di una

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica ISIS C. Facchinetti Sede: via Azimonti, 5-21053 Castellanza Tel. 0331 635718 fax 0331 679586 info@isisfacchinetti.gov.it https://isisfacchinetti.gov.it PIANO DI STUDIO DELLA DISCIPLINA Rev. 1.1 del 26/07/17

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Marco Faella Introduzione al corso

Marco Faella Introduzione al corso Marco Faella Introduzione al corso 1 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Linguaggi

Dettagli

La programmazione ad oggetti: chiamate di metodi. Overloading. This

La programmazione ad oggetti: chiamate di metodi. Overloading. This ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.

Dettagli

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

Modello procedurale versus modello O-O

Modello procedurale versus modello O-O Modello procedurale versus modello O-O Quando si scrive un programma si crea dentro il calcolatore un modello di una porzione del mondo reale. I linguaggi di programmazione procedurali consentono di costruire

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,

Dettagli

Il paradigma Object Oriented. Iolanda Salinari

Il paradigma Object Oriented. Iolanda Salinari Il paradigma Object Oriented Iolanda Salinari gli oggetti un oggetto è un elemento o concetto del mondo reale che può essere identificato in modo univoco: un cliente, un articolo, un impiegato ogni oggetto

Dettagli

La programmazione ad oggetti (OOP)

La programmazione ad oggetti (OOP) Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

A. Ferrari Object Oriented Design

A. Ferrari Object Oriented Design Object Oriented Design UML class diagram cos è UML o è un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (Python, C, C++, Java, ) o fornisce una serie di diagrammi per

Dettagli

Programmazione a Oggetti Lezione 8. Definizioni di Classi II

Programmazione a Oggetti Lezione 8. Definizioni di Classi II Programmazione a Oggetti Lezione 8 Definizioni di Classi II Sommario Costruzione di un oggetto Processo complesso che comprende varie fasi: 1. Allocare spazio per ogni campo - in ordine testuale - inizializza

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Variabili e Parametri. Scope, Lifetime Inizializzazione

Variabili e Parametri. Scope, Lifetime Inizializzazione Variabili e Parametri Scope, Lifetime Inizializzazione Categorie di Variabili Variabili di istanza / campi saldo in BankAccount Variabili locali newsaldo nel metodo deposita() Parametri importo per il

Dettagli

Variabili e Parametri

Variabili e Parametri Variabili e Parametri Scope, Lifetime Inizializzazione Categorie di Variabili Variabili di istanza / campi saldo in BankAccount Variabili locali newsaldo nel metodo deposita() Parametri importo per il

Dettagli

Lezione 13 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Lezione 13 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona Lezione 13 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I modificatori: Public Private -

Dettagli

Lezione 13 programmazione in Java

Lezione 13 programmazione in Java Lezione 13 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I modificatori: Public Private - Static

Dettagli

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati Oggetti Le classi in Java Corso di laurea in Un oggetto è definito dal suo stato - descrive le sue caratteristiche comportamento - quello che può fare Ad esempio: il modello di una moneta Una moneta può

Dettagli

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0 Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 10 a cura del prof Francesco Tappi Il paradigma orientato agli oggetti implica lo sviluppo di unità di programmazione attive, chiamate

Dettagli

Introduzione alla OOP Object Oriented Programming. Programmazione Orientata agli Oggetti

Introduzione alla OOP Object Oriented Programming. Programmazione Orientata agli Oggetti Introduzione alla OOP Object Oriented Programming Programmazione Orientata agli Oggetti I livelli dei linguaggi livelli di tensione porte logiche codice binario linguaggio assembler linguaggi procedurali

Dettagli

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13 UML Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2012/13 1 Che cosa è UML? UML (Unified Modeling Language) è un linguaggio grafico per: specificare

Dettagli

Introduzione alla programmazione Object Oriented. Luca Lista

Introduzione alla programmazione Object Oriented. Luca Lista Introduzione alla programmazione Object Oriented Luca Lista Concetti base del software OO Classi e oggetti Incapsulamento Relazione di ereditarietà Polimorfismo Cos è un Oggetto? Definizione da vocabolario:

Dettagli

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Paradigma a oggetti Programmazione orientata agli oggetti Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Programmazione ad oggetti. Si estendono i tipi di dati astratti che permettono:

Dettagli

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice Programmazione ad oggetti. Paradigma a oggetti Programmazione orientata agli oggetti Si estendono i tipi di dati astratti che permettono: information hiding e incapsulamento nascondo la rappresentazione

Dettagli

Oggetti. Definizioni di Classi II

Oggetti. Definizioni di Classi II Programmazione a Oggetti Definizioni di Classi II Sommario Costruzioni di oggetti Campi e metodi di classe Overloading Istanziazione di oggetti Costruzione di un oggetto Processo complesso che comprende

Dettagli

Introduzione alla OOP Object Oriented Programming

Introduzione alla OOP Object Oriented Programming Introduzione alla OOP Object Oriented Programming Programmazione Orientata agli Oggetti I livelli dei linguaggi livelli di tensione porte logiche codice binario linguaggio assembler linguaggi procedurali

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA4 A2 Utilizzo di classi 1 Prerequisiti Implementazione di classi Funzionamento di una classe Parametri formali e attuali di una funzione 2 1 Introduzione In questa

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 16 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 30 Aprile 2013 Progetto ed analisi di algoritmi: problemi

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 04 Programmi e Oggetti Software Alfonso Miola Ottobre 2012 http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software

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 04 Programmi e Oggetti Software Alfonso Miola Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e overloading Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono

Dettagli

Gerarchia di classi Java 1

Gerarchia di classi Java 1 Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

Dettagli

Gerarchia di classi Java 1

Gerarchia di classi Java 1 Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale

Dettagli

Diagrammi di classe e sistemi orientati agli oggetti

Diagrammi di classe e sistemi orientati agli oggetti Appendice D Diagrammi di classe e sistemi orientati agli oggetti ANDREA GINI Un effetto della strategia di incapsulamento è quello di spingere il programmatore a esprimere il comportamento di un sistema

Dettagli