Next: 2.3 Structures of the
Up: 2. The Algorithm Library
Previous: 2.1 Object-Oriented Programming
2.2 Design of the Algorithm Library
The core concept of the Algorithm Library is to abstract algorithms and their associated
data by appropriate MDL classes. Generally speaking an MDL class is a
C++ class derived from the central Algorithm Library class Model which
provides all functionality needed for the management of the MDL class by the
Algorithm Library. Whenever a program needs to evaluate a certain algorithm, it requests
a reference to an instance of a matching MDL class from the Algorithm Library and
executes its virtual methods. Data values are exchanged between the MDL
class and the program by using parameters which are abstractions of
these values generated by inheriting and specializing the Parameter
C++ template class. Sets of parameters are summarized by using
Interface classes.
The Algorithm Library is designed to support the complete cycle of design,
implementation, and modification of applications. This results in a set of
distinct interfaces for each of the applications:
- application design: An important step within the design of a new
application is the decision which algorithms should be implemented by
utilizing the Algorithm Library. The Algorithm Library contains a C++ interface to
introduce new parent Model classes describing the concepts common
to a specific type of algorithms or at least classifying these algorithms
for later runtime type checks.
- implementation: For the actual implementation of the application
new Model classes are sub-classed from the above mentioned basic
Model classes to implement the required algorithms. For the
management of Model and Parameter class instances, and all
other functionality of the Algorithm Library a corresponding C++ interface is
provided. Basic features of the Algorithm Library like parsing MDL files,
requesting and evaluating MDL classes can be addressed by an
additional C interface which can also be used by applications written
in FORTRAN, LISP or other languages for which a C binding
exists.
- modification: For users intending to modify or extend the
behavior of certain algorithms the Algorithm Library supplies an interpreter for
the object-oriented interpreter language MDL, which allows for the
implementation of new MDL classes without having to change or
recompile the source code of the application. While the MDL
interpreter is intended mainly for the development and testing of new
MDL classes, the Algorithm Library contains an additional compiler for MDL,
which generates in conjunction with the VMAKE [62] CASE
tool dynamically loadable modules containing native code for the used
CPU.
Next: 2.3 Structures of the
Up: 2. The Algorithm Library
Previous: 2.1 Object-Oriented Programming
Robert Mlekus
1999-11-14