the main topics that one should learn are: * some tidbit of history on why oop * fundamental object oriented concepts: inheritance, encapsulation, and interfaces * network of objects and their restricted interactions
* modeling a domain using objects * documenting objects and their interactions * how are objects represented in memory * SOLID principles * solutions (design patterns) to common problems * concurrent design and thread safety in oop designs * tools in oop design (CRC cards, UML, etc.) * actually making projects and laying out the code in an implementation language.
Here are some books I seem to like so far.
books:
Holger Gast - How to Use Objects: Code and Concepts (https://www.amazon.com/gp/product/0321995546) This book seems to be what I was looking for. It has an integrated practical approach using the Eclipse source code as examples for various object oriented concepts. I have cross-checked various sources and it seems like this book covers all relevant concepts including SOLID principles.
Bertrand Meyer - Object-Oriented Software Construction https://www.amazon.com/Object-Oriented-Software-Construction... This seems to be a great reference. However, I haven't looked too thoroughly into it. I found a nice quote though.
"Today, no one will call security if one of the cocktail guests
declares object-oriented tastes. This is the buzzword effect, which
has been dubbed mOOzak: the omnipresence, in the computer press, of
O-O this and O-O that, causing a general dilution of the concepts.
The words flow so continuously from the loudspeakers — object,
class, polymorphism... — as to seem familiar, but are the concepts
widely understood? Often not." (29.1)
only found one course that I would probably refer to...
courses:
https://web.stanford.edu/class/archive/cs/cs108/cs108.1092
This has great course notes and projects to implement using object oriented programming.
I checked the book out on Amazon[1] and, bizarrely, you can buy it new for $96.89, used for $45.87, and you can "rent" it for $62.79. If I were still in college I would get the $50 copy and try to resell it to a student the following semester for $40 (campus bookstore would probably buy it back for $5). Or if I were a broke student I'd just use the library's reserved copy (you can't check it out but nobody ever took advantage of this when I was at school so it was always available to use at the library).
1: http://www.amazon.com/Object-Oriented-Software-Construction-...
Do you mind expanding on this a little bit? I am very confused. A "data structure" is an implementation of an abstract data type (https://en.wikipedia.org/wiki/Data_structure). A "class" is also an implementation of abstract data type (from this book https://www.amazon.ca/Object-Oriented-Software-Construction-... page 165).
I am not sure how you can have a data structure Book without any operations. Even if it were a C struct, accessing a field would consist an operation around that data structure.