9
Interfacce Interfacce Java Java

Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

Embed Size (px)

Citation preview

Page 1: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

InterfacceInterfacceJavaJava

Page 2: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

InterfacceInterfacceUna interfaccia (interface) in Java ha Una interfaccia (interface) in Java ha una struttura simile a una classe ma una struttura simile a una classe ma può contenere solo:può contenere solo:

costanti e metodi d'istanza astratti costanti e metodi d'istanza astratti

non può contenere: non può contenere: costruttoricostruttori

variabili statichevariabili statiche

variabili di istanzavariabili di istanza

metodi staticimetodi statici

Page 3: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

java.lang.Comparjava.lang.Comparableable

public interface Comparable {public interface Comparable {

public int compareTo(Object o);public int compareTo(Object o);

}}

Page 4: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

Descrizione del Descrizione del metodometodo

compareTo: Compares this object with the compareTo: Compares this object with the specified object for order. Returns a negative specified object for order. Returns a negative integer, zero, or a positive integer as this integer, zero, or a positive integer as this object is less than, equal to, or greater than object is less than, equal to, or greater than the specified object. [...] the specified object. [...]

The implementor must also ensure that the The implementor must also ensure that the relation is transitive: (x.compareTo(y)>0 && relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies y.compareTo(z)>0) implies x.compareTo(z)>0.x.compareTo(z)>0.

[...] It is strongly recommended, but not [...] It is strongly recommended, but not strictly required that (x.compareTo(y)==0) strictly required that (x.compareTo(y)==0) == (x.equals(y)). [...]== (x.equals(y)). [...]

Page 5: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

Implementare Implementare un’interfacciaun’interfaccia

Si può dichiarare che una classe Si può dichiarare che una classe implementa (implements) una data implementa (implements) una data interfaccia: in questo caso la classe interfaccia: in questo caso la classe deve fornire una realizzazione per tutti i deve fornire una realizzazione per tutti i metodi astratti dell'interfacciametodi astratti dell'interfaccia

La classe deve fornire metodi con la La classe deve fornire metodi con la stessa firma descritta nell'interfaccia.stessa firma descritta nell'interfaccia.

Page 6: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

EsercizioEsercizioRealizzare la classe InteroModulo10 che Realizzare la classe InteroModulo10 che rappresenta i numeri interi modulo 10.rappresenta i numeri interi modulo 10.

La classe deve implementare l’interfaccia La classe deve implementare l’interfaccia Comparable rispettando le specifiche.Comparable rispettando le specifiche.

In particolare deve riuscire a confrontare In particolare deve riuscire a confrontare oggetti InteroModulo10 con oggetti:oggetti InteroModulo10 con oggetti:

InteroModulo10InteroModulo10

IntegerInteger

Page 7: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

Usare le Usare le interfacceinterfacce

Possiamo dichiarare una variabile di tipo Possiamo dichiarare una variabile di tipo 'interfaccia: 'interfaccia:

Comparable cmp;Comparable cmp;

Non possiamo istanziare un'interfaccia: Non possiamo istanziare un'interfaccia: Comparable com = new Comparable();Comparable com = new Comparable();

A una variabile di tipo interfaccia possiamo A una variabile di tipo interfaccia possiamo assegnare oggetti di classi che implementano assegnare oggetti di classi che implementano l'interfaccia:l'interfaccia:

Comparable com = new InteroModulo10(5);Comparable com = new InteroModulo10(5);

Su di una variabile di tipo interfaccia possiamo Su di una variabile di tipo interfaccia possiamo invocare solo metodi dichiarati nell'interfacciainvocare solo metodi dichiarati nell'interfaccia

Page 8: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

Un esempio di Un esempio di utilizzoutilizzoLa classe ArraysLa classe Arrays

Page 9: Interfacce Java. Interfacce Una interfaccia (interface) in Java ha una struttura simile a una classe ma può contenere solo: costanti e metodi d'istanza

Classe ArraysClasse Arrayspublic static void sort(Object[] a)public static void sort(Object[] a)

Sorts the specified array of objects into Sorts the specified array of objects into ascending order, according to the ascending order, according to the natural ordering of its elements. All natural ordering of its elements. All elements in the array must implement elements in the array must implement the Comparable interface. …the Comparable interface. …

Parameters:Parameters:a - the array to be sorted. a - the array to be sorted.