I'm looking to really grasp OO once and for all.
Any recommendations on a good Objected-Oriented book?
I program in .Net, so if it's .Net oriented all the better.
Regards,
|
I'm looking to really grasp OO once and for all. Any recommendations on a good Objected-Oriented book? I program in .Net, so if it's .Net oriented all the better. Regards, |
|||||||
|
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.
|
I don't think a single book will get you up to speed. Do do do, read other's people's code and discuss. But to get you started I would recommend the following books in that order. In my mind the next step after OO thinking is patterns, if you know the basic you see them applied in the patterns and you can learn the trade off's, making you better in OO.
After that you are ready for the basic gang of four design patterns |
|||||||
|
|
Object Thinking from Microsoft Press. This book is really well written and goes deep into real object orientation - how to break out of procedural thinking and structure your code as interacting objects. |
|||||||||||
|
|
I highly recommend Head First Design Patterns. |
|||
|
|
|
Object Oriented Software Construction, 2nd Edition, by Bertrand Meyer. Take a look at the table of contents of the book in Wikipedia. |
||||
|
|
|
Object Oriented Thought Process by Matt Weisfeld (Sorry, I don't know a good link to this) |
|||||||
|
|
Object Design: Roles, Responsibilities, and Collaborations is a complete, superbly detailed, if somewhat advanced, definition on what it takes to build an object-oriented system. |
||||
|
|
|
If you already have a good grasp of OOP principles from C++, then really all you need is a Java reference manual that has examples. I would recommend the Core Java books by Horstmann and Cornell (at least Vol. 1, and maybe Vol. 2 as well if you are interested in the topics in it). If you learned C++ only as an afterthought to learning C, then you maybe are missing the OOP concepts and big picture. You'll need to have a pretty good understanding of OOP to really grok Java programming, since Java was designed as a OOP language only, while C++ can be used for a structured programming style in addition to its OOP features. (As a university computer programming instructor, I have run into many people who say they know C++ very well, but their programs were always written in a structured programming style, starting topdown with main() and breaking down into subfunctions, and maybe grouping some of the subfunctions as static functions in a "class", but they couldn't really do OOP - starting with the classes needed first and writing main() last, writing proper constructors/destructors/copy constructors, information hiding, recognizing when inheritance and virtualization would help them reuse code and/or make their program more flexible, etc.) If that's the case, then I would recommend starting with a book more like an "introduction to programming using Java" book that emphasizes objects. Head First Java, part of the O'Reilly series, is a good short fun book. Cay Horstmann has a series of Java textbooks that are also pretty good, introducing creating classes and objects in a very early chapter and using them throughout. If you want the true master-level view of Java, then I would recommend Bruce Eckel's Thinking In Java. He really delves into the what and the why of why Java is the way Java is. Sources: Amazon |
|||
|
|
|
Martin fowler, a well respected programmer, says this about this book: "People often ask me which is the best book to introduce them to the world of OO design. Ever since I came across it, Applying UML and Patterns has been my unreserved choice." I have the book, but haven't read it yet. If you really feel like you want to start at the beginning, you may want to read this: Object Oriented Thought Process (link) I've read it, and it's a great introduction to OO concepts. edit: apparently I need more reputation to post images :( |
|||
|
|
|
I find Object-Oriented Programming with Visual Basic .NET, may be help to you. And, Head First Object-Oriented Analysis and Design is based on Java, but helps to get the OOP degign concept. |
|||
|
|
|
Object Thinking by David West has already been mentioned. In addition, I would suggest the Wyrfs-Brock books. (None of these are .NET specific, though) |
|||
|
|
|
I found Timothy Budd's "An Introduction to Object-Oriented Programming" to be a good introduction to OO. In particular, Budd compares several different OO languages, including C++, Delphi, CLOS, Smalltalk, Objective-C, Java. |
|||
|
|
|
If you want a book that (IMHO) uses on the ideas presented in Object Design: Roles, Responsibilities and Collaborations and applies them to the real world object-orientated development in a modern, cutting edge manner then I highly recommend Growing Object-Oriented Software, Guided by Tests. It's Java but I found it easy to follow (I'm .net too). |
|||
|
|
|
I would have to second: Head First Object-Oriented Analysis and Design (Head First) [ILLUSTRATED] (Paperback) and Head First Design Patterns (Head First) [ILLUSTRATED] (Paperback) |
|||
|
|