1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Digitale Schaltungen
4    * VollAddierer als CompoundComponent: operate() wird 
5    * von CompoundComponent geerbt
6    */
7   public class FullAdder extends CompoundComponent {
8   
9       // keine Instanvariablen; comp von CompoundComponent vererbt
10  
11      public FullAdder(Signal x, Signal y, Signal cIn) {
12  
13          super();
14  
15          // Aufbau des Volladdierers aus Teilkomponenten
16          HalfAdder ha1  = new HalfAdder(x, y);                     // Half Adder 1
17          HalfAdder ha2  = new HalfAdder(ha1.getSum(), cIn);        // Half Adder 2
18          Gate or        = new Or(ha1.getCarry(), ha2.getCarry());  // OR
19  
20          // Hinzufügen der Teilkomponenten
21          addComponent(ha1);
22          addComponent(ha2);
23          addComponent(or);
24      }
25  
26      // Ausgang Summe des Volladdierers
27      public Signal getSum() {
28          return ((HalfAdder)getComponent(1)).getSum();
29      }
30  
31      // Ausgang Übertrag des Volladdierers
32      public Signal getCarryOut() {
33          return ((Gate)getComponent(2)).out();
34      }
35  
36      // Volladdierer besteht aus 3 Teilkomponenten
37      public int size() {
38          return 3;
39      }
40  
41  }
42