Rintrah84
07-07-2009, 12:01
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:
/** 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
}
Da tale interfece implementerò poi varie classi come InteroMisurabile, RettangoloMisurabile, FrazioneMisurabile, etcetc.
Poi ho una classe chiamata Processo che contiene un metodo inserisci che inserisce un QUALSIASI oggetto Misurabile dentro un buffer rappresentato da un Vector:
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
}
}
Così facendo al metodo inserisci() gli passo il riferimento ad un qualsiasi oggetto che ha supertipo Misurabile e voglio che lo inserisca a prescindere di quale sia il suo tipo effettivo (mi basta che sia un Misurabile per essere inserito nel buffer).
Si può fare?
Grazie
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:
/** 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
}
Da tale interfece implementerò poi varie classi come InteroMisurabile, RettangoloMisurabile, FrazioneMisurabile, etcetc.
Poi ho una classe chiamata Processo che contiene un metodo inserisci che inserisce un QUALSIASI oggetto Misurabile dentro un buffer rappresentato da un Vector:
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
}
}
Così facendo al metodo inserisci() gli passo il riferimento ad un qualsiasi oggetto che ha supertipo Misurabile e voglio che lo inserisca a prescindere di quale sia il suo tipo effettivo (mi basta che sia un Misurabile per essere inserito nel buffer).
Si può fare?
Grazie