This is the preliminary class diagram for the UDM platform. The main goals in my mind in how this should be constructed is to make the structure as flat as possible, while still allowing it to be flexible to future changes and added complexity. This builds off the approach of Processing to create lean coding environments that are easily accessible to designers.
As the UDM is envisioned as a pedagogical tool as much as a design tool, its structure is intended as an introduction to basic Object Oriented programming (and design) paradigms. Key principles, such as inheritance, composition, “encapsulating what changes”, etc. are viewed as both as a way to ensure code reuseability and reconfigurability, as well as teaching tool for introducing and developing Object Oriented Design as an urban strategy – i.e. “Object Oriented Urbanism.” A key point of encapsulation includes the state objects, which define object behaviors, and ensure that any behavior can be reused, replaced and/or overlapped.
The UDM will be built with GeoTools library, which provides geometry types and the full functionality of a GIS platform.