Revision: 11 Author: alessandroferrari87 Date: Mon Oct 5 14:37:12 2009Log: Migliorie al codice, correzione errori preesistenti, completamento scheletro del core.
http://code.google.com/p/cooperativefsm/source/detail?r=11 Added: /trunk/cooperativefsm/src/cooperativefsm/TransizioniAbilitate.java Modified: /trunk/cooperativefsm /trunk/cooperativefsm/src/cooperativefsm/Fsm.java /trunk/cooperativefsm/src/cooperativefsm/Input.java /trunk/cooperativefsm/src/cooperativefsm/Simulazione.java /trunk/cooperativefsm/src/cooperativefsm/Stato.java /trunk/cooperativefsm/src/cooperativefsm/Transizione.java ======================================= --- /dev/null+++ /trunk/cooperativefsm/src/cooperativefsm/TransizioniAbilitate.java Mon Oct 5 14:37:12 2009
@@ -0,0 +1,32 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package cooperativefsm; + +/** + * + * @author alessandro + */ +public class TransizioniAbilitate { + + private int idTransizioneFSM1; + private int idTransizioneFSM2; + + public void setIdTransizioneFSM1(int id){ + idTransizioneFSM1 = id; + } + public void setIdTransizioneFSM2(int id){ + idTransizioneFSM2 = id; + } + + public int getIdTransizioneFSM1(){ + return idTransizioneFSM1; + } + + public int getIdtransizioneFSM2(){ + return idTransizioneFSM2; + } + +} =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Fsm.java Sat Oct 3 08:01:59 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Fsm.java Mon Oct 5 14:37:12 2009
@@ -2,50 +2,60 @@ /** * - * @author Renato + * @author Alessandro Ferrari, Carlo Svanera, Luca Cominardi */ import java.util.Vector; public class Fsm { - String id; - int numStati; - Stato sCorrente; //serve davvero??? - Vector listaStati; - Vector listaTrans; + private String id; + private int numStati; + private Vector<Stato> stati; + private Vector<Transizione> transizioni; + private int numRelazioniSincroneTransizioniUscenti; - public Fsm () { // costruttore di una macchina a stati finiti - - listaStati = new Vector (); - listaTrans = new Vector ();+ public Fsm (String _id, Vector<Stato> _stati,Vector<Transizione> _transizioni) { // costruttore di una macchina a stati finiti
+ + id=_id; + stati = _stati; + transizioni = _transizioni; } - -public void addStato(Stato s) { //aggiunge uno stato al vector listaStati
- listaStati.add(s); + stati.add(s); }- public void setStatoCorrente(Stato s) { //imposta il valore dello stato corrente
- sCorrente = s; + public Vector<Stato> getStati(){ + return stati; } - public Stato getStatoCorrente () { - return sCorrente; - } - - public Stato getStato (int indice) { - Stato s = (Stato) listaStati.get(indice); + Stato s = (Stato) stati.get(indice); return s; } - - //settaTransizioniUscentiStati(); + + public Vector<Transizione> getTransizioni() + { + return transizioni; + } + + + public void setTransizioniUscentiStati(){ + //TODO + } + + public int getNumRelazioniSincroneTransizioniUscenti(){ + return numRelazioniSincroneTransizioniUscenti; + } ++ public void setNumRelazioniSincroneTransizioniUscenti(Simulazione.Relazione relazioni[][]){
+ //TODO + } } =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Input.java Sat Oct 3 08:01:59 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Input.java Mon Oct 5 14:37:12 2009
@@ -2,7 +2,7 @@ /** * - * @author Renato + * @author Alessandro Ferrari, Carlo Svanera, Luca Cominardi */ import java.util.Vector; import java.lang.*; @@ -10,11 +10,21 @@ public class Input {+ //Attributi private, metodi public, information hiding ;), per accederci
+ //utilizza i get e i set + + //Ricordati il specificatore del tipo di collection per i vector, + //tipo Vector<nome_classe> ++ //Per i nomi degli attributi fai riferimento ai diagrammi uml che ho fatto
+//Questi attributi sono in realtà variabili di appoggio che servono ai metodi (astatti)
- public Vector listaS; - public Vector listaT; - public Vector listaR; - public Vector listaMacchine; + private Vector<Stato> listaS; + private Vector<Transizione> listaT;+ //La documentazione su come deve essere relazioniTransizioni è presente nelle mail
+ //Se non è ancora chiara contattami+ private Simulazione.Relazione relazioniTransizioni[][]; //Relazione è un tipo enum che definisce i tipi di relazione
+ private Vector<Fsm> listaFSM; /* @@ -28,14 +38,14 @@ for(i=0; i<numFsm; i++) { Fsm fsm = creaFsm (Integer.toString(i)); - listaMacchine.add(fsm); + listaFSM.add(fsm); } //Lettura stato iniziale StatoCorrente statoIniziale = leggiStatoIniziale(); //Lettura relazioni - listaR = leggiRelazioni(); + relazioniTransizioni = leggiRelazioni(); //Controllo dei vincoli di correttezza della simulazione if(!simulazioneCorretta() ) @@ -44,7 +54,7 @@ }//L'interfaccia tra io e core è data da questa riga, è l'unico punto di incontro - return (new Simulazione(listaMacchine, listaR, statoIniziale)); + return (new Simulazione(listaFSM, relazioniTransizioni, statoIniziale));
} @@ -119,16 +129,11 @@ * @return la nuova istanza di Fsm */ - public Fsm creaFsm (String nome) - { - Fsm macchina= new Fsm (); - - macchina.id = nome; - macchina.listaStati = listaS; - macchina.listaTrans = listaT; - + public Fsm creaFsm (String nome){ + Fsm macchina= new Fsm ( nome , listaS, listaT); + return macchina; - } + } @@ -152,16 +157,17 @@ * Metodo che ricava le relazioni tra le transizioni delle 2 FSM* @return il vettore contenente le relazioni tra TUTTE le transizioni [...]
*/ - public Vector leggiRelazioni () - { - Vector listaRelazioni = new Vector(); + public Simulazione.Relazione[][] leggiRelazioni (){+ int n = listaFSM.elementAt(0).getTransizioni().size();//N° transizioni prima fsm + int m = listaFSM.elementAt(1).getTransizioni().size();//..seconda + Simulazione.Relazione _relazioniTransizioni[][] = new Simulazione.Relazione[n+1][m+1];
Transizione t1,t2; //RelazioneTransizioni r = new RelazioneTransizioni (t1,t2); //listaRelazioni.add(r); - return listaRelazioni; - } + return relazioniTransizioni; + } =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Simulazione.java Sun Oct 4 14:53:50 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Simulazione.java Mon Oct 5 14:37:12 2009
@@ -2,7 +2,7 @@ /** * - * @author Renato + * @author Alessandro Ferrari, Carlo Svanera, Luca Cominardi */ import java.util.Vector; @@ -15,36 +15,59 @@ M_EX } - //public Fsm fsm1; - //public Fsm fsm2; - private Vector listaFsm; -- private Vector listaRelazioni; //lista statica che comprende TUTTE le possibili coppie di transizioni - private Vector listaRelazioniAbilitate; //lista dinamica che varia a seconda dello stato corrente
- private StatoCorrente sCorrente; + private Vector<Fsm> listaFsm;+ private Vector<TransizioniAbilitate> transizioniAbilitate; //lista dinamica che varia a seconda dello stato corrente
+ private StatoCorrente statoCorrente; private Relazione relazioniTransizioni[][]; - - - public Simulazione (Vector listaM, Vector listaRel, StatoCorrente sc) - { - listaFsm = listaM; - listaRelazioni = listaRel; - sCorrente = sc; - } - + /** + *+ * That constructor provide to create a simulation by settings the params
+ * passed from the IO classes. + * + * @param listaFSM + * @param relazioni + * @param sc + * + * @see Input,InputXML,InputTast + */ ++ public Simulazione (Vector<Fsm> listaFSM, Relazione relazioni[][], StatoCorrente sc)
+ { + listaFsm = listaFSM; + relazioniTransizioni = relazioni; + statoCorrente = sc; + } + + /** + * + * This method fill the list of TransizioniAbilitate starting from+ * a set of Relazioni that interest outgoing Transizioni from the current
+ * state. + * + */ + + private void setTransizioniAbilitate(){ + //TODO: vedi macchina a stati finiti uml + } + + private StatoCorrente scatta(TransizioniAbilitate t){ + StatoCorrente prossimoStato = new StatoCorrente(); + + //TODO + + return prossimoStato; + } /** - * - * @return + *This method perform the simultion step. + * */ public boolean eseguiIterazione () - { - boolean fineProg = false; - - /////// - - return fineProg; - } + { + //TODO + + return true; + } } =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Stato.java Sat Oct 3 08:01:59 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Stato.java Mon Oct 5 14:37:12 2009
@@ -2,24 +2,35 @@ /** * - * @author Renato + * @author Alessandro Ferrari, Carlo Svanera, Luca Cominardi */ import java.util.Vector; public class Stato { - int idStato; - Vector transUscenti; + private int idStato; + private Vector<Transizione> transizioniUscenti; public Stato (int num_stato) { //costruttore di uno stato idStato = num_stato; - transUscenti = new Vector (); + transizioniUscenti = new Vector<Transizione>(); } public void addTransUscente(Transizione t){ - transUscenti.add(t); - } -} + transizioniUscenti.add(t); + } + + public int getId() + { + return idStato; + } + + public void setId(int id) + { + idStato = id; + } + +} =======================================--- /trunk/cooperativefsm/src/cooperativefsm/Transizione.java Wed Sep 23 03:18:54 2009 +++ /trunk/cooperativefsm/src/cooperativefsm/Transizione.java Mon Oct 5 14:37:12 2009
@@ -11,13 +11,24 @@ */ public class Transizione { - int id; - Stato sorgente; - Stato destinazione;- //int numRelazioniSincroneStatoCorrente //Indica quanti relazioni sincrone ha con altre transizioni nello stato corrente
- - public Transizione(Stato s, Stato d) { - sorgente=s; - destinazione=d; + private int id; + private Stato stato1; + private Stato stato2;+ private int numRelazioniSincroneStatoCorrente; //Indica quanti relazioni sincrone ha con altre transizioni nello stato corrente
+ + public Transizione(Stato _stato1, Stato _stato2) { + stato1=_stato1; + stato2=_stato2; + } ++ public void setNumRelazioniSincroneStatoCorrente( Simulazione.Relazione relazioni[][]){
+ //TODO + } + + public int getNumRelazioniSincroneStatoCorrente(){ + + //TODO + + return numRelazioniSincroneStatoCorrente; } }