1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Digitale Schaltungen
4    * Volladdierer
5    */
6   public class FullAdder implements Component {
7   
8       // die Teilkomponenten des Volladierers
9       private Component[] comp = new Component[3];
10  
11      // ein Volladierer besteht aus zwei Halbaddiern und einem OR-Gatter
12      private HalfAdder ha1;
13      private HalfAdder ha2;
14      private Gate or;
15  
16      public FullAdder(Signal x, Signal y, Signal cIn) {
17  
18          // Aufbau des Volladdierers aus Teilkomponenten
19          ha1  = new HalfAdder(x, y);                     // Half Adder 1
20          ha2  = new HalfAdder(ha1.getSum(), cIn);        // Half Adder 2
21          or   = new Or(ha1.getCarry(), ha2.getCarry());  // OR
22  
23          // Halbaddierer und Gatter sind Component-Objekte
24          comp[0] = ha1;
25          comp[1] = ha2;
26          comp[2] = or;
27      }
28  
29      // Durchführung der Operationen aller Komponenten, in dieser Reihenfolge
30      public void operate() {
31          for (int i=0; i<comp.length; i++) 
32              comp[i].operate();
33      }
34  
35      // Ausgang Summe des Volladdierers
36      public Signal getSum() {
37          return ha2.getSum();
38      }
39  
40      // Ausgang Übertrag des Volladdierers
41      public Signal getCarryOut() {
42          return or.out();
43      }
44  
45  }
46