\section{Conclusion}

In this paper we have demonstrated, using several programming
examples adapted from real-world applications, that significant
benefits of object-oriented software methodology can be achieved
through simple extension of a purely functional programming language.
Our approach using ObjectSisal also provides a more
effective way of addressing issues arising in
programming for parallel and distributed systems. In ObjectSisal,
parallelism is exposed naturally and without introduction of
mechanisms that interfere with support for the principles of
modular software construction. Objects having ``state'' are
represented using functions that process streams of values,
and {\em nondeterminate} behavior is limited to programs that
use the nondeterminate merge operation to assign an order to
transaction requests.

We have noted in the course of this presentation that the full
benefit of using ObjectSisal in software engineering depends
on the exploitation of fine-grain concurrency by a target
distributed computing system. The characteristics of such
{\em multithreaded} computer systems have been discussed by Dennis
and Gao~\cite{DennisGao92,DennisGao95} and a process for
static analysis and mapping of stream-based programs has been
discussed in~\cite{Dennis95b}.
