






Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una introduzione alla programmazione ad oggetti, con un focus su overloading, costruttori e distruttori. Il docente, Massimo Ficco, insegnante all'Università di Campania - Luigi Vanvitelli, spiega l'importanza dei nomi, l'overload di metodi e costruttori, e fornisce esempi per illustrare le concept. tratto dal corso di Ingegneria Industriale e dell’Informazione, a.a. 2017-2018.
Tipologia: Dispense
1 / 12
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







Docente: Ing. Massimo Ficco E-mail: [email protected] t 1
a.a. 2017 - 2018
Importanza dei nomi È importante l’uso dei nomi nello scrivere un programma. Quando si crea un oggetto si da un nome ad una regione della memoria. Un metodo è un nome associato ad un’azione Assegnando a metodi e variabili nomi significativi si rende più leggibile il proprio programma
Programmazione ad Oggetti - Prof. Massimo Ficco Overload Un nome è Overloaded quando assume più significati: Lavare la maglia Lavare il cane Lavare la macchina Nell’esempio è l’oggetto che da significato al verbo. Elementi di distinzioni L’overload di un metodo si distingue in base a: Il tipo dei parametri L’ordine dei parametri Non è possibile definire un overload in base al valore di ritorno: int f(); o float f(); Si capirebbe quale utilizzare solo se scrivessi sempre int x=f();
Programmazione ad Oggetti - Prof. Massimo Ficco 7 Overload Ex. Overload. class Tree { int height=0; void info() { System.out.println("Tree is " + height + " feet tall"); } void info(String s) { System.out.println(s + ": Tree is " + height + " feet tall"); } } public class Overloading { public static void main(String[] args) { Tree t = new Tree(); t.info(); t.info("overloaded method"); }
Programmazione ad Oggetti - Prof. Massimo Ficco
public class OverloadingOrder { static void print(String s, int i) { System.out.println("String: " + s + ", int: " + i); } static void print(int i, String s) { System.out.println("int: " + i + ", String: " + s);} public static void main(String[] args) { print("String first", 11); print(99, "Int first"); } }
Programmazione ad Oggetti - Prof. Massimo Ficco Il costruttore di default Se definisco un costruttore senza parametri l’operatore new utilizza quello da me definito Se non definisco un costruttore senza parametri posso usare quello di default di java che alloca semplicemente l’oggetto Esempio 1: public class Albero { int altezza=0; public Albero () { System.out.println(“Costruito un albero di altezza”+altezza); } }
Programmazione ad Oggetti - Prof. Massimo Ficco Esempio 2 public class Albero{ int altezza=0; public Albero (){System.out.println(“Pianto un seme !”);} public Albero (int h) { altezza=h; System.out.println(“Costruito un albero di altezza”+altezza); } } Overload del Costruttore
Programmazione ad Oggetti - Prof. Massimo Ficco Il distruttore Esempio. String a=new String(“casa”); String b=a; a=null; //b punta ancora all’oggetto b=null; //oggetto può essere distrutto Operazioni di finalizzazione Se serve effettuare delle operazioni prima che l’oggetto venga distrutto è possibile definire un metodo finalize: Esso viene richiamato appena prima l’operazione di deallocazione
Programmazione ad Oggetti - Prof. Massimo Ficco
class Book { boolean checkedOut = false; Book(boolean checkOut) { checkedOut = checkOut; } void checkIn() { checkedOut = false; } public void finalize() { if(checkedOut) System.out.println("Error: checked out");} } public class TerminationCondition { public static void main(String[] args) { Book novel = new Book(true); // Proper cleanup: novel.checkIn(); // Drop the reference, forget to clean up: novel = new Book(true); // Force garbage collection & finalization: System.gc(); } } ///:~