1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Digitale Schaltungen
4    * Halbaddierer als CompoundComponent: operate() wird 
5    * von CompoundComponent geerbt
6    */
7   public class HalfAdder extends CompoundComponent {
8   
9       // keine Instanvariablen; comp von CompoundComponent vererbt
10  
11      public HalfAdder(Signal x, Signal y) {
12  
13          super(); 
14  
15          // ein Halbadierer besteht aus 6 Gattern
16          Gate[] gate = new Gate[size()];
17  
18          // Aufbau des Halbadierers aus den Gattern
19          gate[0] = new Not(x);                           // NOT x
20          gate[1] = new Not(y);                           // NOT y
21          gate[2] = new And(gate[0].out(), y);            // (NOT x) AND y
22          gate[3] = new And(x, gate[1].out());            // x and (NOT y)
23          gate[4] = new Or(gate[2].out(), gate[3].out()); // s = ((NOT x) AND y) OR (x and (NOT y))
24          gate[5] = new And(x, y);                        // c = x AND y
25  
26          // Hinzufügen der Gatter
27          for (int i=0; i<gate.length; i++)
28              addComponent(gate[i]); 
29  
30          // for (Gate g : gate)
31          //  addComponent(g); 
32      }
33  
34      // Ausgang Summe des Halbaddierers  
35      public Signal getSum() {
36          return ((Gate)getComponent(4)).out();
37      }
38  
39      // Ausgang Übertrag des Halbaddierers
40      public Signal getCarry() {
41          return ((Gate)getComponent(5)).out();
42      }
43  
44      // Halbaddierer besteht aus 6 Teilkomponenten (Gattern)
45      public int size() {
46          return 6;
47      }
48  
49  }
50