Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 1 06/06/2006UNIROMA2-ING OOP Programmazione orientata agli Oggetti OOP L 4..6E Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 2 06/06/2006UNIROMA2-ING OOP static
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 3 06/06/2006UNIROMA2-ING OOP Attributi e metodi statici Preesistono alla creazione di oggetti, valgono per tutti gli oggetti. Attributi statici: comuni a tutti gli oggetti. Sono installati e inizializzati una tantum con la installazione della classe. Sono allocati nella classe o in area ad essa associata. Sono detti attributi e metodi di classe.
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 4 06/06/2006UNIROMA2-ING OOPEsercizio Disegnare una classe C dotata delloperazione int numeroIstanze(); la quale, invocata sulla classe, restituisce il numero di istanze sin qui realizzate della classe stessa. Esercizio Disegnare una classe C dotata delloperazione C istanzia(); la quale, invocata sulla classe, effettivamente istanzia fino a 2 oggetti della classe dopo di che non sortisce alcun effetto e restituisce null.
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 5 06/06/2006UNIROMA2-ING OOP Vassoio Tavolo Tazza tf1, tf2; Tazza t3, tf4, tf5; tf t Main Tavolo tav; Vassoio vas; Tazza _:: static tav vas Esempio (Basato su Thinking Java/Apogeo in italiano) Attributi di classe e di istanza
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 6 06/06/2006UNIROMA2-ING OOP Main di prova /* Obiettivo: mostrare inizializzazione attributi statici. Basato Su Thinking … Java Apogeo */ public class IniziaStatiche{ public static void main(String)[] args){ System.out.println( Crea nuovo vassoio in main); new Vassoio(); System.out.println( Crea nuovo vassoio in main); new Vassoio(); tav.traccia2(1); vas.traccia3(1); } static Tavolo tav= new Tavolo(); static Vassoio vas= new Vassoio(); }
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 7 06/06/2006UNIROMA2-ING OOP Main di prova class Tavolo{ static Tazza tf1= new Tazza(1); Tavolo(){ System.out.println( Tavolo()); tf2.f(1); } void traccia2(int m) { System.out.println( traccia2( + m + )); } static Tazza tf2= new Tazza(2); }
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 8 06/06/2006UNIROMA2-ING OOP Main di prova class Tazza{ Tazza(int m){ System.out.println( tazza( + m + )); } void traccia(int m) { System.out.println( traccia( + m + )); }
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 9 06/06/2006UNIROMA2-ING OOP Main di prova class Vassoio{ Tazza t3 = new Tazza(3); static Tazza tf4 = new Tazza(4); Vassoio() { System.out.println( Vassoio()); tf4.f(2); } void traccia3(int m) { System.out.println( traccia3( + m +) ); } static Tazza tf5= new Tazza(5); }
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 10 06/06/2006UNIROMA2-ING OOP Ordine di installazione e inizializzazione Di una classe testé caricata in memoria, anzitutto si elaborano (le dichiarazioni de) gli attributi static, secondo lordine di dichiarazione. Quando tali attributi si inizializzano? H1) Appena terminata la elaborazione della corrispondente dichiarazione. H2) Appena terminata la elaborazione di tutte le dichiarazioni si static presenti nella classe corrente. H1 più ragionevole di H2.
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 11 06/06/2006UNIROMA2-ING OOP Main di prova: risultati in caso di elaborazione secondo H1 (i.e. H più ragionevole) vd. Thinking.. Java Apogeo Tazza(1) Tazza(2) Tavolo() traccia(1) Tazza(4) Tazza(5) Tazza(3) Vassoio() traccia(2) Crea nuovo vassoio in main Tazza(3) Vassoio() traccia(2) Crea nuovo vassoio in main Tazza(3) Vassoio() traccia(2) traccia2(2) traccia3(1)
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 12 06/06/2006UNIROMA2-ING OOP Main di prova: risultati in caso di elaborazione secondo H2 Tazza(1) Tazza(2) Tazza(4) Tazza(5) Tavolo() traccia(1) Tazza(3) Vassoio() traccia(2) Crea nuovo vassoio in main Tazza(3) Vassoio() traccia(2) Crea nuovo vassoio in main Tazza(3) Vassoio() traccia(2) traccia2(2) traccia3(1)