![]() |
Pages (2): « 1 [2] Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Fondamenti di architettura e programmazione (http://www.dsy.it/forum/forumdisplay.php?forumid=234)
-- [HELP] clone() (http://www.dsy.it/forum/showthread.php?threadid=23849)
A me compila ed esegue senza errori la classe Programma.java (quella per il testing).. ora non so se fa tutto quello che è richiesto nel modo giusto, ma me lo fa credere il fatto che funzioni tutto
Secondo me il metodo clone deve essere implementato in ogni classe... ma SOPRATTUTTO deve essere statico in modo che ad esempio da Sequenza si possa accedere al metodo clone di Dichiara o Assegna o tutti gli altri.... Dato che a priori io non so che istruzione contiene Sequenza... posso fare un test ad esempio così:
public static Object clone(){
Object o = new Object();
if(this instanceof Dichiara){
.....
}
.....
}
e in Dichiara il clone è semplicemente così:
public static Object clone(){
Object o;
...
Intervento del moderatore:
Codice Limato
Scusate ma se il metodo clone() è astratto in Istruzione non può essere richiamato in quanto non ha un corpo e andrebbe perciò implementato in ogni classe....ma come cosa mi pare abbastanza dispendiosa soltanto che il testo non chiarisce bene come gestire il metodo clone().....qualcuna sa di preciso come va fatto?
Grazie
Premetto che io nn ho definito clone() come astratto in Istruzione, in modo da ridefinirlo solo nelle classi che rappresentano realmente delle istruzioni (nn so se sia giusto).
Seguendo quanto scritto nel link io ho messo nella classe Istruzione (public abstract class Istruzione implements Cloneable) :
public Object clone() {
try {
return super.clone();
}
catch (CloneNotSupportedException e) {
return null;
}
}
Per definire il metodo invece nelle singole Istruzioni ho messo ad es. in Dichiara:
public Object clone() {
....
Intervento del moderatore:
Codice Limato
Il problema è che nel testo del progetto viene specificato che il metodo clone() in Istruzione deve essere astratto quindi penso che bisogna attenersi a quanto viene detto...
ariel ha ragione....è obbligatoriamente astratto.......qualcuno è riuscito a farlo funzicare????
__________________
we are just two lost souls swimming in a fish bowl year after year....running over the same old ground....what have we found.......
Penso che vada dichiarato astratto e implementato in ogni classe anche se a me sembrano tutti uguali alla fine! Cmq usando il clone di Clonable funziona ma penso sia errato!
Allora..
Io credo che il metodo clone sia obbligatoriamente da dichiarare astratto nella classe astratta Istruzione.
Io ho poi utilizzato il clone() di object nelle classi estese a Istruzione per copiare l'oggetto di classe.
Facendo così ogni volta che si richiama il metodo clone su una qualsiasi istanza della classe Istruzione verrà invocato il metodo clone() della corrispondente sottoclasse estesa.
public Object clone() {
Object obj = new Object();
...
Intervento del moderatore:
Codice Limato
| All times are GMT. The time now is 11:14. | Pages (2): « 1 [2] Show all 23 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.