alex wrote:
Objective-c is used a lot for robotics.
That is slightly worrying given that it a very dynamic (ie run-time rather than compile-time failure) language - robots can be pretty scarey things!
I have never found a good introduction to object oriented programming. The books that I have read usually have excessively trivial examples that I have a difficult time mapping to real-world programming problems. In practise, I think that the main advantage of OO is that it helps make it very easy to provide good encapsulation, but that re-use through derived classes needs a lot of careful thought up front. [I am very much a bottom-up programmer... I find true top-down design very difficult and prefer iterating on the details of the problem and expanding the work until I have a complete solution - not exactly a textbook approach!]
MacOSX makes very good use of OO design in the GUI system. I strongly recommend Aron Hillegass' "Cocoa Programming for MacOSX" (Amazon web link
here). I learned a lot from working through the book, which is structured as a series of progressive tutorials.
Objective-C as a language is very elegant, especially compared to C++. It has a very neat and simple set of OO extensions to C, derived from Smalltalk messaging. I tend to use C++ when I need higher performance (no run-time function selector overheads) and more complete compile-time code validation. I only use Objective-C for Mac specific GUI functions.