Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static

Documenti analoghi
Fondamenti di Java. hashcode

Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. hashcode

Fondamenti di Java. Soluzione esercizio hashcode

Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static

Fondamenti di Java. Soluzione esercizio hashcode

Varie: final, visibilità, parametri di ingresso

UML: Aggregazione. class A { int s; public void sets(int){ }; public int gets() { }; class B {A ob; public void usea() { }; }

Programmazione 2 - Marco Ronchetti. Fac.Scienze Università di Trento. Collections

Sezione: Costruttori. Costruttori

Unified Modeling Language

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Implementare un'interfaccia

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Corso di Algoritmi e Strutture Dati con Laboratorio. The JCF(continua): L interfaccia Map

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011

Esercizio: Costruite una Coda analoga alla Pila

# $ $ A.A. 2006/07 Tutor: Daniele Tiles &== ? &7$ %% & '( ) * + $, $ $ -' %./, $ * $ $ 7 5 &7 2$ $ $ 3&4&&&

Sezione: Upcast - downcast

Esercitazione di lunedì - TUTTE LE MATRICOLE -

Pila.h. #define DEFAULTGROWTHSIZE 5 struct Pila { int size; int marker; int * contenuto; } ;

La Pila in Java - 1. package strutture; public class Pila { int size; int defaultgrowthsize; int marker; int contenuto[];

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2

Uguaglianza e Identità. (no, non avete sbagliato corso )

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella)

Metodi di una Collection

Laboratorio di Programmazione 1 [Java]

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Stringhe. Prof. Lorenzo Porcelli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Università Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1

C++ Copy Constructor

Istruzioni. Il codice Java delle domande non mostra gli import, che si assumono essere correttamente presenti.

Programmazione Orientata agli Oggetti in Linguaggio Java

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

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

Uguaglianza e Identità. (no, non avete sbagliato corso )

Il Linguaggio Java. Le interfacce

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Map<K,V> ESERCITAZIONE. Dalla documentazione Java 02/04/15

Esempi in Java di program.ne O-O

Classi Wrapper. int Integer float Float char Char byte Byte double Double. classe "wrapper"

Java thread, concorrenza

Testo di Riferimento (usato nei corsi precedenti)

OLTRE LE CLASSI OLTRE LE CLASSI

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

INFORMATICA III Parte B -Progettazione e Algoritmi

Algoritmi di ordinamento (II parte)

Il nostro esempio guida: La costruzione di uno stack

Laboratorio di Programmazione 1 [Java]

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

Priority Queue. Queuing, the smart way

Polimorfismo parametrico vs polimorfismo per inclusione

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

GESTIONE DEGLI ERRORI

Overloading - Overriding

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

GESTIONE DEGLI ERRORI

Generics & Collections

Strutture dati: array & co.

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Università Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo

La classe java.lang.object

Corso di Progettazione del Software

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

Esonero del corso di Programmazione a Oggetti

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Collezioni. (a cura del Prof. Marco Patella)

Confrontare valori 1

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria. Corso di INGEGNERIA DEL SOFTWARE (Ing. Informatica, Nuovo Ordinamento)

Laboratorio di Sistemi Ordinamento di oggetti Java

Scope e visibilità per classi

Laboratorio di Programmazione 1 [Java]

Esempi. Esempio utilizzo di classi

Il linguaggio Java: aggiunte in Java 1.5

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

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

Fondazione ITS A. Volta linguaggi Flavia Lollis 1

Organizzazione della lezione. Lezione 16 Remote Method Invocation - 4. Modello Client Server. Le classi di Archivio Client-Server

Strutture dati: array & co.

SET: specifica INTRODUZIONE. SET: esempio Si stampano i numeri casuali in ordine di generazione e il contenuto dell insieme.

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

OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI. Alcune domande. Nella sua parte non statica, una classe

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Strutture dati: array & co.

Linguaggi di Programmazione: Paradigmi di Programmazione

Modello procedurale versus modello O-O

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

Esercizi della lezione 5 di Java

Compute engine generici in RMI

Pila 1. Pila 2. Pila 4. Pila 3. Attenti all ordine! public: Pila() { size=initialsize; defgsize =initialsize; marker=0; contenuto=new int[size]; }

Transcript:

1 Fondamenti di Java Static

2 Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola variabile condivisa tra le varie istanze I metodi possono essere richiamati senza creare una istanza.

3 Variabili static : esempio 1 class S { static int instancecount = 0; //variabile di classe S() {instancecount++; public class A { public static void main(string a[]) { new A(); A() { Output: # of instances: 10 for (int i = 0; i < 10; ++i) { S instance=new S(); System.out.println("# of instances: "+S.instanceCount);

4 Variabili static : esempio 2 class S { static int instancecount = 0; //variabile di classe S() {instancecount++; public void finalize() {instancecount--; public class A { public static void main(string a[]) { new A(); A() { for (int i = 0; i < 10; ++i) { S instance=new S(); Output: # of instances: 10 # of instances: 0 System.out.println("# of instances: "+S.instanceCount); System.gc(); System.out.println("# of instances: "+S.instanceCount);

5 Metodi static : esempio 1 class S { static int instancecount = 0; //variabile di classe S() {instancecount++; static void azzeracontatore() {instancecount=0; public class A { public static void main(string a[]) { new A(); A() { Può agire solo su variabili statiche! Output: instancecount: 2 for (int i = 0; i < 10; ++i) { if (i%4==0) S.azzeraContatore(); S instance=new S(); System.out.println("instanceCount: "+S.instanceCount); Ruolo: Metodi che agiscono su variabili statiche

6 metodi static : esempio 2 Notare la maiuscola! (per convenzione) Math.sqrt(double x); System.gc(); System.arrayCopy(...); System.exit(); Integer.parseInt(String s); Float.parseFloat(String s); Ruolo: analogo alle librerie del C Che cos e : System.out.println()?

7 Perchè il main è static? public class A { String s="hello"; public static void main(string a[]) { System.out.println(s); Non static variable s cannot be referenced from static context public class A { String s="hello"; public static void main(string a[]) { new A(); A() { System.out.println(s); hello

8 Sezione: Costruttori Costruttori

9 Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore A(); Se invece definisco almeno un costruttore non void, ad es. A(int s), il sistema non crea il costruttore A();

10 Definizione dei costruttori Se B è figlia di A, il costruttore di B come prima cosa invoca A(), a meno che la prima istruzione non sia una super. A() {... A(int k) {... B(int k) {... B(int k) { super(k)...

11 Invocazione dei costruttori public class A { public A() { System.out.println("Creo A"); public class B extends A { public B() { System.out.println("Creo B"); public B(int k) { System.out.println("Creo B_int ); Output: Creo A Creo B_int public static void main(string [] a) { B b=new B(1);

12 Invocazione dei costruttori public class A { public A(int k) { System.out.println("Creo A"); public class B extends A { public B() { System.out.println("Creo B"); public B(int k) { System.out.println("Creo B_int ); Output: ERRORE! Perchè? public static void main(string [] a) { B b=new B(1);

13 Fondamenti di Java Collection: approfondimenti

14 Core Collections Interfaces

15 Core Collections Interfaces Map è un entità che abbina oggetti a chiavi di inserimento/ricerca. Map non puo contenere chiavi duplicate: ciascuna chiave è univocamente in relazione con un oggetto. Esempi di implementazione: tabelle di hash Esempi concreti: anagrafe, lista clienti

16 Empty Collections The Collections class provides three constants, representing the empty Set, the empty List, and the empty Map Collections.EMPTY_SET Collections.EMPTY_LIST Collections.EMPTY_MAP The main use of these constants is as input to methods that take a Collection of values, when you don't want to provide any values at all.

17 La tassonomia completa

18 Fondamenti di Java Collection: object ordering

19 Object ordering Ci sono due modi per ordinare oggetti: The Comparable interface provides automatic natural order on classes that implement it. The Comparator interface gives the programmer complete control over object ordering. These are not core collection interfaces, but underlying infrastructure.

20 Object ordering with Comparable A List l may be sorted as follows: Collections.sort(l); If the list consists of String elements, it will be sorted into lexicographic (alphabetical) order. If it consists of Date elements, it will be sorted into chronological order. How does Java know how to do this? String and Date both implement the Comparable interface. The Comparable interfaces provides a natural ordering for a class, which allows objects of that class to be sorted automatically.

21 Comparable Interface int compareto(object o) Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object. Definisce l ordinamento naturale per la classe implementante.

22 Comparable public class Car implements Comparable{ public int maximumspeed=0; public String name; Car(int v,string name) {maximumspeed=v; this.name=name; public int compareto(object o){ if (!(o instanceof Car)) { System.out.println("Tentativo di comparare mele e pere!"); System.exit(1); if (maximumspeed<((car)o).maximumspeed) return -1; else return (1);

23 Comparable class TestCar{ List macchine=null; public static void main(string[] args) { new TestCar(); TestCar(){ macchine=new LinkedList(); Car a=new Car(100,"cinquecento"); macchine.add(a); Car b=new Car(250,"porsche carrera"); macchine.add(b); Car c=new Car(180,"renault Megane"); macchine.add(c); printmacchine(); Collections.sort(macchine); printmacchine();

24 Comparable void printmacchine(){ Iterator i=macchine.iterator(); while (i.hasnext()) { System.out.println(((Car)i.next()).name);

25 Comparable Interface Class Point implements Comparable { int x; int y;... int compareto(object p) { check if Point // ordino sulle y retval=y-((point)p).y; // a partità di y ordino sulle x if (retval==0) retval=x-((point)p).x; return retval; p1 p2 p1 <p2 p1 p2 p1 <p2

26 Comparator Interface int compare(t o1, T o2) Compares its two arguments for order. class NamedPointComparatorByXY implements Comparator { int compare (NamedPoint p1, NamedPoint p2) { // ordino sulle y retval=p1.y-p2.y; // a partità di y ordino sulle x if (retval==0) retval=p1.x-p2.x; return retval;

27 Comparator Interface class NamedPointComparatorByName implements Comparator { int compare (NamedPoint p1, NamedPoint p2) { //usa l ordine lessicografico delle stringhe return (p1.getname().compareto(p2.getname()));... In un metodo di un altra classe: // sia c una Collection di NamedPoints Comparator cmp1= new NamedPointComparatorByName(); Comparator cmp2= new NamedPointComparatorByXY(); List x = new ArrayList(c); Collections.sort(x,cmp1)

28 import Lettura java.util.*; di int class EmpComparator implements Comparator { public int compare(object o1, Object o2) { EmployeeRecord r1 = (EmployeeRecord) o1; EmployeeRecord r2 = (EmployeeRecord) o2; return r2.hiredate().compareto(r1.hiredate()); class EmpSort { EmpSort() { Collection employees =... ; // Employee Database List emp = new ArrayList(employees); Collections.sort(emp, new EmpComparator()); System.out.println(emp); public static void main(string args[ ]) {new EmpSort();