diff --git a/qualdev/.DS_Store b/qualdev/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6
Binary files /dev/null and b/qualdev/.DS_Store differ
diff --git a/qualdev/compte_rendu.txt b/qualdev/compte_rendu.txt
index 736334a1ce4ffac1a6621c61775831e87e4f2008..ec2ed56b7c1048fc8c4ffe7f2c6da8972edb8c63 100644
--- a/qualdev/compte_rendu.txt
+++ b/qualdev/compte_rendu.txt
@@ -23,3 +23,12 @@ Dépot distant
 6) git push -u origin main
 
 7)git status (encore)
+
+TP2
+
+
+Git pull permet de récupérer les modifications	sur le dépot.
+
+Le git pull ne fonctionne que si on a la bonne version du fichier avant de faire le pull. Sinon on a un message d'erreur et il faut fusionner les branche divergente avec "git merge". Il faut donc toujours faire un git pull avant un push
+
+ 
\ No newline at end of file
diff --git a/src/TD2.ts b/src/TD2.ts
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..710daf9be58b41d45addca52c6c55b02203801db 100644
--- a/src/TD2.ts
+++ b/src/TD2.ts
@@ -0,0 +1,83 @@
+class Caractere {
+    cara: string;
+    constructor(cara: string = "") {
+        this.cara = cara;
+    }
+
+    estVoyelle(): boolean {
+        const temp = this.cara.toLowerCase();
+        return (temp === "a" || temp === "e" || temp === "i" || temp === "o" ||
+            temp === "u" || temp === "y");
+    }
+}
+
+class Rectangle {
+    longueur: number;
+    largeur: number;
+
+    constructor(longueur = 1, largeur = 1) {
+        this.longueur = longueur;
+        this.largeur = largeur;
+    }
+
+    perimetre() {
+        return 2 * (this.longueur + this.largeur);
+    }
+
+    surface() {
+        return this.largeur * this.longueur;
+    }
+
+    agrandir(dim: number): void {
+        if (dim > 1) {
+            this.longueur *= dim;
+            this.largeur *= dim;
+        }
+    }
+}
+
+class Reservoir {
+    capacite: number;
+    contenu: number;
+
+    constructor(capacite: number) {
+        this.capacite = capacite;
+        this.contenu = 0;
+    }
+    verse(quantite: number): number {
+        let dispo = this.capacite - this.contenu;
+        if (quantite <= dispo) {
+            this.contenu += quantite;
+            return 0;
+        } else {
+            this.contenu = this.capacite;
+            return quantite - dispo;
+        }
+    }
+
+    puise(quantite: number): number {
+        if (quantite <= this.contenu) {
+            this.contenu -= quantite;
+            return quantite;
+        } else {
+            this.contenu = 0;
+            return quantite;
+        }
+    }
+
+    jauge(): number {
+        return this.contenu;
+    }
+}
+
+const c = new Caractere("e");
+console.log(c.estVoyelle());
+
+const r = new Rectangle();
+console.log(r.perimetre());
+r.agrandir(5);
+console.log(r.surface());
+
+let reservoir = new Reservoir(50);
+console.log(reservoir.jauge());
+console.log(reservoir.verse(30));
diff --git a/src/TD4.ts b/src/TD4.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e2ba3112b4feb8325b99f7efe2e58736550869a0
--- /dev/null
+++ b/src/TD4.ts
@@ -0,0 +1,61 @@
+class Piste {
+    private titre: string;
+    private duree: number;
+
+    constructor(titre: string, duree: number) {
+        this.duree = duree;
+        this.titre = titre;
+    }
+
+    getTitre(): string {
+        return this.titre;
+    }
+    setTitre(t: string) {
+        this.titre = t;
+    }
+
+    getDuree(): number {
+        return this.duree;
+    }
+    setDuree(d: number) {
+        this.duree = d;
+    }
+
+    egale(p1: Piste): boolean {
+        if (p1.getDuree === this.getDuree && p1.getTitre === this.getTitre) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    toString(): string {
+        return "titre:" + this.getTitre() + ", Durée: " + this.getDuree() +
+            " secondes";
+    }
+}
+
+class Album {
+    private titre: string;
+    private nombrePiste: number;
+    private tab: Array<Piste> = [];
+
+    constructor(titre: string, nombrePiste: number) {
+        this.titre = titre;
+        this.nombrePiste = nombrePiste;
+    }
+
+    getTitre(): string {
+        return this.titre;
+    }
+    setTitre(t: string) {
+        this.titre = t;
+    }
+
+    getNombrePiste(): number {
+        return this.nombrePiste;
+    }
+    setNombrePiste(n: number) {
+        this.nombrePiste = n;
+    }
+}
diff --git a/src/TDEncapsulation.ts b/src/TDEncapsulation.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c13741670693458083dee1c13afd86c08f89155a
--- /dev/null
+++ b/src/TDEncapsulation.ts
@@ -0,0 +1,41 @@
+class Complexe {
+    private _reelle: number;
+    private _imaginaire: number;
+    private static _compteur: number = 0;
+
+    constructor(reelle = 0, imaginaire = 0) {
+        this._imaginaire = imaginaire;
+        this._reelle = reelle;
+    }
+
+    get reelle(): number {
+        return this._reelle;
+    }
+
+    set reelle(r: number) {
+        this._reelle = r;
+    }
+
+    get imaginaire(): number {
+        return this._imaginaire;
+    }
+
+    set imaginaire(i: number) {
+        this._imaginaire = i;
+    }
+
+    static set compteur(c: number) {
+        this._compteur = c;
+    }
+
+    module(): number {
+        return Math.sqrt(this._reelle ** 2 + this._imaginaire ** 2);
+    }
+
+    afficher(): void {
+        console.log(this._reelle + "i" + this._imaginaire);
+    }
+}
+
+let c1 = new Complexe(3, -2);
+console.log("La partie réelle de", c1, "est:", c1.reelle);
diff --git a/src/classe.uxf b/src/classe.uxf
new file mode 100644
index 0000000000000000000000000000000000000000..92e622976d2cc4c1b0d4755c5d1b101dbca6d927
--- /dev/null
+++ b/src/classe.uxf
@@ -0,0 +1,9 @@
+<diagram program="umletino" version="15.1"><zoom_level>10</zoom_level><help_text></help_text><element><id>UMLClass</id><coordinates><x>280</x><y>150</y><w>280</w><h>130</h></coordinates><panel_attributes>Ampoule
+--
+couleur: number
+puissance: number
+--
+Ampoule(couleur: number, puissance: number)
+allumer(): void
+éteindre(): void
+getCouleur(): number</panel_attributes><additional_attributes></additional_attributes></element></diagram>
\ No newline at end of file