jtulach@52
|
1 |
/*
|
jtulach@52
|
2 |
* Operation.java
|
jtulach@52
|
3 |
*
|
jtulach@52
|
4 |
* Created on July 12, 2006, 3:06 PM
|
jtulach@52
|
5 |
*
|
jtulach@52
|
6 |
* To change this template, choose Tools | Template Manager
|
jtulach@52
|
7 |
* and open the template in the editor.
|
jtulach@52
|
8 |
*/
|
jtulach@52
|
9 |
|
jtulach@52
|
10 |
package org.netbeans.apifest.boolcircuit;
|
jtulach@52
|
11 |
|
jtulach@52
|
12 |
/**
|
jtulach@52
|
13 |
*
|
jtulach@52
|
14 |
*/
|
jtulach@52
|
15 |
public interface Operation {
|
jtulach@52
|
16 |
public char evaluate (char i1, char i2) throws IllegalArgumentException;
|
jtulach@52
|
17 |
public double evaluate (double i1, double i2) throws IllegalArgumentException;
|
jtulach@52
|
18 |
public final static Operation OR = new Or ();
|
jtulach@52
|
19 |
public final static Operation AND = new And ();
|
jtulach@52
|
20 |
public final static Operation NEG = new Neg ();
|
jtulach@52
|
21 |
|
jtulach@52
|
22 |
|
jtulach@52
|
23 |
static class And implements Operation {
|
jtulach@52
|
24 |
public char evaluate(char i1, char i2) throws IllegalArgumentException {
|
jtulach@52
|
25 |
if (i1 != '0' && i1 != '1') {
|
jtulach@52
|
26 |
throw new IllegalArgumentException ("Invalid input parameter: " + i1);
|
jtulach@52
|
27 |
}
|
jtulach@52
|
28 |
if (i2 != '0' && i2 != '1') {
|
jtulach@52
|
29 |
throw new IllegalArgumentException ("Invalid input parameter: " + i2);
|
jtulach@52
|
30 |
}
|
jtulach@52
|
31 |
return i1 == '1' && i2 == '1' ? '1' : '0';
|
jtulach@52
|
32 |
}
|
jtulach@52
|
33 |
|
jtulach@52
|
34 |
public double evaluate(double i1, double i2) throws IllegalArgumentException {
|
jtulach@52
|
35 |
if (i1 < 0 || i1 > 1) {
|
jtulach@52
|
36 |
throw new IllegalArgumentException ("Invalid input parameter: " + i1);
|
jtulach@52
|
37 |
}
|
jtulach@52
|
38 |
if (i2 < 0 || i2 > 1) {
|
jtulach@52
|
39 |
throw new IllegalArgumentException ("Invalid input parameter: " + i2);
|
jtulach@52
|
40 |
}
|
jtulach@52
|
41 |
return i1 * i2;
|
jtulach@52
|
42 |
}
|
jtulach@52
|
43 |
}
|
jtulach@52
|
44 |
static class Or implements Operation {
|
jtulach@52
|
45 |
public char evaluate(char i1, char i2) throws IllegalArgumentException {
|
jtulach@52
|
46 |
if (i1 != '0' && i1 != '1') {
|
jtulach@52
|
47 |
throw new IllegalArgumentException ("Invalid input parameter: " + i1);
|
jtulach@52
|
48 |
}
|
jtulach@52
|
49 |
if (i2 != '0' && i2 != '1') {
|
jtulach@52
|
50 |
throw new IllegalArgumentException ("Invalid input parameter: " + i2);
|
jtulach@52
|
51 |
}
|
jtulach@52
|
52 |
return i1 == '1' || i2 == '1' ? '1' : '0';
|
jtulach@52
|
53 |
}
|
jtulach@52
|
54 |
|
jtulach@52
|
55 |
public double evaluate(double i1, double i2) throws IllegalArgumentException {
|
jtulach@52
|
56 |
if (i1 < 0 || i1 > 1) {
|
jtulach@52
|
57 |
throw new IllegalArgumentException ("Invalid input parameter: " + i1);
|
jtulach@52
|
58 |
}
|
jtulach@52
|
59 |
if (i2 < 0 || i2 > 1) {
|
jtulach@52
|
60 |
throw new IllegalArgumentException ("Invalid input parameter: " + i2);
|
jtulach@52
|
61 |
}
|
jtulach@52
|
62 |
return 1 - (1 - i1) * (1 - i2);
|
jtulach@52
|
63 |
}
|
jtulach@52
|
64 |
}
|
jtulach@52
|
65 |
static class Neg implements Operation {
|
jtulach@52
|
66 |
public char evaluate(char i1, char i2) throws IllegalArgumentException {
|
jtulach@52
|
67 |
if (i1 != '0' && i1 != '1') {
|
jtulach@52
|
68 |
throw new IllegalArgumentException ("Invalid input parameter: " + i1);
|
jtulach@52
|
69 |
}
|
jtulach@52
|
70 |
return i1 == '1' ? '0' : '1';
|
jtulach@52
|
71 |
}
|
jtulach@52
|
72 |
|
jtulach@52
|
73 |
public double evaluate(double i1, double i2) throws IllegalArgumentException {
|
jtulach@52
|
74 |
if (i1 < 0 || i1 > 1) {
|
jtulach@52
|
75 |
throw new IllegalArgumentException ("Invalid input parameter: " + i1);
|
jtulach@52
|
76 |
}
|
jtulach@52
|
77 |
if (i2 < 0 || i2 > 1) {
|
jtulach@52
|
78 |
throw new IllegalArgumentException ("Invalid input parameter: " + i2);
|
jtulach@52
|
79 |
}
|
jtulach@52
|
80 |
return 1 - i1;
|
jtulach@52
|
81 |
}
|
jtulach@52
|
82 |
}
|
jtulach@52
|
83 |
}
|
jtulach@52
|
84 |
|