Complexity means how hard a software system is to understand, not how many computational resources it consumes. It is relative: comparing two systems can reveal which is simpler. section 1.2 section 1.3
Traditional object-oriented designs can increase complexity when they:
- Mix code and data, causing classes to participate in many relationships. section 1.2
- Keep objects mutable, making behavior harder to predict and requiring synchronization in multithreaded environments. section 1.3
- Lock data into objects and behavior into classes, complicating serialization and class hierarchies. section 1.2
Table 1.1 Aspects of OOP and their impact on system complexity (view table figure)
| Explicit synchronization is required on multi-threaded environments. |
|
Compare common object-oriented design choices with their effects on understanding, synchronization, serialization, and hierarchy complexity. section 1.2












