In Chapter 2, Thesis, we saw that the core benefits of OOP can be achieved with a small number of considerations:
- Objects are independent programs, ignorant of context to the largest possible extent
- Objects communicate by sending messages
- Objects behave in ways described in contracts expressing their responses to messages
- Objects can be written, changed, inspected, and adapted in context
There is no system currently available that supports all of these requirements simultaneously. Ironically, while OOP has become overcomplicated, as demonstrated in Chapter 1, Antithesis, it has also remained incomplete. In the final part of this book, let's consider what such a system would look like.