Bertrand Meyer's [1] book, Object-Oriented Software Construction [2], mentioned in another comment here, is good, IMO; some people consider it a classic. I had read large parts of it some years ago. He is the creator of the Eiffel programming language [3], which seem really good (I tried it out, some, using EiffelStudio, his company's main product - it also has a GUI libary for creating GUI apps, at least on Windows where I tried it, and can make EXEs, also has a possibly unique notion of freezing and melting, IIRC, related to compilation), though unfortunately Eiffel does not seem to have much adoption (like some other advanced languages).<p>According to the Wikipedia article about him, he also created the idea of Design by Contract [4], involving preconditions, postconditions and invariants, and DbC is built-in to Eiffel. DbC is now supported in many languages or in their libraries.<p>[1] <a href="https://en.wikipedia.org/wiki/Bertrand_Meyer" rel="nofollow">https://en.wikipedia.org/wiki/Bertrand_Meyer</a><p>[2] <a href="https://en.wikipedia.org/wiki/Object-Oriented_Software_Construction" rel="nofollow">https://en.wikipedia.org/wiki/Object-Oriented_Software_Const...</a><p>[3] <a href="https://en.wikipedia.org/wiki/Eiffel_(programming_language)" rel="nofollow">https://en.wikipedia.org/wiki/Eiffel_(programming_language)</a><p>[4] <a href="https://en.wikipedia.org/wiki/Design_by_contract" rel="nofollow">https://en.wikipedia.org/wiki/Design_by_contract</a><p>Scott Ambler's The Object Primer was also good, also read some years ago.<p>IBM developerWorks article by him about the topic:
<a href="https://www.ibm.com/developerworks/library/ws-using-oo/" rel="nofollow">https://www.ibm.com/developerworks/library/ws-using-oo/</a><p>The book:
<a href="https://www.cambridge.org/core/books/the-object-primer/BD0D59A20FFCF1DB1FD2F0E813DC5533" rel="nofollow">https://www.cambridge.org/core/books/the-object-primer/BD0D5...</a><p>Just checked, it is still available, though the page at the link below says there is a newer version (linked on same page):
<a href="http://www.amazon.in/Object-Primer-Application-Developers-Object-Orientation/dp/0132424967" rel="nofollow">http://www.amazon.in/Object-Primer-Application-Developers-Ob...</a><p>Update: Just remembered, when I was checking out Eiffel some years ago, I had read up on success stories about it. One very interesting one was about how HP used it to create a printer driver for a printer, after attempts using another more mainstream language had worked, but the driver had a lot of bugs. IIRC, the article [5] said that with Eiffel, the new version of the driver was created a lot faster, and also had a lot less bugs.<p>[5] Found the article from a Google search:<p><a href="https://archive.eiffel.com/eiffel/projects/hp/creel.html" rel="nofollow">https://archive.eiffel.com/eiffel/projects/hp/creel.html</a>