tags:

views:

564

answers:

10

I learned some C on my own and I've finished one semester of Java programming. OO programming takes a different approach to problems. I want to know which book will help me pick up the OO aspects of Java.

So I've looked through Stack Overflow and two books have come up several times: Head First Java and Head First Object Oriented Analysis and Design. Now I already know some Java, and I'll be picking up a good bit more in my 2nd class. Yet, Head First Java is the one that is recommended for learning OO programming.

It's a difficult decision! I don't want to read a book that'll teach me how to write a "hello world" program in Java. Yet, I don't want to jump into OOA&D without all my foundations. Would OOA&D provide me with the foundations, or does it assume a certain level of understanding?

+4  A: 

I usually recommend Thinking in Java by Bruce Eckel:

http://www.mindview.net/Books/TIJ/

BobbyShaftoe
+2  A: 

I love all the Head First books, but I think you should read both.

Read the "Head First Java" book, then the OOAD book.

dicroce
+3  A: 

You don't have to limit yourself to one book, of course. Sure, start with Head First Java and if it is not cutting it, then move to other books that people recommend here and elsewhere.

For example, before or after Head First Java, you might want to read what is commonly called the "Gang of Four" book. It is considered the definitive book on object oriented design.

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612

But that book is a lot of theory, albeit presented in a great way.

It really depends on your personality and how you learn best -- hands on (pun intended, I guess), theory, or both.

Joel Marcey
+1: It's not "either-or". Read them both, plus others!
S.Lott
+6  A: 

If you already understand Java you should read Head First Design Patterns. That has made a big impact to how I code.

Same here, Head First Design Patterns is an incredible book.
leeand00
+2  A: 

Practically all of the material in HF OOA&D can be found in HF Java. The only reason to read the former instead of the latter is if you intend to learn a language other than Java. Also, HF Java goes far, far beyond "Hello, World", so I don't think you'll be disappointed in it. I recommend HF Java followed by HF Design Patterns to get a really strong foundation in OO design.

Bill the Lizard
leeand00
A: 

For learning OO, do you recommend Head First Java or Head First OOA&D?

No! ;-)

I'll offer a recommendation for when you get the basic idea of objects, classes and interfaces.

The recommendation is: reading the source code of Simon Tatham's Puzzle Collection, and the documentation of it. Not all of it, mind you, but enough that you see how the design is object-oriented (if you squint at it the right way).

It'll both hammer home and challenge your understanding of what OO is and isn't. Very educational once it clicks.

You can also read the Linux VFS layer instead, but I can't vouch for the ease nor educational value of that.

Jonas Kölker
A: 

Data Abstraction and Problem Solving with Java, Walls and Mirrors

http://www.amazon.com/Abstraction-Problem-Solving-Mirrors-Updated/dp/0321197178/ref=sr_1_2?ie=UTF8&s=books&qid=1245967085&sr=8-2

I learned with the C++ version but this series is quite good.

A: 

Oh, Im the boy of HF books.

OOP concepts and OO development are two differents things.

If you want to know the OO concepts, you should take a book like HF Java.

If you want to know how to make an Analysis and Design of a Application using OO, you should take HF OOA&D.

I have both books on my shelf, two good books, but, one is for learning java and how java uses the OO (and teaches the basics of OO), and the other one is about the analysis and design part of creating an app.

HTH.

BTW: OOA&D assume that you have a basic knowledge of OO principles.

Jesus Rodriguez
A: 

I used Deitel's Java book. It is really good, with different colors, tips and examples. Check it out: Here

rprandi
+1  A: 

Head First Design Patterns was my choice and it really got me going. After that, I looked at Head First Java and thought it was not worth reading it.

chaos0815