exo6: add constructor and some sanity checks to Chiffre and Variable
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 13 Apr 2018 09:49:02 +0000 (11:49 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 13 Apr 2018 09:49:02 +0000 (11:49 +0200)
classes.

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
exo6/Chiffre.java
exo6/Expression.java
exo6/Makefile
exo6/NotCharacterException.java [new file with mode: 0644]
exo6/Opdiv.java
exo6/Opminus.java
exo6/Opmulti.java
exo6/Opplus.java
exo6/Parenthese.java
exo6/Variable.java
exo6/design_arithmetic.uxf

index 1a0c3cbb2ba121256f075713637274a1fcf54092..be6f8816b2900b6ec765d8c1031cf2409955346b 100644 (file)
@@ -1,7 +1,20 @@
 
 class Chiffre extends Facteur {
 
 class Chiffre extends Facteur {
+    Character c;
 
 
-    public boolean evaluer() {
-        return true;
+    Chiffre(Character c) throws NotCharacterException {
+        //TODO?: remove extragenous whitespace
+        if (Character.isLetterOrDigit(c)) {
+            this.c = c;
+        } else {
+            throw new NotCharacterException(c + " is not a character type");
+        }
+    }
+
+    private boolean isChiffre() {
+        return Character.isDigit(c);
+    }
+    public double evaluer() {
+        return 0.0;
     }
 }
     }
 }
index d89d26a38a343cb36250111724f39dacafcf19ae..dc8a85587212b2ed1715b17a9249b297b7ce29ef 100644 (file)
@@ -1,5 +1,5 @@
 
 public abstract class Expression {
 
 public abstract class Expression {
-    
-    abstract boolean evaluer();
+
+    abstract double evaluer();
 }
 }
index 06d4e734ccf9f76e44f02853d85ce2645550b2e2..d8399cfe08060f71ffa06f52d1f2cf7da31fe508 100644 (file)
@@ -46,6 +46,7 @@ JVM = java
 # NAME = Camilo        Juan
 
 CLASSES = \
 # NAME = Camilo        Juan
 
 CLASSES = \
+               NotCharacterException.java \
                Expression.java \
                Terme.java \
                Opadd.java \
                Expression.java \
                Terme.java \
                Opadd.java \
diff --git a/exo6/NotCharacterException.java b/exo6/NotCharacterException.java
new file mode 100644 (file)
index 0000000..1f9b80c
--- /dev/null
@@ -0,0 +1,24 @@
+
+public class NotCharacterException extends Exception {
+
+    public NotCharacterException() {
+        super();
+        // TODO Auto-generated constructor stub
+    }
+
+    public NotCharacterException(String message) {
+        super(message);
+        // TODO Auto-generated constructor stub
+    }
+
+    public NotCharacterException(Throwable cause) {
+        super(cause);
+        // TODO Auto-generated constructor stub
+    }
+
+    public NotCharacterException(String message, Throwable cause) {
+        super(message, cause);
+        // TODO Auto-generated constructor stub
+    }
+
+}
index 6ac4715ac50118c515db27a6a0d4c3f3543c7ebe..99a38838cbe463b7ef03c50c43b08c176c01aecb 100644 (file)
@@ -1,7 +1,7 @@
 
 class Opdiv extends Opmul {
 
 
 class Opdiv extends Opmul {
 
-    public boolean evaluer() {
-        return true;
+    public double evaluer() {
+        return 0.0;
     }
 }
     }
 }
index c200b746d444ff1799ec1fe4faebffad21e5b69a..d33cd17fb710c3a823cfb72ef8e5393820b228e3 100644 (file)
@@ -1,7 +1,7 @@
 
 class Opminus extends Opadd {
 
 
 class Opminus extends Opadd {
 
-    public boolean evaluer() {
-        return true;
+    public double evaluer() {
+        return 0.0;
     }
 }
     }
 }
index c2bf12a201fa62766d5bcfa0a94cf649a96116d4..596015f42437b9ee325bae1c198d3dd28f8a0632 100644 (file)
@@ -1,7 +1,7 @@
 
 class Opmulti extends Opmul {
 
 
 class Opmulti extends Opmul {
 
-    public boolean evaluer() {
-        return true;
+    public double evaluer() {
+        return 0.0;
     }
 }
     }
 }
index 3049f6000cbd3ff6edfed793cee0779cbab95585..0bd4bfa408a6c971c177e0264b3666fab6f6b54d 100644 (file)
@@ -1,7 +1,7 @@
 
 class Opplus extends Opadd {
 
 
 class Opplus extends Opadd {
 
-    public boolean evaluer() {
-        return true;
-    }    
+    public double evaluer() {
+        return 0.0;
+    }
 }
 }
index 067fcdd8bb2f9f29f4def674f1d885b856d41f5e..2be283bef8256b01f4e9e731ff6ba191ba1a10c3 100644 (file)
@@ -1,7 +1,7 @@
 
 class Parenthese extends Facteur {
 
 
 class Parenthese extends Facteur {
 
-    public boolean evaluer() {
-        return true;
-    }    
+    public double evaluer() {
+        return 0.0;
+    }
 }
 }
index d023c985b72183324cc6fb1e37e342c78c3d535c..30b7830a2b239517fcd0041c973229fe40c304ae 100644 (file)
@@ -1,7 +1,24 @@
+import java.util.TreeMap;
 
 class Variable extends Terme {
 
 class Variable extends Terme {
+    TreeMap<Character, Double> v;
 
 
-    public boolean evaluer() {
-        return true;
+    Variable(Character c) throws NotCharacterException {
+        v = new TreeMap<Character, Double>();
+        //TODO?: remove extragenous whitespace
+        if (Character.isLetterOrDigit(c)) {
+            v.put(c, 0.0); // we suppose the default variable value is 0
+        } else {
+            throw new NotCharacterException(c + " is not a character type");
+        }
+    }
+
+    private boolean isVariable() {
+        //FIXME: this cover more than latin alphabet
+        return Character.isLetter(v.firstKey());
+    }
+
+    public double evaluer() {
+        return 0.0;
     }
 }
     }
 }
index 9cf878c5ba1346d99934b6ce0438fa6ceb9857f7..6e69bb0d494d1b66b0c713ab2c1623c7854a167d 100644 (file)
@@ -8,10 +8,10 @@
       <w>100</w>
       <h>60</h>
     </coordinates>
       <w>100</w>
       <h>60</h>
     </coordinates>
-    <panel_attributes>Expression
+    <panel_attributes>/Expression/
 --
 --
 --
 --
-/+evaluer()/
+/+evaluer():/
 </panel_attributes>
     <additional_attributes/>
   </element>
 </panel_attributes>
     <additional_attributes/>
   </element>
@@ -23,7 +23,7 @@
       <w>100</w>
       <h>30</h>
     </coordinates>
       <w>100</w>
       <h>30</h>
     </coordinates>
-    <panel_attributes>Terme</panel_attributes>
+    <panel_attributes>/Terme/</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <additional_attributes/>
   </element>
   <element>
@@ -34,7 +34,7 @@
       <w>100</w>
       <h>30</h>
     </coordinates>
       <w>100</w>
       <h>30</h>
     </coordinates>
-    <panel_attributes>Op-add</panel_attributes>
+    <panel_attributes>/Op-add/</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <additional_attributes/>
   </element>
   <element>
@@ -45,7 +45,7 @@
       <w>100</w>
       <h>30</h>
     </coordinates>
       <w>100</w>
       <h>30</h>
     </coordinates>
-    <panel_attributes>Facteur</panel_attributes>
+    <panel_attributes>/Facteur/</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <additional_attributes/>
   </element>
   <element>
@@ -70,7 +70,7 @@
       <w>100</w>
       <h>30</h>
     </coordinates>
       <w>100</w>
       <h>30</h>
     </coordinates>
-    <panel_attributes>Op-mul</panel_attributes>
+    <panel_attributes>/Op-mul/</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <additional_attributes/>
   </element>
   <element>