diff --git a/src/tpQU/tp05/Element.java b/src/tpQU/tp05/Element.java new file mode 100644 index 0000000000000000000000000000000000000000..a6f8bdb139eee2ec9d6c0c5ffea4b384ca479a13 --- /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 0000000000000000000000000000000000000000..91651a462610045711647cefa80617961fa588e5 --- /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 8b8dcf50fefd708141f900032285ee18c1bc28b8..e1dfe19b09927fc500b1a9beef4417aef30a0db3 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 0000000000000000000000000000000000000000..bcdc9ed4bdd7c62f2ae1e0a82bedfc8a4f82fb93 --- /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 0000000000000000000000000000000000000000..6bc460c6a46eee91398b94f89f69a976306ba6a7 --- /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); + + } + +}