INTERFACCE

  • From: Paolo Scaramuzza <paoscr@xxxxxxxxx>
  • To: ingsw3@xxxxxxxxxxxxx
  • Date: Thu, 24 Oct 2013 23:20:32 +0200

Eccomi quì per discutere con voi la mia idea riguardo le interfacce. Si tratta 
di qualcosa di generale che vorrei affinare con voi.

Partiamo dalla rappresentazione delle coordinate (x,y).
Esiste nella libreria di java la classe Point2D ( 
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Point2D.html ) che 
dispone di features utilissime come il calcolo della distanza tra due punti.
Userei tale classe per rappresentare le coordinate in output dai vari oggetti 
che lo richiedono.
All' interno di Piont2D si possono memorizzare le coordinate sia come due 
interi sia come due double (o float). Usare gli interi potrebbe essere la 
scelta più naturale poiche gli indici nella bitmap sono essi stessi degli 
interi. Per contro  usare dei double garantisce una maggiore precisione (ci 
serve??) ma può portare a scomodi cast da e verso int. Che ne pensate?

Veniamo alla moneta. Provo a buttare giù una stub per l' interfaccia. Tenete 
presente che i valori sono istanziati dal costruttore poi sono read-only 
(tramite i calssici getter).
        interface Coin
        {
                point2D getA(); // coordinata semiasse maggiore
                "         " getB();     // c. semiasse minore
                "         " getCenter();        // coordinata centro
                int getConfidence();    // valore di confidenza percentuale
        }

Una volta definita l' interfaccia della moneta passiamo all' alogritmo che 
elabora l' immagine. (NOTA: senza ricorrere allo huge memory di Android 
possiamo elaborare solo immagini 640x480).
Avevo pensato ad un oggetto che dal costruttore riceve un byte[] (oppure un 
oggetto Bitmap delle API Android) e separa le componenti RGB in tre array di 
int. Quando viene invocato il metodo public getCoinList() sulle 3 componenti 
vengono operate le trasformazioni (metodi privati). In output ricevo una lista 
in cui le monete sono ordinate per confidenza. Stavo pensando di utilizzare la 
priority queue della java library, anche se potremmo realizzare una semplice 
sorted list che memorizza tutto in un vettore di Coin, tanto potrei 
scommetterci che le monete saranno molto poche -al massimo una decina- quindi 
un insertion sort a ogni put va benissimo e non avremmo l' overhead della 
priority queue.
L' interfaccia della classe elaboratrice potrebbe essere:
        interface CoinFinder
        {
                CoinList findCoins();
        }
Mentre coin list è definita come:
        interface CoinList implements Iterable
        {
                void put(Coin c);       // mette la moneta al posto giusto del 
vettore
                Iterator<Coin> getIterator();   // voglio scorrere 'sta lista 
(accesso casuale possibile?)
        }

Perdonatemi la scarsa adesione alla sintassi java e le eventuali incompletezze 
ma volevo buttar giù delle idee e discuterne.
Per le altre 17 interfacce mi rimetto a voi.

Attachment: signature.asc
Description: This is a digitally signed message part.

Other related posts: