|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Jun 2009
Città: Roma
Messaggi: 102
|
[JAVA] Supertipi e sottotipi, posso fare questa cosa?
Ciao,
allora la situazione è questa, ho un'interface che mi definisce dati di tipo Misurabile che come unica caratteristica comune hanno la capacità di restituire la loro misura: Codice:
/** OVERVIEW: Si tratta di un'interface che descrive la caratteristica comune ad una serie di tipi che la implementeranno: ovvero la capacità di restituire al chiamante la propria misura */ public interface Misurabile{ double misura(); // Ogni elemento di tipo Misurabile deve essere capace di misurarsi } Poi ho una classe chiamata Processo che contiene un metodo inserisci che inserisce un QUALSIASI oggetto Misurabile dentro un buffer rappresentato da un Vector: Codice:
public class Processo{ /* Il buffer condiviso dai vari processi viene rappresnentato mediante un Vector definito come variabile di classe */ private static Vector buffer; static boolean statoBuffer = false; /* TRUE: il buffer è stato creato; FALSE: il buffer non è stato creato /** EFFECTS: Si tratta di un metodo di classe che crea il buffer (rendendo possibile le operazioni dei processi su di esso) e setta a TRUE la variabile statoBuffer. Tale metodo è comune a tutti i tipi di processi e viene implementato nella classe abstract */ public static void creaBuffer(){ if(statoBuffer = false){ // Se il buffer non è stato ancora creato buffer = new Vector(); // Crea il nuovo buffer statoBuffer = true; // Setta a true statoBuffer per avvertire i processi che il buffer è creato e pronto all'uso } /** EFFETCT: Inserisce un qualsiasi oggetto di tipo Misurabile nel buffer se il buffer è stato correttamente creato, altrimenti solleva un'eccezione @param: il riferimento ad un oggetto Misurabile */ public void inserisci(Misurabile m){ if(statoBuffer = false) throw new FailureException(); // Se il buffer non è stato creato solleva un'eccezione else buffer.addElement(m); // Altrimenti aggiungi l'oggetto referenziato da m alla fine del buffer } } Si può fare? Grazie |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Jun 2009
Città: Roma
Messaggi: 102
|
Quote:
Tnx |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Per fare le cose in maniera un po' più type safe, potresti fare uso dei Generics; in particolare rendere il tuo buffer generalizzabile facendo in modo che il client debba specificare il tipo di elementi inseribili nel buffer. Esempio: supponiamo che buffer sia una lista implementa dalla classe ArrayList. Usiamo i Generics per specificare che gli elementi inseribili sono solo quelli che implementano l'interfaccia Misurabile: Codice:
// dichiarazione List<Misurabile> buffer; // inizializzazione buffer = new ArrayList<Misurabile>(); Quindi hai una maggiore type safety perchè il problema si manifesta già a compile-time, mentre prima accadeva solo a run-time.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:56.