1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Halbaddierer mit Array von Gattern
4    */
5   public class HalfAdderV2 {
6       public static void main(String[] args) {
7   
8           // Eingänge des Halbadierers: (Pseudo-) Gatter ohne Operation
9           Gate x  = new Gate();
10          Gate y  = new Gate();       
11      
12          // ein Halbadierer besteht aus 6 Gattern
13          Gate[] gate = new Gate[6];
14      
15          // Aufbau des Halbadierers aus den Gattern
16          gate[0] = new Gate("NOT", x);               // NOT x
17          gate[1] = new Gate("NOT", y);               // NOT y
18          gate[2] = new Gate(gate[0], "AND", y);      // (NOT x) AND y
19          gate[3] = new Gate(x, "AND", gate[1]);      // x and (NOT y)
20          gate[4] = new Gate(gate[2], "OR", gate[3]); // s = ((NOT x) AND y) OR (x and (NOT y))
21          gate[5] = new Gate(x, "AND", y);            // c = x AND y
22          
23          // Belegung der Eingänge
24          x.setValue(true);
25          y.setValue(false);
26      
27          // Halbadierer schaltet: Durchführung der Operationen aller Gatter (Reihenfolge!)
28          for (int i=0; i<gate.length; i++) 
29              gate[i].operate();
30      
31          // Ergebnis
32          boolean s = gate[4].getValue();             // sum 
33          boolean c = gate[5].getValue();             // carry 
34      
35          System.out.println("sum   = " + s);
36          System.out.println("carry = " + c);
37  
38      }
39  
40  }
41