Object-oriented design of complex systems is hard
Several OO class hierarchies:
- Geo-features in repository (OODBMS)
- Application copies of geo-features in memory
- Visible representations of geo-features on screen
- Operating system & GUI frameworks, e.g. MFC, AWT
- Language toolkits, e.g. STL, ATL, Java library, JavaBeans
Two event architectures:
- WIMP events, programmed events
- OO GIS reflex methods
Notes:
3 solutions: 1. OO Methodology, 2. Meyer 'design by contract', 3. Design patterns.
OO GIS rarely/never provide a seamless interface to persistent programming (as is the aim of generic OODBMSs such as POET or ObjectStore) for good reasons.
STL: C++ Standard Template Library, ATL: Microsoft Active Template Library makes it easier for Visual C++ programmers to write ActiveX components. Java comes with a class library and AWT (abstract windowing kit) + JavaBeans components
A further complication arise because Windows applications in
Visual C++ are constructed by Microsoft Wizards which provide a
great deal of default complexity. The benefit of this complexity
is standardisation: all Visual C++ applications of a particular
type are structured in the same way: this greatly aids
maintenance and extensibility, but makes for a steep learning
A very good principle is to design class hierarchies as if you are going to do a series of related GIS projects.