diff --git a/ENSIM/Java/tp_poo_4a/.idea/.name b/ENSIM/Java/tp_poo_4a/.idea/.name
new file mode 100644
index 0000000..ba5e953
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/.idea/.name
@@ -0,0 +1 @@
+tp_poo_4a
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/.idea/compiler.xml b/ENSIM/Java/tp_poo_4a/.idea/compiler.xml
new file mode 100644
index 0000000..30f10f4
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/.idea/compiler.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/.idea/misc.xml b/ENSIM/Java/tp_poo_4a/.idea/misc.xml
new file mode 100644
index 0000000..4b661a5
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/.idea/uiDesigner.xml b/ENSIM/Java/tp_poo_4a/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/.idea/vcs.xml b/ENSIM/Java/tp_poo_4a/.idea/vcs.xml
new file mode 100644
index 0000000..c2365ab
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/.idea/workspace.xml b/ENSIM/Java/tp_poo_4a/.idea/workspace.xml
new file mode 100644
index 0000000..f0683b5
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/.idea/workspace.xml
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1542706982943
+
+
+ 1542706982943
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No facets are configured
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ tp_poo_4a
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/Java.iml b/ENSIM/Java/tp_poo_4a/Java.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/Java.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/pom.xml b/ENSIM/Java/tp_poo_4a/pom.xml
new file mode 100644
index 0000000..25477be
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ fr.ensim.tp_poo_4a
+ tp_poo_4a
+ 1.0-SNAPSHOT
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/Animal.java b/ENSIM/Java/tp_poo_4a/src/main/java/Animal.java
new file mode 100644
index 0000000..0e3b391
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/Animal.java
@@ -0,0 +1,15 @@
+public class Animal {
+
+ private String nomAnimal;
+ private TypeAnimal typeAnimal;
+
+ public String getNomAnimal()
+ {
+ return nomAnimal;
+ }
+
+ public TypeAnimal getTypeAnimal()
+ {
+ return typeAnimal;
+ }
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/App.java b/ENSIM/Java/tp_poo_4a/src/main/java/App.java
new file mode 100644
index 0000000..f9c5e63
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/App.java
@@ -0,0 +1,26 @@
+import exception.LimiteVisiteurException;
+
+import java.util.Arrays;
+
+public class App {
+
+ public static void main(String[] args)
+ {
+ Zoo zoo = new Zoo();
+
+ Chien chien = new Chien();
+
+ zoo.nouvelAnimal(chien);
+
+ for(int i = 0; i < 20; i++)
+ {
+ try {
+ zoo.nouveauVisiteur();
+ } catch (LimiteVisiteurException e) {
+ System.out.println("Trop de visiteurs " + Arrays.toString(e.getStackTrace()));
+ } finally {
+ System.out.println(">> " + zoo.getNombreVisiteur() + "/" + zoo.getLimiteVisiteur());
+ }
+ }
+ }
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/Chat.java b/ENSIM/Java/tp_poo_4a/src/main/java/Chat.java
new file mode 100644
index 0000000..34c6bf6
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/Chat.java
@@ -0,0 +1,9 @@
+public class Chat extends Animal {
+
+ @Override
+ public String getNomAnimal()
+ {
+ return super.getNomAnimal();
+ }
+
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/Chien.java b/ENSIM/Java/tp_poo_4a/src/main/java/Chien.java
new file mode 100644
index 0000000..fc3f133
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/Chien.java
@@ -0,0 +1,8 @@
+public class Chien extends Animal {
+
+ @Override
+ public String getNomAnimal()
+ {
+ return super.getNomAnimal();
+ }
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/Secteur.java b/ENSIM/Java/tp_poo_4a/src/main/java/Secteur.java
new file mode 100644
index 0000000..c444ea0
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/Secteur.java
@@ -0,0 +1,32 @@
+import java.util.ArrayList;
+import java.util.List;
+
+public class Secteur {
+
+ final public static int NB_MAX_VISITEURS = 15;
+
+ private TypeAnimal typeAnimauxDansSecteurs;
+ private List animauxDansSecteur;
+
+ public Secteur(TypeAnimal typeAnimal)
+ {
+ this.typeAnimauxDansSecteurs = typeAnimal;
+
+ animauxDansSecteur = new ArrayList();
+ }
+
+ public void ajouterAnimal(Animal animal)
+ {
+ animauxDansSecteur.add(animal);
+ }
+
+ public int getNombreAnimaux()
+ {
+ return animauxDansSecteur.size();
+ }
+
+ public TypeAnimal obtenirType()
+ {
+ return typeAnimauxDansSecteurs;
+ }
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/TypeAnimal.java b/ENSIM/Java/tp_poo_4a/src/main/java/TypeAnimal.java
new file mode 100644
index 0000000..af925d6
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/TypeAnimal.java
@@ -0,0 +1,5 @@
+public enum TypeAnimal {
+ Chien,
+ Chat
+
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/Zoo.java b/ENSIM/Java/tp_poo_4a/src/main/java/Zoo.java
new file mode 100644
index 0000000..d6612bb
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/Zoo.java
@@ -0,0 +1,67 @@
+import exception.LimiteVisiteurException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Zoo {
+
+ private int nbVisiteurs;
+ private List secteursAnimaux;
+
+ public Zoo()
+ {
+ secteursAnimaux = new ArrayList();
+ }
+
+ public void nouveauVisiteur() throws LimiteVisiteurException
+ {
+ if(nbVisiteurs >= getLimiteVisiteur())
+ {
+ throw new LimiteVisiteurException();
+ }
+ else
+ {
+ nbVisiteurs++;
+ }
+ }
+
+ public int getLimiteVisiteur()
+ {
+ return secteursAnimaux.size() * Secteur.NB_MAX_VISITEURS;
+ }
+
+ public void nouvelAnimal(Animal animal)
+ {
+ int index = 0;
+ boolean found = false;
+
+ while(index < secteursAnimaux.size() && !found)
+ {
+ index++;
+
+ if(secteursAnimaux.get(index).obtenirType().equals(animal.getTypeAnimal()))
+ {
+ found = true;
+
+ secteursAnimaux.get(index).ajouterAnimal(animal);
+ }
+ }
+
+ if(secteursAnimaux.size() == 0 || !found)
+ {
+ Secteur secteur = new Secteur(animal.getTypeAnimal());
+ secteur.ajouterAnimal(animal);
+ secteursAnimaux.add(secteur);
+ }
+ }
+
+ public int nombreAnimaux()
+ {
+ return 0;
+ }
+
+ public int getNombreVisiteur()
+ {
+ return nbVisiteurs;
+ }
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/exception/AnimauxDansMauvaisSecteurException.java b/ENSIM/Java/tp_poo_4a/src/main/java/exception/AnimauxDansMauvaisSecteurException.java
new file mode 100644
index 0000000..6ca2e78
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/exception/AnimauxDansMauvaisSecteurException.java
@@ -0,0 +1,4 @@
+package exception;
+
+public class AnimauxDansMauvaisSecteurException extends Exception {
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/main/java/exception/LimiteVisiteurException.java b/ENSIM/Java/tp_poo_4a/src/main/java/exception/LimiteVisiteurException.java
new file mode 100644
index 0000000..13d84b2
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/main/java/exception/LimiteVisiteurException.java
@@ -0,0 +1,4 @@
+package exception;
+
+public class LimiteVisiteurException extends Exception {
+}
diff --git a/ENSIM/Java/tp_poo_4a/src/test/java/AppTest.java b/ENSIM/Java/tp_poo_4a/src/test/java/AppTest.java
new file mode 100644
index 0000000..67e6821
--- /dev/null
+++ b/ENSIM/Java/tp_poo_4a/src/test/java/AppTest.java
@@ -0,0 +1,29 @@
+import exception.LimiteVisiteurException;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.*;
+
+public class AppTest {
+
+ public static void main(String[] args)
+ {
+ Zoo zoo = new Zoo();
+
+ Chien chien = new Chien();
+
+ zoo.nouvelAnimal(chien);
+
+ for(int i = 0; i < 20; i++)
+ {
+ try {
+ zoo.nouveauVisiteur();
+ } catch (LimiteVisiteurException e) {
+ System.out.println("Trop de visiteurs " + Arrays.toString(e.getStackTrace()));
+ } finally {
+ System.out.println(">> " + zoo.getNombreVisiteur() + "/" + zoo.getLimiteVisiteur());
+ }
+ }
+ }
+
+}
\ No newline at end of file