To really understand OO
People should look at Eiffel:
https://www.eiffel.com
and read any of Bertrand Meyer's writings:
http://www.amazon.com/s/ref=nb_sb_ss_c_0_11?url=search-alias%3Dstripbooks&field-keywords=bertrand+meyer&sprefix=bertrand+me%2Caps%2C864
especially Object-Oriented Software Construction:
http://www.amazon.com/Object-Oriented-Software-Construction-Book-CD-ROM/dp/0136291554/ref=sr_1_3?s=books&ie=UTF8&qid=1430269534&sr=1-3&keywords=bertrand+meyer
Your mastery of software development will improve out of sight.
Of course for functional (reactive) programming you should look at Haskell.