NoCode ha scritto:
L'interfaccia Operazione:
Operazione tecnicamente è corretta. Il senso potrebbe essere dubbio/discutibile per due motivi:
a) il esegui con 3 operandi è un po' strano/inconsueto. Per una divisione che vorrebbe dire??? (val1 ÷ val2) ÷ val3 ?? O che?
b) l'uso di getRisultato() presuppone che prima sia stato invocato esegui. Detto in generale (volendo fare proprio i pignoli) chi garantirebbe che in una lista di operazioni tutte siano già state "eseguite"
prima dell'ordinamento?
NoCode ha scritto:
L'interfaccia Utilita:
Classe astratta, non interfaccia.
Ma c'è una questione: quel val. Per COSA lo usi? Guarda BENE. Quel val NON è usato da nessuna parte!
Quindi? Ripensa bene ...
NoCode ha scritto:
La classe Somma (le altre operazioni sono analoghe):
La implementazione di Comparable<Somma> è di per sé corretta. Ma non ti è utile (probabilmente non era nemmeno richiesta dall'esercizio, vero?)
Non è utile perché tu hai un List<Operazione> e il sort basilare si aspetta una lista di oggetti Comparable ma Operazione non
è-un Comparable.
L'unico modo per risolvere è implementare Comparator in una classe a sé stante. Oppure rendere Operazione una estensione di Comparable<Operazione> (cosa che però forse/probabilmente non è quanto voluto dall'esercizio).
NoCode ha scritto:
ho letto anche l'articolo che hai linkato
Ti è stato utile? Avevo impiegato svariati giorni a scriverlo!