diff --git a/src/tp04/Person.class b/src/tp04/Person.class
new file mode 100644
index 0000000000000000000000000000000000000000..d823aa1cf9573cd9d3a949541d4c7a48a1346a49
Binary files /dev/null and b/src/tp04/Person.class differ
diff --git a/src/tp04/Person.java b/src/tp04/Person.java
new file mode 100644
index 0000000000000000000000000000000000000000..120790cee0d3f80d2fa27c374c7a953d86263972
--- /dev/null
+++ b/src/tp04/Person.java
@@ -0,0 +1,30 @@
+package tp04;
+
+public class Person {
+    private static int ID;
+    private String forename;
+    private String name;
+        public Person(String forename, String name){
+            this.name=name;
+            this.forename=forename;
+        }
+        public int getID(){
+            return this.ID;
+        }
+        public String toString(){
+            return "(" + this.ID + ":" + this.forename + this.name + ")";
+        }
+        public boolean equals(Object ID){
+            if (this == ID) return true;
+            if(ID == null) return false;
+            if(this.getClass() != ID.getClass()) return false;
+            Person other = (Person) ID;
+            if(this.name == null) {
+                if (other.name != null) return false;
+            } else if (!this.name.equals(other.name)) return false;
+            if (this.forename == null){
+                if (other.forename != null) return false;
+            } else if (!this.forename.equals(other.forename)) return false;
+            return true;
+        }
+}
\ No newline at end of file
diff --git a/src/tp04/UsePerson.java b/src/tp04/UsePerson.java
new file mode 100644
index 0000000000000000000000000000000000000000..aaf0940b6992750d3a04a452c724321088aee4f9
--- /dev/null
+++ b/src/tp04/UsePerson.java
@@ -0,0 +1,28 @@
+package tp04;
+
+public class UsePerson {
+	public static void main(String[] args) {
+		Person alice = new Person("Alice", "A");
+		Person bruno = new Person("Bruno", "B");
+		Person autre = alice;
+		boolean testsOK = true;
+		// test des getters
+		if(!alice.getForename().equals("Alice") || !alice.getName().equals("A") || !bruno.getForename().equals("Bruno") || !bruno.getName().equals("B") || !autre.getForename().equals("Alice") || !autre.getName().equals("A")) {
+			System.out.println("Erreur de méthodes GET");
+			testsOK = false;
+		}
+		// test des setters
+		alice.setForename("Anatole");
+		bruno.setName("BB");
+		if(!alice.getForename().equals("Anatole") || !alice.getName().equals("A") || !bruno.getForename().equals("Bruno") || !bruno.getName().equals("BB") || !autre.getForename().equals("Anatole") || !autre.getName().equals("A")) {
+			System.out.println("Erreur de méthodes SET");
+			testsOK = false;
+		}
+		// test du equals
+		if(alice.equals(bruno) || !alice.equals(autre)) {
+			System.out.println("Erreur de méthode equals");
+			testsOK = false;
+		}
+		if(testsOK) System.out.println("Tests de UsePerson réussis !");
+	}
+}