1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Halbaddierer-Klasse 
4    */
5   public class HalfAdderComponent {
6   
7       // ein Halbadierer besteht aus 6 Gattern
8       private Gate[] gate = new Gate[6];
9   
10      public HalfAdderComponent(Gate x, Gate y) {
11  
12          // Aufbau des Halbadierers aus den Gattern
13          gate[0] = new Gate("NOT", x);               // NOT x
14          gate[1] = new Gate("NOT", y);               // NOT y
15          gate[2] = new Gate(gate[0], "AND", y);      // (NOT x) AND y
16          gate[3] = new Gate(x, "AND", gate[1]);      // x and (NOT y)
17          gate[4] = new Gate(gate[2], "OR", gate[3]); // s = ((NOT x) AND y) OR (x and (NOT y))
18          gate[5] = new Gate(x, "AND", y);            // c = x AND y  
19      }
20  
21      // Halbadierer schaltet: Durchführung der Operationen aller Gatter (Reihenfolge!)
22      public void operate() {
23          for (int i=0; i<gate.length; i++) 
24              gate[i].operate();
25      }
26  
27      // sum-Ausgang
28      public Gate getSum() {
29          return gate[4];
30      }
31  
32      // carry-Ausgang
33      public Gate getCarry() {
34          return gate[5];
35      }
36  
37  }
38