PDA

Visualizza la versione completa : [JAVA] Creare una classe standard


Leandro
06-02-2005, 12:23
Il titolo non è molto esplicativo spero di riuscire a spiegare il problema.

Supponiamo che io abbia due classi:



public Message{

Language language;

.... metodi che usano l'oggetto language...

}

public abstract class Language{

... metodi da implementare ...

}


So che non è coerente per il fatto che Language deve essere estesa da un'altra classe, ed è qui che sta il problema.

Io ho diversi linguaggi che devo estendere Language ma devo fare in modo che in message compaia l'istanza di un oggetto standard (Language in questo caso)

Forse con un esempio potrei essere più chiaro

Supponiamo che qualcuno scriva la classe S1


class L1 extends Language{};

ma non possa mettere mano alla classe Message per cambiare la proprietà


Language language;

in


L1 language;

Come posso fare per ovviare al problema?

E' importante, se non mi sono spiegato, e dubito fortemente di averlo fatto, fatemi tutte le domande che volete.

Grazie a tutti

anx721
06-02-2005, 15:07
ma è giusto che in Message sia dichiarato un campo Language in modo da astrarre dal linguaggio specifico che sarà usato nel messaggio; in questo modo i medotdi di Message saranno in grado di lavorare indipendentemente dal Language specifico che si avrà di volta in volta; se la classe Language è implementata bene, Message dovrà solo conoscere la sua interfaccia per fare tutte le operazioni che servono.

Leandro
06-02-2005, 15:39
Scusa ma non mi è molto chiaro, potresti farmi un esempio?

Se con L1 implemento i metodi di Language, come faccio in Message ad usare quei metodi specifici?

Voglio dire... Language è una classe astratta e non può essere istanziata, come faccio a metterla in Message?

questo mi sembra corretto



public abstract class Language{

abstract parseString(String content);
}

public class L1 extends Language{

parseString(String content){
... operazioni...
}

}

class Message{

L1 language = new L1;

...
language.parseString("ciao");

}


Ma non è quello che vorrei.

anx721
06-02-2005, 15:44
devi fare

class Message{

Language language = new L1;

...
language.parseString("ciao");

}


oppure scrive un costruttore di Message che prende l'oggetto Language come parametro del costruttore

Leandro
06-02-2005, 15:50
Grazie mille, non credevo fosse possibile.

Loading