Actually the optional piece where he went through a derivation of OOP at the end of the Scheme portion was also one of the most helpful things for me.
The only difficult part was some of the implementation. Function calls on "self" took a while to get used to.
http://www.rollingstone.com/culture/news/steve-jobs-in-1994-...
While it's not explicitly an OO tutorial it was really helpful for me, coming from a web development background, to better understand how ideas like inheritance play out in a real application. Seaside is a component-based framework, so ideas like instances and subclassing objects with different features were very concrete. On top of that, when viewing the site in your browser in dev mode you can click on any component and explore its state.
Of course one also has to pick up Smalltalk for this to work out, so it does require a particular commitment! But Smalltalk itself is a great way to learn OO, as it's based entirely around objects and messages, using a very simple syntax. Even if other OO languages don't fully adhere to this idea, it's still helpful when moving on to other ones. A great way to learn Smalltalk is Pharo by Example. http://pharobyexample.org/ Actually, one could just use this on its own to learn OO. But playing with Seaside was a lot of fun!
Otherwise, I found the OO portion of Learn Python the Hard Way to be quite good, and that's probably the better choice for pretty much everyone. :)
I'm trying to teach a friend of mine web-development, but she struggles with OOP. Also I teached programming at a company I worked last year and all the trainees had problems with OOP.
Somehow the basics of OOP came to myself rather easy. I only had problems with the applied stuff, because all tutorials about OOP where with animals and cars.
The people I try to teach mostly have problems with the basic concepts.