Dresden OCL Toolkit

Package tudresden.ocl.lib

This package constitutes the OCL Class Library.

See:
          Description

Interface Summary
AllInstancesAdapter This interface allows to make the operation allInstances evaluatable in a specific context.
FeatureListener An interface, listening the access to object attributes and methods by the ocl library.
NameAdapter A case tools code generator may convert names, especially of unnamed association ends.
OclAddable This interface defines the operation add.
OclBooleanEvaluatable Instances of (usually inner) classes implementing this class represent OclExpressions that are parameters to iterating methods.
OclComparable This interface is implemented by classes whose instances can be compared.
OclComparableEvaluatable Instances of (usually inner) classes implementing this class represent OclExpressions that are parameters to iterating methods.
OclFactory A interface defining operations expected of a OCL representation factory class.
OclMultiplyable A interface declaring operations expected of classes that have the * and / operators defined.
OclRoot This interface is implemented by those classes of the library representing Predefined OCL Types, and is therefore the return type of all factory methods in Ocl and OclFactory.
OclRootEvaluatable Instances of (usually inner) classes implementing this class represent OclExpressions that are parameters to iterating methods.
OclSizable An interface defining the operation size that is defined on the OCL Collections and on the type String.
OclStateAdapter This interface must be implemented if OclAnys operation oclInState is used.
OclSubtractable An interface representing the operation - that is defined for the OCL types Set, Real and Integer.
 

Class Summary
ArgoNameAdapter This NameAdapter is suitable for code generated by Argo/UML.
DefaultOclFactory This class is the default implementation of the OclFactory interface.
Ocl This class constitutes the central interface to generating classes in the OCL class library.
OclAny This class represents the part of the OCL type OclAny common to basic types and application types, i.e.
OclAnyImpl This class represents the OCL type OclAny.
OclBag A OclBag is a unordered collection that may contain duplicates.
OclBoolean A class that represents the basic OCL type Boolean.
OclCollection This class is the abstract superclass of the OCL collection classes Set, Bag and Sequence.
OclContainer This class is a implementation of OclRoot that is backed by a "contained" OclRoot object.
OclInteger This class represents the basic OCL type Integer.
OclIterator The OclIterator is needed to transform OCL iterating methods to Java.
OclReal This class represents the OCL basic type Real.
OclSequence A OclSequence is a ordered collection of elements that may contain duplicates.
OclSet A OclSet is a collection that does not contain duplicates.
OclState This class represents the OCL type OclState.
OclString This class represents the basic OCL type String.
OclType This class represents the predefined OCL class OclType and gives access to the meta level of OCL.
OclUnsortedCollection This class is not defined in the OCL specification.
PrefixNameAdapter A implementation of NameAdapter, which handles prefixes on association roles.
SimpleNameAdapter  
 

Exception Summary
OclClassCastException This class is used rather than OclException whenever the error results from a type mismatch that could not be detected by the Java compiler.
OclException A runtime exception thrown to indicate that an error occured during evaluation of the constraint.
 

Package tudresden.ocl.lib Description

This package constitutes the OCL Class Library. The library uses the Java 2 collection framework and therefore cannot be used with JDK 1.1.

Intention

This class library is intended to be used in a OCL to Java generator. The Java source code produced by this utility consists to a large part of calls to this library. A primary goal in the design of the library is therefore to faciliate code generation. This is done be making the generation process as far as possible independent of model information (except, of course, for the OCL expression itself).

To derive Java source code from the OCL expression, all type information has to extracted from the operations of the expression. Some interfaces, like OclSubtractable, were introduced to support this.

The following class diagrams should give a basic idea of the design. The diagrams are produced with the open-source case tool Argo/UML, that was also used for code sceleton generation.

This diagram shows OclRoot, the root interface of the class library, and the classes implementing it directly. All classes of the library that represent predefined OCL types implement OclRoot.


OCL data types are the basic types (above), application-specific types (below) and collection types.


The Collection-Related Types are a central part of OCL predefined classes. The classes that represent them in the class library are shown in the diagram above.

The diagram below shown classes necessary to implement the "iterating methods" (i.e. methods having an OCL expression as argument) of OCL.


The class Ocl provides class methods that access a factory class to generate OCL class library representations for application objects and values (e.g. OclInteger for int, OclAny for application classes, OclSet for application collections). Similar plug-in objects are used to make the library adaptable to a code generators schemes for state diagram representation and to name conversions.


Dresden OCL Toolkit

Submit a bug
Developed at the Dresden University of Technology.
This software is published under the GNU Lesser General Public License.