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;
 	}