subsections:


Object-oriented language design

  • object: state + operations
  • class: template for object creation
  • inheritance: super/base and subclasses


  object-oriented = 
        objects + classes + inheritance 
  

data abstraction -- state accessible by operations

strong typing -- compile time checking


slide: Object-based versus object-oriented


Orthogonal approach


slide: Orthogonal dimensions


Open systems

  • reactive -- flexible (dynamic) choice of actions
  • modular -- (static) scalability

Dimensions of modularity

  • encapsulation boundary -- interface to client
  • distribution boundary -- visibility from within objects
  • concurrency boundary -- threads per object, synchronization

slide: Dimensions of modularity


Object-based concurrency


slide: Objects and concurrency


sC++



  active class S { 
  public: 
     m () { ... } 
  private: 
     @S () {  // pseudo-constructor
           select { 
              01 -> m(); // external call 
              instructions ...
           || 
              accept m;  // accept internal method
              instructions ... 
           ||
              waituntil (date); // time-out
              instructions ... 
           ||
              default           // default
              instructions ... 
           } 
      } 
  };
  

slide: Synchronization conditions in sC++