the blog for developers

Best book on object orientation

I’ve recently started to read the best book on object oriented programming. There are other good books that deepen your understanding of OO like “Refactoring” and “P of EAA” from Fowler, “Design Patterns” from the GoF, the McConnell books, “The Pragmatic Programmer”, the OO books from Robert C. Martin and some others. All recommended to read. But the best I’ve read on OO in the last 15 years is Domain Driven Design from Eric Evans. There are a lot of deep insights about how to build your domain model and structure your objects and classes in that book. Highly recommended.

About the author

stephan Stephan Schmidt has been working with internet technologies for the last 20 years. He was head of development, consultant and CTO and is a speaker, author and blog writer. He specializes in organizing and optimizing software development helping companies by increasing productivity with lean software development and agile methodologies. Want to know more? All views are only his own. You can find him on Google +

You can leave a Reply here. Of course, you should follow me on twitter here.

You can share this post!
Do you want to tell others about this article? Use the social bookmark icons to submit this artice to the service of your choice. Thanks.

Leave a reply.

Comments

My favorite book for business domain design is “Streamlined Object Modeling” by Nicola, Mayfield, and Abney.

Their approach is informed by Peter Coad’s teachings for business component design. Streamlined Modeling gives an OO model that has a fairly direct mapping to a relational model as far as the data goes, but of course with considerable behavior added as well. One of the things that I like about Streamlined Modeling is the *almost* total absence of ambiguity, which means that it’s pretty hard to run into analysis paralysis. (In my limited experience, the folks who dislike Streamlined Modeling the most are the ones who believe that the “best choice” should be left to the designer.)

One of the ways that Streamlined Modeling contradicts Evans is that Evans pre-optimizes his models for a particular application. Streamlined Modeling doesn’t prohibit optimization, but first one develops each part of the model in full detail (at least mentally) and then removes only the bits that will add no value. One really big difference from DDD is that Streamlined Modeling relies heavily on bidirectional associations between objects, so that you can just as readily find all of the parts on an invoice or all of the invoices that included a certain part.

stephan

Thanks for the link, I’ll take a look. Sounds interesting.

The S.O.M. may not be so well known but has some good and unique content. It is rather prescriptive and it lays out a detailed plan about where to assign which responsibilities. So much in fact, that I can’t bother to follow it consistently :)

I did find it a bit too heavy on the structural aspects and light when it comes to behavior (i.e. a wee bit too data-centric to my taste). But it is a good discussion, lots of good ideas.

To the list of classics above, I would add two books that have had a big influence on my way of thinking about OOD :

1) ‘Object-oriented software construction’ (B.Meyer) for its groundwork and focus on specification.

2) ‘Fundamentals of object-oriented design in UML’ (Page-Jones). It has three parts, the first two are the usual discussion of OO and UML and can safely be skipped. However, the third part (chapters 8 through 14) will totally make it worth your while.

Best regards,
Yanic

stephan

SOM is not available on Amazon.de :-(

I’ll take a look into the other ones, for more than 20 years of OO-programming there are very few excellent books.

Thanks a lot
-stephan

Leave a Reply

What people wrote somewhere else:

Additional comments powered by BackType

Guide to CodeMonkeyism

Over the last 4 years I wrote many articles on this blog. To make it easier for you to find the relevant ones, I've organized them into topics.

Top 10

6 reasons why my VC funded startup did fail

Go Ahead: Next Generation Java Programming Style

Java Interview questions: Write a String Reverser

The dark side of NoSQL

7 Bad Signs not to Work for a Software Company or Startup

Is Java dead?

Scala vs. Clojure

Never, never, never use String in Java

No future for functional programming in 2008 – Scala, F# and Nu

Clojure vs Scala, Part 2

Java Developer

Is Java Dead?

Go Ahead: Next Generation Java Programming Style

Be careful with magical code

All variables in Java must be final

Never, never, never use String in Java

Bending Java: More readable code with methods that do nothing?

NoSQL Guy

NoSQL: The Dawn of Polyglot Persistence

The dark side of NoSQL

Essential storage tradeoff: Simple Reads vs. Simple Writes

Sharding destroys the goals of your relational database

The unholy legacy of databases

Startup/CTO

Development Dream Teams

6 reasons why my VC funded startup did fail

American vs. European style of Software Development

12 Things to Reduce Your Lead Time and Time to Market

The high cost of overhead when working in parallel

Essential storage tradeoff: Simple Reads vs. Simple Writes

Job Seeker

Another Good (Java) Interview Question

7 Bad Signs not to Work for a Software Company or Startup

Java Interview questions: Write a String Reverser (and use Recursion!)

Java Interview questions: Multiple Inheritance

As a Manager: What I value in developers

Top 10 Tips (+1) to Get a Pay Raise

Agilist

What Developers Need to Know About Agile

5 Practices Better to Change in Your Scrum Implementation

Scrum is not about engineering practices

ScrumMaster and ZenMaster: The joke of certification

What is Trans-Scrum?