Jump to ratings and reviews
Rate this book

Head First Series

Head First Object-Oriented Analysis and Design

Rate this book
"Head First Object Oriented Analysis and Design is a refreshing look at subject of OOAD. What sets this book apart is its focus on learning. The authors have made the content of OOAD accessible, usable for the practitioner."

Ivar Jacobson, Ivar Jacobson Consulting

"I just finished reading HF OOA&D and I loved it! The thing I liked most about this book was its focus on why we do OOA&D-to write great software!"

Kyle Brown, Distinguished Engineer, IBM



"Hidden behind the funny pictures and crazy fonts is a serious, intelligent, extremely well-crafted presentation of OO Analysis and Design. As I read the book, I felt like I was looking over the shoulder of an expert designer who was explaining to me what issues were important at each step, and why."

Edward Sciore, Associate Professor, Computer Science Department, Boston College



Tired of reading Object Oriented Analysis and Design books that only makes sense after you're an expert? You've heard OOA&D can help you write great software every time-software that makes your boss happy, your customers satisfied and gives you more time to do what makes you happy.



But how?



Head First Object-Oriented Analysis & Design shows you how to analyze, design, and write serious object-oriented software: software that's easy to reuse, maintain, and extend; software that doesn't hurt your head; software that lets you add new features without breaking the old ones. Inside you will learn how to:


Use OO principles like encapsulation and delegation to build applications that are flexible Apply the Open-Closed Principle (OCP) and the Single Responsibility Principle (SRP) to promote reuse of your code Leverage the power of design patterns to solve your problems more efficiently Use UML, use cases, and diagrams to ensure that all stakeholders are communicating clearly to help you deliver the right software that meets everyone's needs.


By exploiting how your brain works, Head First Object-Oriented Analysis & Design compresses the time it takes to learn and retain complex information. Expect to have fun, expect to learn, expect to be writing great software consistently by the time you're finished reading this!

634 pages, Paperback

First published January 1, 2006

189 people are currently reading
1390 people want to read

About the author

Brett McLaughlin

39 books8 followers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
313 (33%)
4 stars
368 (39%)
3 stars
177 (19%)
2 stars
48 (5%)
1 star
17 (1%)
Displaying 1 - 30 of 55 reviews
19 reviews6 followers
September 21, 2013
I like the Head First series, and even Head Rush, for its innovative and fun approach for introductory software topics. I've had small concerns on all of them but I have never been as ambivalent as I have for this book. I know a big part of this problem was that it was rewritten expeditious (I am still not sure of the reason why) and it shows throughout the book with spelling, logic and code errors.

You can tell that the first chapter was rushed. There are several spelling and programming mistakes. The most egregious is where they ask you to look through some code to find what "FIRST" you change and then they answer that question with a much smaller problem (the main problem was they forgot to add a return statement (pg.5) and they write about the inconsistency of using String based searching). It has also been mentioned by several reviewers of the use of the method name "matches" which only makes sense for regex not for an equals operation. I also did not like the search example (how can you not think of price in a search?). The best part of this chapter is the mantra that should be practiced by many engineers: "Make sure your software does what the customer wants it to do."

The next few chapters are definitely better (though still some spelling mistakes). They are a good read for beginners and intermediate programmers on gathering requirements, change of these requirements and analysis. The ideas are a bit simplistic though it is good to get many programmers used to the idea of UML and use cases and using them to drive requirement gathering and textual analysis. Intermediate and advanced readers familiar with use cases will gain more from reading Alistair Cockburn's "Writing Effective Use Cases" (or will already have read it) and for further UML reading should go with "UML Distilled" by Martin Fowler.

When the book gets back to design I see some problems with the coding. The designer has this bizarre idea of abstracting all properties (under the guise of "encapsulate what varies") into a Map attribute to lessen the amount of subclasses for instruments. While initially this may seem a good idea it gets rid of all type-safe coding (you can now safely assign an instrument type to a backwood for the instrument), you cannot have behavior from the instruments (this is mentioned in the book) and if you put a property with one letter misspelled or capitalized out-of-place you now have a bug, one that you might have trouble finding thereby increasing maintenance costs. Too much flexibility makes the code ambiguous.

