| Home | Next |
|
|
|
|
Algorithms Utilities Containers |
drasys.or
drasys.or.alg drasys.or.util drasys.or.cont |
|
Linear Programming I/O Utilities |
drasys.or.mp
drasys.or.mp.lp drasys.or.mp.util |
|
Shortest Path Coloring Traveling Salesman Problem Vehicle Routing Problem TimeWindows |
drasys.or.graph
drasys.or.graph.sp drasys.or.graph.color drasys.or.graph.tsp drasys.or.graph.vrp drasys.or.graph.tw |
|
Complex |
drasys.or.matrix
drasys.or.matrix.complex |
|
Blas Algebra |
drasys.or.linear
drasys.or.linear.blas drasys.or.linear.algebra |
|
|
drasys.or.nonlinear |
|
|
drasys.or.prob |
|
Regression/GLM |
drasys.or.stat
drasys.or.stat.model |
|
Geographic Rectangular-2 Rectangular-3 Projections |
drasys.or.geom
drasys.or.geom.geo drasys.or.geom.rect2 drasys.or.geom.rect3 drasys.or.geom.geo.proj |
Two Roles
It was realized from the start that for OR-Objects to be accepted it
had to be immediately useable and at the same time provide the depth and
flexibility required for advanced applications. OR-Objects can be put to
use immediately because all of the components are complete and the options
default to values that work in most cases with no changes. Many classes
can be used after learning only a few features.
Flexibility
OR-Objects provides depth and flexibility through the extensive use
of interfaces to abstract algorithms and data structures. All algorithms
use only these interfaces when accessing internal objects and this allows
developers to substitute an object that provides new functionality. One
example of an abstracted data structure is the PriorityQueueI interface
which abstracts the features of a priority queue, the BinaryHeap
class is one implementation. An example of an algorithm interface is SingleVertexI
which abstracts the features of a single vertex shortest path algorithm,
the Dijkstra class is one implementation of it.
Extensibility
Another way OR-Objects uses interfaces to achieve flexibility is by
accessing user objects only through intermediate objects that are
user definable. This allows developers to extend the data types that an
algorithm uses by developing a specialized object for the operation. An
example of this can be seen in the heap implementations where the CompareI
interface is used to compare two priority objects. The default comparison
object is CompareNumber but a developer can select another OR-Objects comparison
or develop their own.
![]() |
|
![]() |