Designing Distributed Objects

HTML-ized slides from a talk on IBM CENET, 1993 by Doug Lea.

Distributed Objects will be Everywhere

Outline

Reference: Object-Oriented System Development by Dennis deChampeaux, Doug Lea, & Penelope Faure. Addison-Wesley, 1993.

OO Models and Distribution

Why Active Objects?

Alternatives

Some differences between active and passive objects

Development Steps

Modeling Active Objects

From Models to Designs

Distribution-friendly Composition

General Design Issues

Some Specific Design Issues

Abstract Classes

class Semaphore
  fn locked: bool init= false;
  op wait: ()     when ~locked then locked' else pend end
  op signal ==>   ~locked' end
end

Concrete Classes

class Chapter 
  locals 
    prev: opt Chapter; next: opt Chapter; text: CharStream;
    op printText: () { Printer$print(text.chars); }
  end
  op printBook { if ~null(prev) then prev.printBook 
                 else self.printAndPropagate end }
  op printAndPropagate {  printText;
     if ~null(next) then next.printAndPropagate end }
end

Midpoints

class CardEater
  locals 
     beeper: Beeper; 
     own cardLatch: CardLatch; 
  end
  fn holding: bool init= false;
  fn latched: bool init= false;
  op unlatch ==> ~latched' end
  op latch   ==>  latched' end
  op eject when ~latched /\ holding then 
              cardLatch.release', ~holding'
           elsewhen ~latched /\ ~holding then beeper.beep'
           else pend end
end

Asynchronous Message Passing

Callbacks

class BeeperTimer
  local delayer: Delayer;
  op alarm(secs: time, b: DelayedBeeper) {
     delayer.delay(secs); b.beep };
end
class DelayedBeeper
  local t: BeeperTimer;
  op beep ... ;
  op beepAfter(secs: time) { t.alarm(secs, self) }
end

Encapsulation

Communication Closure

The Limits of Modularity

Coordination

Object Construction

Clustering Logical Objects into Physical Objects

Adapting to System Infrastructure

Compiling Designs

About this document ...

Designing Distributed Objects

This document was generated using the LaTeX2HTML translator Version 95.1 (Fri Jan 20 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -split 0 cenetslides.tex.

The translation was initiated by Doug Lea on Mon Feb 26 07:24:32 EST 1996


Doug Lea@Mon Feb 26 07:24:32 EST 1996