From b13954d72f7a65a711b210879299de335654e3f0 Mon Sep 17 00:00:00 2001 From: Ethan Robert <ethan.rbrt90@gmail.com> Date: Mon, 2 Jun 2025 10:31:27 +0200 Subject: [PATCH] tpQU-05::exo-machine --- src/tpQU/tp05/Element.java | 50 ++++++++++++++++++++++++++++++++ src/tpQU/tp05/Machine.java | 9 ++++++ src/tpQU/tp05/NumberFactory.java | 6 +++- src/tpQU/tp05/Piece.java | 15 ++++++++++ src/tpQU/tp05/UseStock.java | 29 ++++++++++++++++++ 5 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 src/tpQU/tp05/Element.java create mode 100644 src/tpQU/tp05/Machine.java create mode 100644 src/tpQU/tp05/Piece.java create mode 100644 src/tpQU/tp05/UseStock.java diff --git a/src/tpQU/tp05/Element.java b/src/tpQU/tp05/Element.java new file mode 100644 index 0000000..a6f8bdb --- /dev/null +++ b/src/tpQU/tp05/Element.java @@ -0,0 +1,50 @@ +package tpQU.tp05; + +import java.util.ArrayList; +import java.util.Collection; + +public class Element { + + protected ArrayList<Element> components; + protected String label; + + public Element(String label) { + this.label = label; + this.components = new ArrayList<>(); + } + + public void addComponent(Element e) { + this.components.add(e); + } + + public Element removeComponent(int i) { + return this.components.remove(i); + } + + public boolean removeComponent(Element e) { + return this.components.remove((Object) e); + } + + public String toString() { + return toStringHelper(0); + } + + private String toStringHelper(int indentLevel) { + String indent = "\t".repeat(indentLevel); + String result = indent + this.label; + + // Si c'est une pièce, on ajoute son numéro + if (this instanceof Piece) { + result += "(N." + ((Piece) this).getReference() + ")\n"; + } else { + result += ":\n"; + // Sinon on parcourt ses composants + for (Element elt : components) { + result += elt.toStringHelper(indentLevel + 1); + } + } + + return result; + } + +} diff --git a/src/tpQU/tp05/Machine.java b/src/tpQU/tp05/Machine.java new file mode 100644 index 0000000..91651a4 --- /dev/null +++ b/src/tpQU/tp05/Machine.java @@ -0,0 +1,9 @@ +package tpQU.tp05; + +public class Machine extends Element { + + public Machine(String label) { + super(label); + } + +} diff --git a/src/tpQU/tp05/NumberFactory.java b/src/tpQU/tp05/NumberFactory.java index 8b8dcf5..e1dfe19 100644 --- a/src/tpQU/tp05/NumberFactory.java +++ b/src/tpQU/tp05/NumberFactory.java @@ -23,7 +23,11 @@ public class NumberFactory { } public static Number number(String n) throws NumberFormatException { - return NumberFactory.number(Double.parseDouble(n)); + try { + return NumberFactory.number(Integer.parseInt(n)); + } catch (NumberFormatException e) { + return NumberFactory.number(Double.parseDouble(n)); + } } } diff --git a/src/tpQU/tp05/Piece.java b/src/tpQU/tp05/Piece.java new file mode 100644 index 0000000..bcdc9ed --- /dev/null +++ b/src/tpQU/tp05/Piece.java @@ -0,0 +1,15 @@ +package tpQU.tp05; + +public class Piece extends Element { + + private int reference; + + public Piece (String label, int reference) { + super(label); + this.reference = reference; + } + + public int getReference() { + return this.reference; + } +} diff --git a/src/tpQU/tp05/UseStock.java b/src/tpQU/tp05/UseStock.java new file mode 100644 index 0000000..6bc460c --- /dev/null +++ b/src/tpQU/tp05/UseStock.java @@ -0,0 +1,29 @@ +package tpQU.tp05; + +public class UseStock { + + public static void main (String[] args) { + + Machine alice = new Machine("Poste d'Alice"); + + alice.addComponent(new Piece("Clavier", 1934)); + alice.addComponent(new Piece("Écran", 1340)); + alice.addComponent(new Piece("Souris", 2805)); + + Element uc = new Element("Unité centrale"); + uc.addComponent(new Piece("Carte mère", 1569)); + uc.addComponent(new Piece("Extension Mémoire", 289)); + uc.addComponent(new Piece("Disque SCSI", 299)); + + Element gpu = new Element("Carte graphique"); + gpu.addComponent(new Piece("Extension mémoire", 2879)); + gpu.addComponent(new Piece("Processeur graphique", 7289)); + + uc.addComponent(gpu); + alice.addComponent(uc); + + System.out.println(alice); + + } + +} -- GitLab