samples/apifest1/day2/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/Operation.java
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/apifest1/day2/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/Operation.java Sat Jun 14 09:52:45 2008 +0200
1.3 @@ -0,0 +1,84 @@
1.4 +/*
1.5 + * Operation.java
1.6 + *
1.7 + * Created on July 12, 2006, 3:06 PM
1.8 + *
1.9 + * To change this template, choose Tools | Template Manager
1.10 + * and open the template in the editor.
1.11 + */
1.12 +
1.13 +package org.netbeans.apifest.boolcircuit;
1.14 +
1.15 +/**
1.16 + *
1.17 + */
1.18 +public interface Operation {
1.19 + public char evaluate (char i1, char i2) throws IllegalArgumentException;
1.20 + public double evaluate (double i1, double i2) throws IllegalArgumentException;
1.21 + public final static Operation OR = new Or ();
1.22 + public final static Operation AND = new And ();
1.23 + public final static Operation NEG = new Neg ();
1.24 +
1.25 +
1.26 + static class And implements Operation {
1.27 + public char evaluate(char i1, char i2) throws IllegalArgumentException {
1.28 + if (i1 != '0' && i1 != '1') {
1.29 + throw new IllegalArgumentException ("Invalid input parameter: " + i1);
1.30 + }
1.31 + if (i2 != '0' && i2 != '1') {
1.32 + throw new IllegalArgumentException ("Invalid input parameter: " + i2);
1.33 + }
1.34 + return i1 == '1' && i2 == '1' ? '1' : '0';
1.35 + }
1.36 +
1.37 + public double evaluate(double i1, double i2) throws IllegalArgumentException {
1.38 + if (i1 < 0 || i1 > 1) {
1.39 + throw new IllegalArgumentException ("Invalid input parameter: " + i1);
1.40 + }
1.41 + if (i2 < 0 || i2 > 1) {
1.42 + throw new IllegalArgumentException ("Invalid input parameter: " + i2);
1.43 + }
1.44 + return i1 * i2;
1.45 + }
1.46 + }
1.47 + static class Or implements Operation {
1.48 + public char evaluate(char i1, char i2) throws IllegalArgumentException {
1.49 + if (i1 != '0' && i1 != '1') {
1.50 + throw new IllegalArgumentException ("Invalid input parameter: " + i1);
1.51 + }
1.52 + if (i2 != '0' && i2 != '1') {
1.53 + throw new IllegalArgumentException ("Invalid input parameter: " + i2);
1.54 + }
1.55 + return i1 == '1' || i2 == '1' ? '1' : '0';
1.56 + }
1.57 +
1.58 + public double evaluate(double i1, double i2) throws IllegalArgumentException {
1.59 + if (i1 < 0 || i1 > 1) {
1.60 + throw new IllegalArgumentException ("Invalid input parameter: " + i1);
1.61 + }
1.62 + if (i2 < 0 || i2 > 1) {
1.63 + throw new IllegalArgumentException ("Invalid input parameter: " + i2);
1.64 + }
1.65 + return 1 - (1 - i1) * (1 - i2);
1.66 + }
1.67 + }
1.68 + static class Neg implements Operation {
1.69 + public char evaluate(char i1, char i2) throws IllegalArgumentException {
1.70 + if (i1 != '0' && i1 != '1') {
1.71 + throw new IllegalArgumentException ("Invalid input parameter: " + i1);
1.72 + }
1.73 + return i1 == '1' ? '0' : '1';
1.74 + }
1.75 +
1.76 + public double evaluate(double i1, double i2) throws IllegalArgumentException {
1.77 + if (i1 < 0 || i1 > 1) {
1.78 + throw new IllegalArgumentException ("Invalid input parameter: " + i1);
1.79 + }
1.80 + if (i2 < 0 || i2 > 1) {
1.81 + throw new IllegalArgumentException ("Invalid input parameter: " + i2);
1.82 + }
1.83 + return 1 - i1;
1.84 + }
1.85 + }
1.86 +}
1.87 +