This abstract class represents an operaion at complie time.
This implements the IOperation interface,
and it's a parent class for the operation class.
It defines some common properties for all operations,
and defines the get and set methods for each property.
It also provides default implementations for all methods in the interface.