![]() |
Pages (2): « 1 [2] Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Didattica in generale (http://www.dsy.it/forum/forumdisplay.php?forumid=115)
-- [Metodi Formali dell'informatica 1 e 2] Diario del corso 04/05 (http://www.dsy.it/forum/showthread.php?threadid=13506)
Originally posted by picoid82
ok,forse mi son espresso male, facciamo un esempio +"tera-tera":
una classe A con attributo a vincolato in Argo con invariante che a>5, il main della classe mi chiede di dare in input il valore della variabile da assegnare all'oggetto, ok? se il codice java ha come costruttore A oggetto = new A(valore); nel momento in cui dò in input 3 viene segnalata la violazione... termina l'esecuzione ed è chiaro che non dovrebbe succedere..e fin qui ok!
Se però il codice java è ..lettura del valore input... if(valore > 5) A oggetto = new A(valore) else System.out..."valore non valido, reinserire..", allora la domanda è: dove interviene il controllo del vincolo?? dov'è la fase di testing?? cioè il codice java basterebbe da solo, senza commenti creati da argo e senza compilazione col dresden il mio programma crea comunque istanze vincolate (tutto ciò a me sembra proprio una ripetizione, chiedo scusa se è una castroneria! ma non capisco..)
grazie..![]()
Bene...
1) ho fatto lo schema uml con i relativi vincoli ocl
2) ho scritto il codice java e provandolo a mano sembra funzionare
3) ho iniettato i vincoli ocl con dresden e la compilazione e' andata a buon fine
4) lancio il mio programma ma i vincoli ocl sembrano essere impazziti: ad esempio ho un vincolo sull'ora sulla classe Ora ( ad esempio che il campo ora sia compreso tra 0 e 23 estremi inclusi ), a questo punto creo un oggetto di tipo Ora in cui l'ora è compresa tra 0 e 23. Ecco l'uoutput del mio programma inserendo l'ora 11:00:
Inserire il numero dell'ora:
11
Inserire il numero dei minuti:
0
violated ocl invariant 'ora' on object '0:0'.
A fronte di tale violazione cmq il mio programma non termina e se chiedo di visualizzare l'appuntamento creato esso mi visualizza:
Appuntamento il giorno 1 -1-2004 inserita nota eeeee dalle ore 10:0 alle ore 11:0
Siccome questo è un vincolo semplice e non trovo alcun errore è ovvio che vi sia un baco di Dresden.
Inoltre questo non è l'unico vincolo che risulta dare anomalie di questa tipologia...
A questo punto mi è anche impossibile produrre delle classi di test...
Pertanto chiedo se sia possibile avere un orale in cui si espone il progetto svolto di modo da motivare evetuali parti incomplete... insomma... non sarò un esperto di ocl ma mi pare di avere capito bene il suo funzionamento e come si fa ad esprimere i vincoli in linguaggio ocl stesso: se gli strumenti non funzionano a dovere la cosa non deve influenzare il voto che dovrebbe basarsi sulla mia conoscenza di ocl, a maggior ragione che cmq il progetto l'ho svolto.
Vorrei sapere se è possibile fissare una data per la visione dei progetti oppure se occorre contattare direttamente per email il prof. Ornaghi per fissare il colloquio sull'orale.
Domani (10 gennaio) che cosa fate???
Ci troviamo all'orario di lezione magari mandando prima una mail a Trentini??
Ditemi voi..
ciao
Io vorrei fare direttamente l'orale-discussione progetto con Ornaghi, credo oramai di essere saturo di ocl e tool vari ![]()
Originally posted by Arcadia82
Io vorrei fare direttamente l'orale-discussione progetto con Ornaghi, credo oramai di essere saturo di ocl e tool vari![]()
Originally posted by picoid82
ma hai scritto al professore chiedendo se esiste questa forma di valutazione? o basta solo la consegna?
ps. tornando al progetto mi dici come metti le directory per compilare col dresden-ocl-injector? devo mettere i *.java nella cartella dove c'è injector o no??
Per quelli che mi chiedono l'indirizzo di download: http://sourceforge.net/project/show...lease_id=128589
qui c'è la versione 1.1, è giusta vero??
grazie![]()

Per la compilazione... allora... innanzi tutto supponiamo di essere nella directory Agenda. In tale directory ho il file agenda.zargo. A questo punto da ArgoUml dico che tutte le classi generate faranno parte del package denominato test (a voi le fatiche per scoprirlo?! Ci ho perso una giornata...). Bene a questo punto genero il codice java da ArgoUml IL QUALE MI CREA DA SOLO LA DIRECTORY test in Agenda in quanto ho detto che tutte le classi sono del package test...
A questo punto dalla directory Agenda a linea di comando lancio:
1) Per iniettare i vincoli:
java -jar dresden-ocl-injector.jar -m -r test test/*.java
2) Per compilare:
javac -classpath dresden-ocl-injector.jar test/*.java
3) Per eseguire (se il main lo avete in Agenda.java):
java -classpath dresden-ocl-injector.jar test/Agenda
4) Se devo ritoccare il codice java prima di riaprire i relativi file .java li pulisco dai vincoli ocl tramite:
java -jar dresden-ocl-injector.jar -m -c test/*.java
Bon... spero di averti dato un po di aiuto. [/B]
Originally posted by picoid82
ci ho sbattuto la testa per ore ma ho in parte risolto...
a me funziona solo se la directory test o comunque quella creata da ARGO col nome del package è contenuta come sotto directory del dresden, ovvero sotto o allo stesso livello dell'injector..
magra consolazione, ma almeno funziona!!
| All times are GMT. The time now is 03:29. | 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.