1   /**
2    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3    * Digitale Schaltungen
4    * Zusammengesetzte Komponente
5    * Eine zusammengesetzte Komponenten ist eine Komponente, die aus 
6    * Teilkomponenten besteht.
7    */
8   public abstract class CompoundComponent implements Component {
9   
10      private Component[] comp;       // die einzelnen Teilkomponenten
11  
12      static int n;                   // Anzahl der CompoundComponent-Objekte 
13                                      // (ohne Objekte von Unterklassen)
14      private int i;                  // zählt die Teilkomponenten, die hinzugefügt werden
15                                      // (in Unterklassen nicht benötigt)
16      public abstract int size();     // Anzahl der Teilkomponenten (in Unterklassen definiert)
17  
18      // Konstruktor (in Unterklassen aufgerufen)
19      public CompoundComponent() {
20          comp = new Component[size()];
21          n++;     // Zählen der Instanzen von CompoundComponent
22      }
23  
24      // Hinzufügen einer Komponente
25      void addComponent(Component c) {
26          comp[this.i++] = c;
27      }
28  
29      // Zugriff auf eine Komponente
30      Component getComponent(int i) {
31          return comp[i];
32      }
33  
34      // Zusammengesetzte Komponente schaltet = 
35      // Ausführung  der Operationen der Teilkomponenten
36      public void operate() {
37          for (int i=0; i<comp.length; i++) 
38              comp[i].operate();
39  
40          // for (Component c : comp)
41          //  c.operate();
42      }
43  
44  }
45