![]() ![]() |
|
Ricordiamo dalla lezione sulle interfacce che:
Le interfacce in Java hanno almeno due ruoli fondamentali:
|
![]() ![]() |
|
Un "Tipo di Dati" definisce:
|
![]() ![]() |
|
Un "Tipo di Dati Astratto" (Abstract
Data
Type)
definisce
|
![]() ![]() |
|
Un Tipo di Dati è una realizzazione
di un Tipo di Dati Astratto se definisce gli elementi e le operazioni del
TDA, in modo tale che le operazioni "rispettino" la corrispondente
specifica.
Esempi:
|
![]() ![]() |
|
Le interfacce forniscono un supporto linguistico
alla nozione di contratto tra chi usa gli oggetti di una classe,
e chi realizza la classe stessa.
Inoltre la classe che implementa l'interfaccia può essere sostituita con un'altra più efficiente (o più conveniente...), senza modificare il programma che la utilizza. Esempio: Possiamo avere due realizzazione di un'interfaccia Insieme:
|
![]() ![]() |
|
Definiamo una semplice interfaccia: PuntoNelPiano.
Concettualmente, il nostro TDA definisce una collezione di oggetti su cui
sono definite queste due semplici operazioni:
Possiamo pensare a due realizzazioni, la prima basata su coordinate cartesiane (PuntoCartesiano):
|
![]() ![]() |
|
La seconda realizzazione si basa su coordinate
polari (PuntoPolare)
[si usano i radianti come unità di misura per gli angoli: novanta
gradi misurano Math.PI/2, ossia circa 1.57]
|
![]() ![]() |
|
![]() ![]() |
Un utente dell'interfaccia PuntoNelPiano
può usare il nome dell'interfaccia come tipo delle variabili che
dichiara, e può assegnare loro come valori, degli oggetti
PuntoCartesiano
o
PuntoPolare
[UsaPuntoNelPiano]:
|