https://gbracha.blogspot.com/2022/06/the-prospect-of-executi...
(the "not mutable state" bit is what makes a function an object for me but that's an ancient debate: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m...)
Can't the author lead in by giving a simple example of both abstract data types and objects (as he understands the terms), in a well-known programming language?
The core of the distinction is well-summarized with this paragraph from page 7:
> This difference is fundamental: abstract data types have a private, protected representation type that prohibits tampering or extension. Objects have behavioral interfaces which allow definition of new implementations at any time.
The other big difference is brought up on page 10 with respect to the "Expression Problem". It is easier to add operations to ADTs than representations, and easier to add representations with objects than operations. Though this pretty clearly relates back to the quote I provided. (And as he notes this has been solved in various ways in various languages and systems over the years; he's discussing this more from a "pure" ADT/object perspective.)