diff --git a/src/main/java/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.java b/src/main/java/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.java
index ce7269d5ecfe5adf17694c31683a359b9322d7ca..9bf29e5b28f5787d33ad5ecaa14ad2ee2ee06330 100644
--- a/src/main/java/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.java
+++ b/src/main/java/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.java
@@ -1,14 +1,35 @@
 package fr.univlille.iut.r304.tp3.q3;
 
-public class ConnectableProperty extends ObservableProperty {
+import fr.univlille.iut.r304.tp3.q1.Observable;
+import fr.univlille.iut.r304.tp3.q1.Observer;
 
-	public void connectTo(ConnectableProperty other) {
-	}
+public class ConnectableProperty extends ObservableProperty implements Observer {
 
-	public void biconnectTo(ConnectableProperty other) {
-	}
+		public void connectTo(ConnectableProperty other) {
+			other.attach(this);
+			other.notifyObservers(other.getValue());
+		}
 
-	public void unconnectFrom(ConnectableProperty other) {
-	}
+		public void biconnectTo(ConnectableProperty other) {
+			this.connectTo(other);
+			other.connectTo(this);
+		}
+
+		public void unconnectFrom(ConnectableProperty other) {
+			other.detach(this);
+		}
+
+		@Override
+		public void update(Observable o) {
+			changed = true;
+		}
+
+		@Override
+		public void update(Observable o, Object arg) {
+			if (!value.equals(arg)) {
+				changed = true;
+				this.setValue(arg);
+			}
+		}
 
 }
diff --git a/src/main/java/fr/univlille/iut/r304/tp3/q3/ObservableProperty.java b/src/main/java/fr/univlille/iut/r304/tp3/q3/ObservableProperty.java
index 4fe250c1b28a1036c86d634bbc124f6a0e51fd4c..363060e5a233f5842766adeb514a650ffea0da2a 100644
--- a/src/main/java/fr/univlille/iut/r304/tp3/q3/ObservableProperty.java
+++ b/src/main/java/fr/univlille/iut/r304/tp3/q3/ObservableProperty.java
@@ -1,24 +1,20 @@
 package fr.univlille.iut.r304.tp3.q3;
 
+import fr.univlille.iut.r304.tp3.q1.Observable;
 import fr.univlille.iut.r304.tp3.q1.Observer;
 
-public class ObservableProperty {
+public class ObservableProperty extends Observable {
+
+	protected Object value=0;
+	protected boolean changed=false;
 
 	public void setValue(Object i) {
+		value = i;
+		notifyObservers(value);
 	}
 
 	public Object getValue() {
-		return null;
-	}
-
-	public void attach(Observer observer) {
-		// methode cree pour que les tests compilent sans erreur
-		// n'est pas censée rester une fois que vous avez fini Q2.1
-	}
-
-	public void detach(Observer observer) {
-		// methode cree pour que les tests compilent sans erreur
-		// n'est pas censée rester une fois que vous avez fini Q2.1
+		return value;
 	}
 
 }
diff --git a/src/main/java/fr/univlille/iut/r304/tp3/q4/Devise.java b/src/main/java/fr/univlille/iut/r304/tp3/q4/Devise.java
new file mode 100644
index 0000000000000000000000000000000000000000..d079421c45bff425d10aaae201d5355af5b2a1e1
--- /dev/null
+++ b/src/main/java/fr/univlille/iut/r304/tp3/q4/Devise.java
@@ -0,0 +1,34 @@
+package fr.univlille.iut.r304.tp3.q4;
+
+import fr.univlille.iut.r304.tp3.q3.ConnectableProperty;
+import fr.univlille.iut.r304.tp3.q1.Observable;
+
+import javax.security.auth.Subject;
+
+public class Devise extends ConnectableProperty {
+    private double conversionRate;
+    private String symbol;
+
+    public Devise(double conversionRate, char symbol) {
+        super();
+        this.conversionRate = conversionRate;
+        this.symbol = symbol;
+    }
+
+    public double getConversionRate() {
+        return this.conversionRate;
+    }
+
+    public String getSymbol() {
+        return this.symbol;
+    }
+
+
+    public void update(Subject o, Object data) {
+        String dataString = (String) data;
+        int index = dataString.indexOf(symbol);
+        if (dataString.contains(symbol)){
+            this.notifyObservers();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/univlille/iut/r304/tp3/q4/Main.java b/src/main/java/fr/univlille/iut/r304/tp3/q4/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ddbbacb49ab4da64532b82eb76bd555733b053e
--- /dev/null
+++ b/src/main/java/fr/univlille/iut/r304/tp3/q4/Main.java
@@ -0,0 +1,6 @@
+package fr.univlille.iut.r304.tp3.q4;
+
+public class Main {
+    public static void main(String[] args) {
+    }
+}
\ No newline at end of file