After design, the studies get to solving really big problems, architecture, design principles, and iterating and testing. These chapters I enjoyed much more especially the chapter on design principles with the beginning mantra that "Originality is Overrated." This chapter goes over basic principles such as OCP (open-closed principle), DRY (don't repeat yourself), SRP (single responsibility principle) and LSP (Liskov Substitution Principle).

Then the book last chapter (the ooa&d lifecycle) sums the lessons in the book in one large (somewhat contrived but these type of examples always are) program for the Objectville Subway. Then two terse appendixes dealing with ten additional OOA&D topics and OO concepts should make the reader realize that this book is just an introductory sliver of what needs to be learned for a sagacious software acumen.

This book is useful for programmers with a bit of Java (or C#) knowledge who want to get a good overview of OOA&D. This book is useful because it teaches important OO vernacular and a simple holistic approach to iterative development. If the book did not have a "quickly done" feeling, better design and fewer mistakes I would have liked this book more. This book is a good candidate for a second edition. If you want a more thorough explanation of these topics I recommend "The Object Primer" by Scott Ambler as one of my favorite books for a good introduction to OOA&D.
Profile Image for Tim Tulsky.
12 reviews8 followers
October 10, 2019
Sometimes useful, sometimes debatable. There are some good tips in here that should be on evrey developer's mind as they write. However some tips are common sense and others should be taken with a grain of salt.
Profile Image for إسراء عرايفي.
13 reviews11 followers
July 1, 2022
الكتاب أسلوبه مبني على إنه بيجيب مشروع بسيط
وبيطبق عليه الconcepts اللي بيشرحها مرورًا بفصول الكتاب.

وده بيعمق فكرك، وبيخلي عندك تخيل كامل عن دور الconcepts دي في الحياة العملية.

الكتاب كمان غير تفكيري بشكل كلي عن الprogramming وإنها مش مجرد كتابة كود، هي عبارة عن stages كتير بتسبق الكود، وطرق تفكير، ومبادئ بتخدم الكود.
الكتاب هيساعد المبتدئين زي حالاتي إنه يكتسب الmindset اللي تساعده يفكر في البرمجة بشكل أكثر شمولية.

الكتاب أسلوبه مبسط جدًا، وبيشرح عن طريق خرائط ذهنية، وصور، وأكواد.

ومدخل كويس للOOP والdesign pattern والArchitecture.

بالنسبة للOOP فاستعنت بمصادر تانية للشرح، لأنه الكتاب مش كافي.

الكتاب عدد صفحاته كبير ومحتاج صبر، فأتمنى لو حد هيقرأه ميحصلشي أي ملل لأنه في نهايته هتلتمس فايدته جدًا، وده لأن فصوله مبنية على بعض.
Profile Image for Tony B.
62 reviews3 followers
June 24, 2012
Very practical , reads like a novel. My style of writing , if I were to write a book
Profile Image for Nariman.
87 reviews118 followers
March 4, 2020
Head First Object-Oriented Analysis and Design tries to cover most of the Object-Oriented principles and paradigms in a completely non-boring way. It is a good starting point to think about software in terms of objects and classes.
Profile Image for Nimrod Daniel.
183 reviews305 followers
June 3, 2016
I started the book a long time time, got to the 80-85% pretty quickly (it's a quick read) and left the book for a very loooong time until now.

All in all, It's a nice book on Object Oriented design and analysis , though most of my reading I felt like the book tries to explain things to a 10 years old kid. It tries to convey the principles of OO, though I think it could have been much better in a shorter book. Some OO tutorials and stackoverflow provide a better source for that topic.

3.5/5
Profile Image for Mehri Abdukodirova.
93 reviews63 followers
July 28, 2020
Head First Object-Oriented Analysis and Design is definitely a brain-friendly guide for those who are just starting in the field of software development. But for someone who has some fundamental skills it will definitely be a boring read. That's the reason I put 4 stars even through it's a good book. It should have stated the level of audience the book is intended for. Meanwhile, it's not a bad book.
Profile Image for Zahra Dashti.
437 reviews120 followers
March 3, 2020
کتاب دوست داشتی‌ای بود. مرحله به مرحله چالش‌ها رو مطرح می‌کنه، ساده ترین سوالها رو طرح و جواب می ده و در بطن یک مسئله ملموس و بامزه و قابل درک و ساده (از لحاظ موضوع مثال) مسائل تحلیل و طراحی نرم‌افزار رو بیان می کنه. خیلی خوبه که بتونید پشت سر هم و هر جلسه یک فصل رو بخونید، اینجوری سر رشته مطلب از دست نمی ره و احتمالا فراموشی کم می شه، چون خود روایت داستان گونه کتاب، کمک می کنه که مسئله فراموش نشه و مطالعه منظم اش بیشتر به این قضیه کمک می کنه. متاسفانه خودم نتونستم کتاب رو به این شیوه بخونم ولی توصیه می کنم به این شیوه بخونید. درسته که ممکنه خیلی از موارد براتون تکراری باشه ولی تحمل کنید و سعی کنید خودتون رو به داستان کتاب بسپارین و از هماهنگی مطالب لذت ببرید و اجازه بدین نکات ریز و ظریف رو جذب کنید.
Profile Image for Fernando Fernandes.
128 reviews8 followers
June 8, 2016
It's an OK book. The writing style is not my cup of tea -- it tries too hard to simplify things to a point where it becomes difficult to focus on the original concept (take OO for instance). But I would recommend the title for beginners.
Profile Image for Maryam.
43 reviews9 followers
September 2, 2022
A good introduction to the world of OO, as a junior dev who didn't know much about OO and was afraid of finding it too complex, I found the book easy to follow with typescript background and no prior knowledge of java , simplifying terms and concepts that are indeed complex, overall it was a great starting point for me and I'm ready to dive deeper into the OOP world.
Profile Image for Ahmed Abdelalem.
1 review1 follower
October 5, 2022
it was a nice one clear and easy to understand but the problem I faced is I didn't write java and the notes everywhere but itsn't a problem for others and that is what proves the greatness of the book :)whatever it's agreat tools to learn ood&a hope reading it again later and learn more.
Profile Image for Shea.
23 reviews2 followers
July 3, 2014
I was with them at the beginning when they explained their theories on learning and retention.

And then I read it. I felt like I was constantly turning pages because there's so little actual text, so few idea, on every page.

At the end, I didn't really feel like I learned much. Also, I felt like they do a kind of irresponsible job promoting the use of type-codes over inheritance.

Nitpicky! I think this book would be really good for the right reader. For me, I need more concise, complete, and technical information.
Profile Image for Olga Tsyvilko.
45 reviews3 followers
May 9, 2019
Можно ли описать сложные процессы и тонкости разработки интересно? Да ещё почувствовать себя архитектором? И при этом не заснуть, читая громоздкие определения терминов? Можно! И ещё как! Никогда не думала, что смогу получить удовольствие от прочтения литературы на такую не простую тему. О сложном простым языком, да так захватывающе, что это "сложное" становится предельно понятным. Многочисленные примеры и задания помогают изучить и закрепить материал. Отдельная хвала подаче материала, весело и интересно, а герои книги становятся верными спутниками на пути её чтения.
Profile Image for Madhur Bhargava.
Author 2 books13 followers
August 13, 2019
The book is very well written and covers many basic aspects of analysis and design of software from the beginner's point of view. One of the plus points is due to the reason that apart from the regular analysis and design, this book also discusses other important aspects of software development such as - being customer centric and managing risk(to name a few). However, some of the readers may find the pace of the book as slow as it really hammers a point down to its details. Highly recommend this book especially to engineers who are in nascent stages of their career.
18 reviews
January 9, 2021
The use of different sample projects helped to drive the points on OOAD as every project is different and faces unique requirements. The book covered useful tools and steps from requirement gathering to development and to testing. Didn't pay too much attention to the exact code as my focus was to understand the concepts. The book is useful in showing how engineers actually work together, especially in the book's format. Glad I picked this up!
6 reviews14 followers
February 15, 2019
for someone who has already taken an object oriented programming course , that book won't be of much benefit , but it really gives you valuable information. In my opinion,chapter 9 (design principles ) is the most useful one as it talks about the SOLID design principles. I got a little bit bored during reading some chapters but the overall reading experience was OK.
Profile Image for Ben Rand.
335 reviews7 followers
February 12, 2012
Another good book in the Head First series. This covers the process of preparing to code, mostly. So if you're expecting much code you'll need to look elsewhere. A lot of this was review to me which is why I only gave it 4 stars. It was well written with clear examples of everything discussed.
2 reviews1 follower
March 11, 2013
A great brain friendly introductory book for OOAD. A reader of this book can get a very good grasp of the OOAD fundamentals and will be ready to go to the advanced software architecture design with UML.
Profile Image for Gerardo May ruiz.
18 reviews2 followers
May 30, 2013
Un libro muy recomendado, te lleva de la mano como si estuvieras viendo un programa de plaza sesamo, puede parecer aburrido si eres un experto en el diseño orientado a objetos, pero bueno, es un libro para principiantes.
1 review
May 28, 2013
Chapter1:
class GuitarSpec is abstracted from Guitar so that it can be easily modified without changing class Guitar and Inventory;
Guitar is used in Guitar, Inventory
This entire review has been hidden because of spoilers.
Profile Image for Yonathan.
6 reviews
January 26, 2015
This book doesn't consider all possibilities that could happen for its early-to-mid chapter programming cases. However, in overall, the book explains difficult OOA&D materials superbly.
Profile Image for K Rohit.
2 reviews
December 31, 2017
Described the whole concept using a very simple and practical example. Nice approach for learning. Quickly grasped the concept. Loved it.
Profile Image for Ngo Dat.
5 reviews
October 21, 2018
This book is quite good with more detailed description and explaination. There are some pictures making me understand the overview of OOP quickly. Deserve to spend time to read
Profile Image for هدى.
198 reviews59 followers
August 29, 2021
I really enjoyed the book, although I already know a lot of information it explained.
Profile Image for Neville Ridley-smith.
1,028 reviews25 followers
September 4, 2021
This certainly isn't perfect but it's a great overview of the essentials of OOA&D.

Real world apps have thousands of lines of code. The limitations of the book/tutorial format mean having vastly reduced code. This book manages this quite well. The examples are just enough to explain the principles without getting too bogged down in the minutiae of coding. Ie, a lot of programming is not about the code itself, but about gathering requirements and thinking about how to structure stuff.

I actually disagree with the top review which complains about the use of a Hashmap - this is precisely the type of thing that's a real world problem - the desire to sometimes create too many fixed classes to model things vs keeping things flexible when that's an absolutely crucial part of the design.

Although I've been coding for 30+ years there were still a few things I gained from reading this book - handy tools for thinking about the SRP and LSP for example.

Highly recommended for anyone just starting out and it's a quick read for anyone more experienced.
Profile Image for Giorgi Tsiklauri.
6 reviews2 followers
December 21, 2021
I don't know why, but even if I'm not an entry-level in OO design and I have quite an experience in this domain, I still started this book (was just interested to have a look) with a high expectation, that *it should have been great* as it's kind of introduction to the Object-Oriented design, and if introduced and explained in a proper and good way, book/lecture/introduction should be great alike; however, I am quite disappointed due to quite a number of technical incorrectness, mistakes, and errata - in general. This was such a frustrating experience, to encounter numerous incorrect texts/codes right in the beginning of the book, that I eventually stopped reading it at all.

Another important aspect is, that it's too wordy and too verbose.. and I'm not against simplistic approaches in the books, on the contrary.. but excessively wordy and abundant (e.g.) 5 pages for just a one, clear concept, is really tiring and overburdening.

Not recommended, nor for beginners, nor for experienced engineers.
Displaying 1 - 30 of 55 reviews

Can't find what you're looking for?

Get help and learn more about the design.