Anatomy of an actor


/** Javadoc comment for the actor class. */
public class ActorClassName
    extends BaseClass
    implements MarkerInterface {

  /** Javadoc comment for constructor. */
  public ActorClassName(CompositeEntity container, String name) throws
      NameDuplicationException, IllegalActionException {
    super(container, name);

// Create and configure ports, e.g. ...
    portName = new TypedIOPort(this, " portName ", true, false);

// Create and configure parameters, e.g. ...
    parameterName = new Parameter(this, " parameterName ");
    parameterName.setTypeEquals(BaseType.DOUBLE);
  }

///////////////////////////////////////////////////////////////////
//// ports and parameters ////

  /** Javadoc comment for port. */
  public TypedIOPort portName;

  /** Javadoc comment for parameter. */
  public Parameter parameterName;

///////////////////////////////////////////////////////////////////
//// public methods ////

  /** Javadoc comment for fire method. */
  public void fire() {
    super.fire();
    ...read inputs and produce outputs...
  }

  /** Javadoc comment for initialize method. */
  public void initialize() {
    super.initialize();
    ...initialize local variables...
  }

  /** Javadoc comment for prefire method. */
  public boolean prefire() {
    ...determine whether firing should proceed and return false if not...
    return super.prefire();
  }

  /** Javadoc comment for preinitialize method. */
  public void preinitialize() {
    super.preinitialize();
    ...set port types and / or scheduling information...
  }

  /** Javadoc comment for postfire method. */
  public boolean postfire() {
    ...update persistent state...
    ...determine whether firing should continue to next iteration and
      return false if not...
    return super.postfire();
  }

  /** Javadoc comment for wrapup method. */
  public void wrapup() {
    super.wrapup();
    ...display final results...
  }
}