Object oriented Prolog extension

I don't consider this as one of the best papers my name has appeared on....

Object-Oriented Programming in Prolog: Rationale and a Case Study

Fevzi Belli, Oliver Jack and Lee Naish

Logic programming provides an opportunity to formulate and solve problems in a declarative manner. In logic programming languages, problem solving will be performed by describing what has to be done instead of describing how it has to be done as the latter is the case when utilizing procedural programming languages. The declarative way of programming offers a good method for the construction of software, e.g. for knowledge-based systems, database applications etc., because software engineers have then to be much less concerned with procedural aspects of their programs as they use a conventional programming language. Moreover, object-oriented programming as a special programming paradigm provides benefits for software engineering. In object-oriented programming languages, the relevant world to be modelled is considered as a collection of autonomous objects which encapsulate data and procedures. The objects are structured hierarchically and can inherit methods, i.e. data and procedures. This enhances the reusability and maintainability of software. Although several attempts have been made to combine both logic programming and object-oriented programming, they have not been so successful.

In this paper, we first specify logic and object-oriented programming by using a certain contamination of pure logic programming which already took place in ``real'' Prolog. We explain this approach by a practical example, deployed in the project FIREX (FIRe avoidance and combat EXpertise) which is described in [Belli89]. Then we develop another approach of object-orientation with ``pure'' Prolog plus negation. We also explain this approach by an example from the FIREX project.