UML Designs

Introduction

The following pages contain the UML designs for the Qoole-AID application. Presently, many of these designs are in their early stages and do not show any generalization or associations. These pages will be updated as the design evolves and as time permits.

Much of the design for the underlying application classes are being done first. These play a crucial roll in ensuring the the required base functionality is preset before the majority of development begins. This will let current Qoole-AID developers and new ones who come on board a complete visual scope of what to expect during the development process. This also allows developers to prepare and understand how certain object types behave and interact with the rest of the system even though those object types may not be implemented.

Keep in mind that some of the object types described on these pages are probably categorized incorrectly. As the design matures and the full functionality, dependencies, and usage of those types are realized, the ability to categorize and prioritize those items will become clearer.

 

Documentation

Due to the fact that Microsoft Modeler is somewhat brain dead, I have decided not to place the documentation inside of the UML diagrams. All Design and SDK documentation will be generated by source code and external files by Doxygen. This will allow the documentation to be distributed in a variety of formats as well as maintain them close to the method and attribute definitions in the source.

 

Utility and Interface definitions

The utility and interface definitions encompass a wide range of functionality that is required for the system to be developed. They describe a good deal of the object types required to begin development. Most of these types will become a high priority for without their existence, development of much of the application will not be possible.

  • Functors
    • CUnaryFunctor<_A, _R>
    • CUnaryFunctorPointer<_T, _R>
    • CBinaryFunctor<_A1, _A2, _R>
    • CBinaryFunctorPointer<_A1, _A2, _R>
    • CTrueFunctor<_T>
    • CFalseFunctor<_T>
  • Lists
    • CGenericList
    • CGenericNode
    • CList<_T>
    • CList<_T>::CNode
    • CList<_T>::Iterator
  • Math and Geometry
    • CVector
    • CSphereVector
    • CTransSpace
    • CPolygon
    • CEdge
    • CRay
    • CPlane
    • CMatrix

 

Base Functionality

Object types containing crucial implementations which provide various functionality to the application call under the base functionality category. Items such as the plug-in manager, base context objects (mesh, patch, etc.), windows, etc. usually fall under this category. These are all primary components of the application.

  • Application
    • CApp
    • CQAIDMainFrame
    • CQAIDDoc
    • CQAIDFrame
    • CQAIDSplitterView
  • Plug-in Manager
    • CPluginManager
    • CPlugin
    • CPluginNode
    • CPluginNodeList
    • CPluginInfo
    • CPluginInfoList
  • Context Objects
    • CCtxObject
    • CMeshCtxObject
    • CPatchCtxObject
    • CEventCtxObject