aboutsummaryrefslogtreecommitdiff
path: root/semestre 4/java/tme/tp3/Personne.java
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2026-02-16 10:16:31 +0100
committerAnhgelus Morhtuuzh <william@herges.fr>2026-02-16 10:16:31 +0100
commit2c530f2a58014e8e9479c41dabff9a639e9297a5 (patch)
treefe6f6890d983ff436d80e4194abf5545658f51d6 /semestre 4/java/tme/tp3/Personne.java
parentba6692d9b508b448eafd7bc71faa4ae3f3ac7199 (diff)
Cours du 02 au 13 févrierHEADmain
Diffstat (limited to 'semestre 4/java/tme/tp3/Personne.java')
-rw-r--r--semestre 4/java/tme/tp3/Personne.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/semestre 4/java/tme/tp3/Personne.java b/semestre 4/java/tme/tp3/Personne.java
new file mode 100644
index 0000000..664bf60
--- /dev/null
+++ b/semestre 4/java/tme/tp3/Personne.java
@@ -0,0 +1,52 @@
+public class Personne {
+ public final String name;
+ private Personne conjoint;
+
+ public Personne(String n) {
+ name = n;
+ }
+
+ public Personne() {
+ this("Pers" + (char) ((int) (Math.random() * 26) + 'A'));
+ }
+
+ public String toString() {
+ return String.format("%s, %s", name, conjoint == null ? "célibataire" : "marié(e)");
+ }
+
+ public void epouser(Personne p) {
+ if (p.conjoint != null || conjoint != null || p == this) {
+ System.out.println(String.format(
+ "Le mariage de %s avec %s est impossible", this, p
+ ));
+ return;
+ }
+ System.out.println(String.format(
+ "%s se marie avec %s", this, p
+ ));
+ conjoint = p;
+ p.conjoint = this;
+ }
+
+ public void divorcer() {
+ if (conjoint == null) return;
+ System.out.println(String.format(
+ "%s divorce avec %s", this, conjoint
+ ));
+ conjoint.conjoint = null;
+ conjoint = null;
+ }
+
+ public static void main(String[] args) {
+ final var p1 = new Personne();
+ final var p2 = new Personne();
+ final var p3 = new Personne();
+
+ p1.epouser(p2);
+ p1.epouser(p3);
+ p3.epouser(p1);
+ p3.epouser(p3);
+ p1.divorcer();
+ p3.divorcer();
+ }
+}