DLP -- introduces logic into object orientation

E


  • DLP = LP + OO + ||

Design principles -- support for knowledge-intensive applications

  • objects -- dynamic states
  • processes -- communication by rendezvous
  • distributed backtracking -- exhaustive search

slide: The language DLP


Objects -- a labeled set of clauses

DLP



  object name {
  var variables.
  
  constructor clauses
  method clauses
  }
  

slide: DLP -- terminology


Expressions -- terms

Prolog


Unification -- bi-directional parameter passing


slide: DLP -- expressions


Prolog


  p(X,Y) :- r(Z), b(X). // clauses
  p(X,Y) :- q(Y), b(X).
  b(X) :- a(X).
  b(0).  // facts
  a(1).
  q(2).
  

Query


  ?- p(X,Y). // results in (X = 1,Y = 2)
              // and (X = 0, Y = 2)  
  

slide: DLP -- control (1)


List processing -- backtracking


  member(X,[X|_]).
  member(X,[_|T]) :- member(X,T).
  
  append([],L,L).
  append([ H | T ],L,[ H | R ]):- append(T,L,R).
  

slide: DLP -- control (2)


Additional statements

DLP



slide: DLP -- objects (1)


Computation model -- distributed logic

objects -- state + methods
processes -- to evaluate goals
communication -- backtrackable rendezvous


slide: DLP -- objects (2)


Object


  object travel { 
travel
var cities = [amsterdam, paris, london]. travel() :- accept( all ), travel(). reachable(X) :- member(X, cities). add(X) :- append( cities, [X], R), cities := R. }

Usage


   ?- O = new travel(), O!reachable(X), write(X).
  

slide: DLP -- objects (3)


Inheritance


  object agency : travel { 
agency
agency() :- accept( any ), agency(). book(X,Y) :- reachable(X), price(X,Y). price(amsterdam,5). ... }

slide: DLP -- inheritance


Techniques -- logic


slide: DLP -- technology


The language DLP

E



slide: DLP -- summary