diff --git a/src/main/java/org/petriNet/MainPetriNet.java b/src/main/java/org/petriNet/MainPetriNet.java new file mode 100644 index 0000000000000000000000000000000000000000..a78a1557a89f867ac760ab17be5ab98e07aacc61 --- /dev/null +++ b/src/main/java/org/petriNet/MainPetriNet.java @@ -0,0 +1,61 @@ +package org.petriNet; + +public class MainPetriNet { + + public static void main(String[] args) { + // Create a Petri net + ReseauPerti reseauPerti = new ReseauPerti(); + + // Create places + Place p1 = new Place(1,3); + Place p2 = new Place(2,3); + Place p3 = new Place(3,3); + + // Create transitions with empty Arcs_ENTRANT and Arcs_SORTANT + Transition t1 = new Transition(1, new ArrayList<Arc_ENTRANT>(), new ArrayList<Arc_SORTANT>()); + Transition t2 = new Transition(2, new ArrayList<Arc_ENTRANT>(), new ArrayList<Arc_SORTANT>()); + + // Create arcs + Arc_ENTRANT a1 = new Arc_ENTRANT(p1, t1, 1); + Arc_SORTANT a2 = new Arc_SORTANT(p2, t1, 1); + Arc_ENTRANT a3 = new Arc_ENTRANT(p2, t2, 1); + Arc_SORTANT a4 = new Arc_SORTANT(p3, t2, 1); + + // Add arcs to transitions + t1.ajouterArc_ENTRANT(a1); + t1.ajouterArc_SORTANT(a2); + t2.ajouterArc_ENTRANT(a3); + t2.ajouterArc_SORTANT(a4); + + // Add arcs to places + //p1.addArc(a1); + //p2.addArc(a2); + //p2.addArc(a3); + //p3.addArc(a4); + + // Add places and transitions to the Petri net + reseauPerti.ajouterPlace(p1); + reseauPerti.ajouterPlace(p2); + reseauPerti.ajouterPlace(p3); + reseauPerti.ajouterTransition(t1); + reseauPerti.ajouterTransition(t2); + + // Display the Petri net + reseauPerti.afficherEtat(); + + // Test the est_tirable method + System.out.println("t1 est tirable : " + t1.est_tirable()); + System.out.println("t2 est tirable : " + t2.est_tirable()); + + // Test the tirer method + if (t1.est_tirable()) { + reseauPerti.tirerTransition(t1); + } + if (t2.est_tirable()) { + reseauPerti.tirerTransition(t2); + } + + // Display the Petri net again + reseauPerti.afficherEtat(); + } +} \ No newline at end of file diff --git a/src/main/java/org/petriNet/PetriNetService.java b/src/main/java/org/petriNet/PetriNetService.java index 76cb725e6e601166a07e38f0a3631bbdf75893fe..223e5363e01b3fb01166f5d3d50105d1e1cfd896 100644 --- a/src/main/java/org/petriNet/PetriNetService.java +++ b/src/main/java/org/petriNet/PetriNetService.java @@ -12,4 +12,11 @@ public interface PetriNetService { public void afficherEtat(); + /** + * afficher le réseau de petri + * On a trouver que cette fonction et utile pour visualiser + * le réseau de petri + */ + public void afficherReseau(); + } diff --git a/src/main/java/org/petriNet/ReseauPerti.java b/src/main/java/org/petriNet/ReseauPerti.java index fb0b6182e4af26104fd51cfbd2124bb4693890ca..a68d7c988e12ea431a2819586b78e3532245295c 100644 --- a/src/main/java/org/petriNet/ReseauPerti.java +++ b/src/main/java/org/petriNet/ReseauPerti.java @@ -49,8 +49,34 @@ public class ReseauPerti implements PetriNetService { @Override public void afficherEtat() { // TODO Auto-generated method stub - + // afficher le nombre de jetons dans chaque place + for (Place place : places) { + System.out.println("Place " + place.getId() + " : " + place.getNbrJetons()); + } } - - + + @Override + public void afficherReseauPetri() { + // TODO Auto-generated method stub + + /** + * afficher les places, les transitions et les arcs + * comme un dessin du réseau de petri + * les places comme des cercles + * les transitions comme des rectangles + * les arcs comme des flèches + * les poinds des arcs à côté des flèches + * les jetons des points dans les places + * relier les arcs aux places et aux transitions par des flèches + */ + + // afficher Petri Net + System.out.println("Petri Net : "); + // afficher les places, les arcs, le poid et les transitions + for (Arc arc : arcs) { + System.out.println("Arc : " + arc.getPlace().getId() + " -> " + arc.getTransition().getId() + " : " + arc.getPoids()); + } + + + } diff --git a/src/main/java/org/petriNet/Transition.java b/src/main/java/org/petriNet/Transition.java index 11e24b2237854c0664cfb74c7013ae74ac9abf15..0782b7b636650ed2b8c1ad18fde5c5d5e77db1c7 100644 --- a/src/main/java/org/petriNet/Transition.java +++ b/src/main/java/org/petriNet/Transition.java @@ -3,10 +3,26 @@ package org.petriNet; public class Transition { private int id; private List<Arc_SORTANT> arcs_SORTANTS; + private List<Arc_ENTRANT> arcs_ENTRANTS; - public Transition(int id) { + public Transition(int id, List<Arc_SORTANT> arcs_SORTANTS, List<Arc_ENTRANT> arcs_ENTRANTS) { this.id = id; this.arcs_SORTANTS = new ArrayList<Arc_SORTANT>(); + this.arcs_ENTRANTS = new ArrayList<Arc_ENTRANT>(); + } + + /** + * On ajoute deux méthodes pour pouvoir ajouter les arcs entrants et + * sortants à la transition + * c'est une différence par rapport au diagramme de classe soumis + */ + + public void ajouterArc_SORTANT(Arc_SORTANT arc_SORTANT) { + this.arcs_SORTANTS.add(arc_SORTANT); + } + + public void ajouterArc_ENTRANT(Arc_ENTRANT arc_ENTRANT) { + this.arcs_ENTRANTS.add(arc_ENTRANT); } public boolean est_tirable() {