diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000000000000000000000000000000000000..2b63946d5b31084bbb7dda418ceb3d75eb686373 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Palette2"> + <group name="Swing"> + <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> + </item> + <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> + <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> + <initial-values> + <property name="text" value="Button" /> + </initial-values> + </item> + <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="RadioButton" /> + </initial-values> + </item> + <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="CheckBox" /> + </initial-values> + </item> + <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="Label" /> + </initial-values> + </item> + <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> + <preferred-size width="-1" height="20" /> + </default-constraints> + </item> + <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> + </item> + </group> + </component> +</project> \ No newline at end of file diff --git a/src/main/java/org/petriNet/Arc_ENTRANT.java b/src/main/java/org/petriNet/Arc_ENTRANT.java index 9d0160765afb10d56e4c78c33afc9a196d9f3fe4..cf43fc20b666957d726d10946d6e5fc55253a9b3 100644 --- a/src/main/java/org/petriNet/Arc_ENTRANT.java +++ b/src/main/java/org/petriNet/Arc_ENTRANT.java @@ -1,13 +1,21 @@ package org.petriNet; -public class Arc_ENTRANT extends Arc { +public abstract class Arc_ENTRANT extends Arc { + + /** + * Les Arc_ENTRANT sont entrants à une transition et sortants d'une place + * Ils permettent de retirer des jetons d'une place + * Ils sont donc la classe abstraite mère des Arc_sortant_simple, Arc_videur et Arc_zero + * C'est une différence par rapport au diagramme de classe soumis + */ private Place place; private Transition transition; private int poids; + private int id; - public Arc_ENTRANT(Place place, Transition transition, int poids) { - super(place, transition, poids); + public Arc_ENTRANT(Place place, Transition transition, int poids, int id) { + super(place, transition, poids, id); } @Override @@ -45,27 +53,37 @@ public class Arc_ENTRANT extends Arc { @Override public int getPoids() { - return 0; + return this.poids; } @Override - public void setPoid(int poids) { + public int getId() { + return this.id; + } + + @Override + public void setId(int id) { + this.id = id; + } + @Override + public void setPoid(int poids) { + this.poids = poids; } @Override public Place getPlace() { - return null; + return this.place; } @Override public void setPlace(Place place) { - + this.place = place; } @Override public Transition getTransition() { - return null; + return this.transition; } } \ No newline at end of file diff --git a/src/main/java/org/petriNet/Arc_SORTANT.java b/src/main/java/org/petriNet/Arc_SORTANT.java index f3bc1a75abca7fa6b5a2d2262f70c6edf58f0e92..bd0efc7deb5eb1bb424aa5d3f8a7e30e4bd034f9 100644 --- a/src/main/java/org/petriNet/Arc_SORTANT.java +++ b/src/main/java/org/petriNet/Arc_SORTANT.java @@ -1,6 +1,6 @@ package org.petriNet; -public abstract class Arc_SORTANT extends Arc { +public class Arc_SORTANT extends Arc { private Place place; private Transition transition; @@ -24,6 +24,41 @@ public abstract class Arc_SORTANT extends Arc { this.place.ajouter_jeton(this.poids); } + @Override + public int getPoids() { + return this.poids; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public void setId(int id) { + this.id = id; + } + + @Override + public void setPoid(int poids) { + this.poids = poids; + } + + @Override + public Place getPlace() { + return this.place; + } + + @Override + public void setPlace(Place place) { + this.place = place; + } + + @Override + public Transition getTransition() { + return this.transition; + } + /** * Dans la classe Arc_SORTANT, on ajoute les jetons à la place seulement, * il n'y a pas de jetons à enlever diff --git a/src/main/java/org/petriNet/Arc_entrant_simple.java b/src/main/java/org/petriNet/Arc_entrant_simple.java new file mode 100644 index 0000000000000000000000000000000000000000..b24636a32627073bc7edb52d78f21e616a9f6154 --- /dev/null +++ b/src/main/java/org/petriNet/Arc_entrant_simple.java @@ -0,0 +1,15 @@ +package org.petriNet; + +public class Arc_entrant_simple extends Arc_ENTRANT { + + Place place; + Transition transition; + int poids; + int id; + + + public Arc_entrant_simple(Place place, Transition transition, int poids, int id) { + super(place, transition, poids, id); + } + +} diff --git a/src/main/java/org/petriNet/Arc_sortant_simple.java b/src/main/java/org/petriNet/Arc_sortant_simple.java deleted file mode 100644 index 8b3d25bd1fe8f44e7ce8aee868b3c6e279982c90..0000000000000000000000000000000000000000 --- a/src/main/java/org/petriNet/Arc_sortant_simple.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.petriNet; - -public class Arc_sortant_simple { -} diff --git a/src/main/java/org/petriNet/Arc_videur.java b/src/main/java/org/petriNet/Arc_videur.java index 6d07e27bddc3b6d4bd9b040e7157bdfa801f04e0..35549acf1b2fede99d392038a319c266c5e27476 100644 --- a/src/main/java/org/petriNet/Arc_videur.java +++ b/src/main/java/org/petriNet/Arc_videur.java @@ -1,6 +1,34 @@ package org.petriNet; -public class Arc_videur { +public class Arc_videur extends Arc_ENTRANT { + + Place place; + Transition transition; + int poids; + int id; + + public Arc_videur(Place place, Transition transition, int poids, int id) { + super(place, transition, poids, id); + } + + // Les arcs «videurs» qui sont actifs dès qu’il y a un jeton dans la place source et qui enlèvent + // tous les jetons présents lorsqu’ils sont activés. + + @Override + public boolean verifier_tirable() { + if (this.place.get_nombre_jetons() > 0) { + return true; + } + return false; + } + + @Override + public void valider() { + // On retire le nombre de jetons du poids de l'arc + // prendre en cond la place choisie + this.place.enlever_jeton(this.place.get_nombre_jetons()); + } + } diff --git a/src/main/java/org/petriNet/Arc_zero.java b/src/main/java/org/petriNet/Arc_zero.java index 1f4d875de828944af0acbd3d58d68afb50e6f931..3e46166ac4c8f27d83c97262d24bdfb9e217c1db 100644 --- a/src/main/java/org/petriNet/Arc_zero.java +++ b/src/main/java/org/petriNet/Arc_zero.java @@ -1,4 +1,25 @@ package org.petriNet; -public class Arc_zero { + public class Arc_zero extends Arc_ENTRANT { + + Place place; + Transition transition; + int poids; + int id; + boolean etat; + + + public Arc_zero(Place place, Transition transition, int poids, int id) { + super(place, transition, poids, id); + } + + // Les arcs « zéro » qui ne sont actifs que quand la place source est vide. + + @Override + public boolean verifier_tirable() { + if (this.place.get_nombre_jetons() == 0) { + return true; + } + return false; + } } diff --git a/src/main/java/org/petriNet/MainPetriNet.java b/src/main/java/org/petriNet/MainPetriNet.java index a78a1557a89f867ac760ab17be5ab98e07aacc61..2db6eea88082f4192d9d31907080d0f7d49526ae 100644 --- a/src/main/java/org/petriNet/MainPetriNet.java +++ b/src/main/java/org/petriNet/MainPetriNet.java @@ -1,5 +1,7 @@ package org.petriNet; +import java.util.ArrayList; + public class MainPetriNet { public static void main(String[] args) { @@ -12,12 +14,12 @@ public class MainPetriNet { 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>()); + Transition t1 = new Transition(1, new ArrayList<Arc_SORTANT>(), new ArrayList<Arc_ENTRANT>()); + Transition t2 = new Transition(2, new ArrayList<Arc_SORTANT>(), new ArrayList<Arc_ENTRANT>()); // Create arcs - Arc_ENTRANT a1 = new Arc_ENTRANT(p1, t1, 1); - Arc_SORTANT a2 = new Arc_SORTANT(p2, t1, 1); + Arc_ENTRANT a1 = new Arc_entrant_simple(p1, t1, 1, 1); + Arc_SORTANT a2 = new Arc_SORTANT(p2, t1, 1, 2); Arc_ENTRANT a3 = new Arc_ENTRANT(p2, t2, 1); Arc_SORTANT a4 = new Arc_SORTANT(p3, t2, 1); diff --git a/src/main/java/org/petriNet/ReseauPerti.java b/src/main/java/org/petriNet/ReseauPerti.java index 6fc48a8cce998b7d03f9f04a822bf491f6a3c7d1..79f2b12442b82e8e51af60e7c8d4e8aa00ea8ff2 100644 --- a/src/main/java/org/petriNet/ReseauPerti.java +++ b/src/main/java/org/petriNet/ReseauPerti.java @@ -1,8 +1,6 @@ package org.petriNet; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; +import java.util.*; public class ReseauPerti implements PetriNetService { @@ -10,7 +8,8 @@ public class ReseauPerti implements PetriNetService { private List<Place> places; private List<Transition> transitions; - private List<Arc> arcs; + // create a LinkedHashSet to store the arcs in order to have unique ids + private LinkedHashSet<Arc> arcs; private String etat_reseau = "Pas de transition tirée"; // Create a constructor @@ -18,7 +17,7 @@ public class ReseauPerti implements PetriNetService { // initialiser les listes vide this.places = new ArrayList<>(); this.transitions = new ArrayList<>(); - this.arcs = new ArrayList<>(); + this.arcs = new LinkedHashSet<>(); } // Create getters and setters @@ -38,11 +37,11 @@ public class ReseauPerti implements PetriNetService { this.transitions = transitions; } - public List<Arc> getArcs() { + public LinkedHashSet<Arc> getArcs() { return this.arcs; } - public void setArcs(List<Arc> arcs) { + public void setArcs(LinkedHashSet arcs) { this.arcs = arcs; }