Pharo is a very good OOP environment based on Smalltalk.
The differences between this OOP and Dok should be:
- in Pharo the logic in inside a method of an object, while in Dok it is in the same place, in a navigation of an AG data structure
- in Pharo objects collaborate exchanging messages, while in Dok I create paradigm/rich-runtime objects collaborating toghether in various ways
- in Pharo objects are live, while in Dok I use them mainly for representing an high-level and low-level view of code specification and data to process
- Pharo is extensible using reflection at run-time, while Dok code analysis at compile-time