Costruttori (public qualCosa(int qualcosa) { qualcosa = 0; } ) Metodi (public int getQualcosa() { return qualcosa; } } Oggetti - li oggetti in !ava servono a modelli""are oggetti c#e appartengono al dominio di un problema$ li oggetti sono creati a partire dalle classi$ %a classe descrive il tipo di oggetto; l&oggetto rappresenta istan"e individuali di una classe$ 'gni oggetto #a uno stato rappresentato dai valori correnti dei campi$ 'gni oggetto pu( comunicare con tutti gli altri oggetti c#iamando i loro metodi (invocazione dei metodi) Metodi - Possiamo comunicare con gli oggetti invocando metodi su di essi$ )i solito* quando viene c#iamato un metodo* gli oggetti rispondono +acendo qualcosa$ Parametri - , metodi possono ric#iedere parametri c#e +orniscono in+orma"ioni aggiuntive* necessarie per svolgere un certo compito$ %&intesta"ione di un metodo - il suo prototipo. +ornisce in+orma"ioni necessarie a invocare quel metodo$ /d es. void move0ori"ontal (int distance) , parametri sono sempre caratteri""ati da un tipo c#e de+inisce il 1genere2 di valori c#e possono assumere$ Parametri +ormali (nomi) 3 - visibile ad un oggetto solamente all&interno del corpo del costruttore o del metodo c#e lo dic#iara$ ,l campo d'azione o d'influenza di un parametro - ristretto al corpo del costruttore o del metodo c#e lo dic#iara$ public number)isp(int rollOver) Parametro attuale (valori) ne4 Number)isp(24); Istanze multiple - Molti oggetti simili possono essere creati a partire da una singola classe$ Codice sorgente - ,l codice sorgente di una classe determina la struttura (campi) e il comportamento (metodi) di ogni oggetto di quella classe$ Valori di ritorno (risultati) - , metodi possono restituire in+orma"ioni riguardanti un oggetto tramite un valore di ritorno$ Campi - , campi memori""ano , dati disponibili per ogni oggetto$ 5ono anc#e c#iamati 1variabili d&istan"a2$ ,l campo di influenza - la de+ini"ione di classe nella sua intere""a* ossia vi si pu( accedere da qualunque punto della classe$ ,l tempo di vita coincide con quello dell&oggetto cui appartiene$ Commenti - , commenti sono inseriti nel codice sorgente per +ornire delucida"ioni ai lettori umani* e non #anno alcun e++etto sulle +un"ioni svolte dalla classe Costruttori ( public 6ic7etMac#ine (int tic7etCost) ) - 8anno in modo c#e ogni oggetto sia con+igurato correttamente al momento della crea"ione$ Metodi - , metodi possono invocare* all&interno della loro implementa"ione* altri metodi della stessa classe$ Questa opera"ione - detta invocazione di un metodo interno. Possono ric#iamare anc#e metodi appartenenti ad altri oggetti usando la nota"ione puntata* o dot notation$ Questo procedimento si c#iama invocazione di un metodo esterna. Metodi d'accesso (metodi get: public int getPrice() ) - restituiscono in+orma"ioni riguardanti lo stato di un oggetto Metodi di modifica o mutazione (metodo void) - Cambiano lo stato di un oggetto Metodo astratto - prototipo di metodo sen"a il corpo$ 9sso - eviden"iato dalla parole c#iave abstract$ Variaile locale - 9& una variablie c#e viene dic#iarata e usata all&interno di un singolo metodo$ ,l suo campo d&a"ione e il suo tempo di vita sono limitati a quelli del metodo$ !strazione - 9& la capacit: di ignorare , dettagli inerenti alle singole parti di un problema per +ocali""are l&atten"ione a un livello superiore$ Modularizzazione - 9& il processo di divisione dell&insieme in parti ben de+inite c#e possono essere sviluppate ed esaminate separatamente* e c#e interagiscono secondo modalit: ben precise$ Classi - %e classi de+iniscono i tipi$ ,l nome di una classe pu( essere usato come tipo di una variabile$ %e variabili il cui tipo - il nome di una classe possono memori""are oggetti di quella speci+ica classe$ Classe astratta - una classe astratta - una classe c#e non - destinata alla crea"ione di istan"e$ 9ssa +unge da superclasse per altre classi$ %e classi astratte possono contenere metodi astratti$ Perc#- una sottoclasse astratta diventi concreta* deve +ornire le implementa"ioni di tutti , metodi astratti c#e eredita* altrimenti sar: anc#&essa astratta$ "iagramma delle classi - Mostra le classi di una applica"ione e la rela"ione c#e le lega$ ;isuali""a in+orma"ioni relative al codice sorgente e rappresenta la visione statica di un programma$ "iagramma degli oggetti - mostra gli oggetti e le loro rela"ioni in un determinato istante durante l&esecu"ione di un&applica"ione$ <appresenta la visione dinamica di un programma$ Creazione di oggetti - li oggetti possono creare altri oggetti usando l&operatore ne#* ad esempio. #ours = ne4 Number)is(); Overloading - =na classe pu( contenere pi> di un costruttore* o pi> metodi con lo stesso nome* a patto c#e ognuno abbia un diverso insieme di parametri$ /d esso corrispondono pi> oggetti* e viene usata l&in+orma"ione +ornita dal contesto per decidere quale oggetto - denotato da una speci+ica istan"a di quel nome$ Polimorfismo - =n sistema di tipi nel quale uno stesso oggetto pu( avere pi> di un tipo$ Per analogia diremo c#e un oggetto - polimor+o quando il sistema di tipi gli assegna pi> di un tipo$ ,n ?ava le c#iamate ai metodi sono polimor+ic#e$ ,n momenti diversi la stessa invoca"ione pu( invocare metodi di++erenti* a seconda del tipo dinamico della variabile usata per la c#iamata$ "eugger - Programma c#e serve a esaminare internamente l&esecu"ione di un&applica"ione$ Pu( essere usato per trovare errori nel codice )ebbuging - il processo di individua"ione e corre"ione di una +onte di errore $esting - 9& l&attivit: di veri+ica del +atto c#e una determinata parte di codice si comporti nel modo previsto$ test in positivo 3 - l&esame dei casi per i quali ci si attende un successo test in negativo 3 - l&esame di casi per i quali ci si attende un +allmineto %secuzione manuale - Consiste nell&anali""are un segmento di codice riga per riga osservando , cambiamenti di stato e il comportamento dell&applica"ione Collezioni - li oggetti colle"ione sono oggetti c#e possono memori""are un numero arbitrario di altri oggetti$ Ciclo - Pu( essere utili""ato per eseguire ripetutamente un gruppo di istru"ioni sen"a doverle riscrivere pi> di una volta Iteratore & 9& un oggetto c#e +ornisce la possibilit: di scandire (iterare su) tutti gli elementi di una colle"ione !rra' & 9& un tipo speciale di colle"ione in grado di memori""are un numero di elementi +issato a priori$ Mappa & 9& una colle"ione di elementi c#e sono coppie c#iave@valore$ 5i pu( accedere ai valori +ornendone la c#iave Insieme (set) & 9& la colle"ione c#e memori""a ogni singolo elemento non pi> di una volta$ 9sso non mantiene alcun ordine speci+ico tra gli elementi$ Interfaccia & %&inter+accia di una classe descrive c#e cosa +a la classe stessa e come si pu( utili""arla sen"a mostrarne l&implementa"ione$ Oggetti immutaili & un oggetto - detto immutabile se il suo contenuto o il suo stato non possono essere cambiati una volta creati$ %e string#e sono un esempio di oggetti immutabili$ Modificatori di accesso & de+iniscono la visibilit: di un campo* o di un costruttore o di un metodo$ li elementi pulic sono accessibili all&interno della stessa classe e anc#e da altre classi; gli elementi private sono accessbili solo all&interno della stessa classe$ )ic#iarare un campo o un metodo protected permette c#e le sottoclassi dirette o indiriette vi accedano come se +osse public$ Information (iding & ' incapsulamento dati* stabilisce c#e i dettagli interni dell&implementa"ione di una classe devono essere nascosti alle altre classi e permette di modulari""are meglio un&applica"ione$ <iduce la dipenden"a tra le classi migliorando la qualit: del progetto$ Variaili di classe (variaili static)e) & /nc#e le classi possono avere campi$ ,n qualsiasi momento esiste esattamente una copia di ogni variabile di classe* indipendentemente dal numero di istan"e create$ (public static +inal int a =A;) %a parola static - impiegata spesso per de+inire costanti$ "ipendenza & ,l termine dipenden"a si ri+erisce all&interconnessione tra le classi$ Bisogna s+or"arsi di minimi""are la dipenden"a tra le classi del sistema* in modo c#e ogni classe sia il pi> possibile* indipendente e comunic#i con le altre attraverso un&inter+accia concisa e ben de+inita$ Coesione & descrive la correla"ione tra un&unit: di codice e un&entit: astratta o un compito preciso$ ,n un sistema molto coeso ogni unit: di codice (metodo* classe o modulo) - responsabile di un compito de+inito$ =na classe ben progettata presenta un alto livello di coesione$ %reditariet* & ci permette di de+inire una classe come estensione di un&altra* trovando una solu"ione al problema della replica"ione del codice$ =na superclasse - una classe c#e - estesa da un&altra classe$ =na sottoclasse - una classe c#e ne estende (eredita da) un&altra$ 9ssa eredita tutti , campi e , metodi dalla propria superclasse$ %e classi collegate da rela"ioni di ereditariet: +ormano una gerarc)ia di ereditariet*. Costruttore della superclasse - la prima istru"ione* il costruttore di una sottoclasse deve sempre invocare il costruttore della propria superclasse$ 5e il codice sorgente non include questa c#iamata* il compilatore !ava cerc#er: di inserirne una automaticamente$ (es. super(titolo* temp);)$ %&ereditariet: permette di riusare in un nuovo contesto classi scritte in preceden"a$ , vantaggi di questa tecnica sono. possibilit: di riutili""are il codice riuso del codice manuten"ione pi> semplice estendibilit: Come la sottoclasse - possibile de+inire un sottotipo+ come nelle classi anc#e i tipi +ormano una gerarc#ia$ ,l tipo di una sottoclasse - un sottotipo del tipo della rispettiva superclasse$ %e variabili contengono oggetti del tipo speci+icato nella loro dic#iara"ione* oppure un suo qualsiasi sottotipo$ (es$ ;e#icle vC = ne4 ;e#icle(); oppure ;e#icle vA = ne4 Car(); ) li oggetti di un sottotipo possono essere usati ovunque ci si attenda oggetti del relativo supertipo; in questi casi si parla di sostituzione$ 6utte le classi sen"a una superclasse esplicita #anno come superclasse O,ect. 5i #a un&ereditariet* multipla in una situa"ione in cui una classe eredita da pi> di una superclasse$ Interfacce & in !ava - una speci+ica di tipo (sotto +orma di un nome di tipo e di un insieme di metodi) c#e non de+inisce alcuna implementa"ione dei metodi$ ,l tipo statico di una var$ v - il tipo cosD com&- dic#iarato nella sua dic#iara"ione nel codice sorgente$ ,l tipo dinamico di una variabile v - il tipo dell&oggetto memori""ato in v in un dato momento$ %ccezione - 9& un&oggetto c#e rappresenta i dettagli del +allimento di un programma$ Per indicare una situa"ione d&errore si solleva un&ecce"ione %e eccezioni non controllate sono un tipo di ecce"ione il cui impiego non ric#iede controlli da parte del compilatore$ Quelle controllate ric#iedono controlli aggiuntivi da parte del compilatore$ ,n particolare* in ?ava le ecce"ioni controllate ric#iedono l&uso di clausole t#ro4s e di blocc#i trE$ ,n un programma* il codice dedicato al controllo delle istru"ioni in cui potrebbe essere sollevata un&ecce"ione si c#ima )andler o gestore delle eccezioni. %&#andler si occupa di segnalare l&insorgere di un&ecce"ione e dell&eventuale recupero dalla situa"ione di errore$ %a serializzazione permette c#e interi oggetti e gerarc#ie di oggetti siano letti e scritti con una singola opera"ione$ 'gni oggetto coninvolto deve appartenere ad una lcasse c#e implementa l&inter+accia 5eriali"able$ Overriding 3 una sottoclasse pu( 1sovrascrivere2 ovvero ride+inire l&implementa"ione di un metodo$ Per +arlo* dic#iara un metodo con lo stesso prototipo della superclasse ma un corpo di++erente$