"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!
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.
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.
الكتاب أسلوبه مبني على إنه بيجيب مشروع بسيط وبيطبق عليه الconcepts اللي بيشرحها مرورًا بفصول الكتاب.
وده بيعمق فكرك، وبيخلي عندك تخيل كامل عن دور الconcepts دي في الحياة العملية.
الكتاب كمان غير تفكيري بشكل كلي عن الprogramming وإنها مش مجرد كتابة كود، هي عبارة عن stages كتير بتسبق الكود، وطرق تفكير، ومبادئ بتخدم الكود. الكتاب هيساعد المبتدئين زي حالاتي إنه يكتسب الmindset اللي تساعده يفكر في البرمجة بشكل أكثر شمولية.
الكتاب أسلوبه مبسط جدًا، وبيشرح عن طريق خرائط ذهنية، وصور، وأكواد.
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.
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.
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.
کتاب دوست داشتیای بود. مرحله به مرحله چالشها رو مطرح میکنه، ساده ترین سوالها رو طرح و جواب می ده و در بطن یک مسئله ملموس و بامزه و قابل درک و ساده (از لحاظ موضوع مثال) مسائل تحلیل و طراحی نرمافزار رو بیان می کنه. خیلی خوبه که بتونید پشت سر هم و هر جلسه یک فصل رو بخونید، اینجوری سر رشته مطلب از دست نمی ره و احتمالا فراموشی کم می شه، چون خود روایت داستان گونه کتاب، کمک می کنه که مسئله فراموش نشه و مطالعه منظم اش بیشتر به این قضیه کمک می کنه. متاسفانه خودم نتونستم کتاب رو به این شیوه بخونم ولی توصیه می کنم به این شیوه بخونید. درسته که ممکنه خیلی از موارد براتون تکراری باشه ولی تحمل کنید و سعی کنید خودتون رو به داستان کتاب بسپارین و از هماهنگی مطالب لذت ببرید و اجازه بدین نکات ریز و ظریف رو جذب کنید.
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.
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.
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.
This was a very fun way to learn Object oriented programming and software development in general. I feel I probably will come back to this series for more.
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.
Можно ли описать сложные процессы и тонкости разработки интересно? Да ещё почувствовать себя архитектором? И при этом не заснуть, читая громоздкие определения терминов? Можно! И ещё как! Никогда не думала, что смогу получить удовольствие от прочтения литературы на такую не простую тему. О сложном простым языком, да так захватывающе, что это "сложное" становится предельно понятным. Многочисленные примеры и задания помогают изучить и закрепить материал. Отдельная хвала подаче материала, весело и интересно, а герои книги становятся верными спутниками на пути её чтения.
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.
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!
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.
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.
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.
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.
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.
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.
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
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.
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.