Research Article

Practical Benefits of Aspect-Oriented Programming Paradigm in Discrete Event Simulation

Algorithm 1

Resulting boiler class (with tangled code) [5].
extends HeatPropagator  {                                                                                    protect double generateHeat〈〉  {
                                                                                                                                                                    synchronized  (qroomslook) {
// instance variables                                                                                                    vector valves;
private double qT;                                                                                                                 
private double qrooms;                                                                                                         for (Enumeration e − heaters.elements〈〉;
private Vector heaters;                                                                                                              
                                                                                                                                                                                    Heater heater − (Heater) (e.nextElement〈〉);
private object qroomslook = new object [0] ;                                                                        
                                                                                                                                                                                     valves.add(h.getValve〈〉);
// Instance methods                                                                                                       
public void requestHeat(double q,vector h) {                                    
       synchronized (qroomsLock) {                                                                                           double q;
              qrooms = qrooms + q;                                                                                              q = MathPackage.RungeKutta(qi,  qrooms,  qT,  …);
                                                                                                                                                                  
              heaters.addAll(h);                                                                                                       for (Enumeration e = heaters.elements 〈〉;
      }                                                                                                                                                                             
}                                                                                                                                                                             Heater heater − (Heater) (e.nextElement〈〉);
protected propagate〈〉  {                                                                                                                 
       qT   this.generateHeat〈〉;                                                                                                  h.setValve(valves.elementAt(1));
       next.addHeat(qT);                                                                                                               
}                                                                                                                                                                         return (q);
protected double transferredHeat〈〉  {                                                   }
       synchronized (qlock) {                                                                                          }
                                                                                                                                          }  // End Boilar
      }
}
Bold  code corresponds to tangled code due to concurrency aspects.
Underlined  code  corresponds to tangled code  due to mathematical aspects.