[Tutor] OOA and OOD resources?

Alan Gauld alan.gauld@blueyonder.co.uk
Tue May 20 16:02:38 2003


> grounding in practical ooa and ood.  The basic question is "How do I
know
> what to make objects out of and what are the pitfalls of doing it
this way
> vs. that way?"

That is indeed the basic question in OOAD. It is not easily solved
and needs practice. Nonetheless there arecs0m4e good books which
give guidance.

My personal favourites are:

1) Coad/Yourdon OOA and OOD(2 related books)
Unfortunately the notation is now obsolete(replaced by UML) and
the books have about 30-50% overlap and are quite expensive.
But they are very readable for beginners.

2) OOP By Timothy Budd - Really about programming rather than
design per se but a really good intro IMHO.

3) OOA & D by Grady Booch
Seminal book on the topic but really aimed at experienced designers.

4) OO Software Construction by Meyer
Massive tome full of readable wisdom on all things OO. Repays close
study.

5) Object Design: Roles, Responsibilities, and Collaboration by
Wirfs-Brock
This is really important in emphasising the need to focus on behaviour
and responsibilities in defining a system. Highly recommended but only
after you have a good grasp of OOP.

> I have read various chunks here and there, saying things like,
> "Inheritance is not good because it creates dependencies",
> or "Aggregation is good but it's a pain to implement the proxy
methods".

Distrust all generalisations, Each technique has its place.
The trick is to know which and when. The books above all address
these issues.

> things on rather than starting at it piecemiel.  Is there a solid
set of
> general principles for ooa and ood that I can begin to build upon?

Yes, and much of it is available onine. Unfortunately a lot of
hype is online too! :-( Thats why i'd recommend the above books.

> I'd love to see a textbook that starts on oo and builds on it.

I tried that with my book but to be honest, once you get down to
writing methods its basic procedural thinking. Objects don't make
sense at the level that beginners start at.

Alan G
Author of the Learn to Program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld