Carol Britton & Jill Doake
McGraw Hill, 2000
ISBN 0077092244 (paper)
Buy it from Amazon.com (commission paid)
Buy it from Amazon.co.uk (commission paid)
Other Reviews
This is that rare thing, a textbook that is readable, unpretentious, and genuinely helpful. Britton and Doake have collaborated very carefully to present the basic concepts (and several more advanced ones) of object orientation. They have also managed to achieve one of the key goals of requirements engineering, namely to see things from the point of view of the users, in this case their students.
How many authors can truly put their hands on their hearts and claim, as this book does, that no technical knowledge is assumed? The authors make a serious effort to start from the beginning and build up the reader's knowledge piece by piece. They modestly claim only to be introducing the student to the subject, but one cannot help wondering whether their understanding and explanatory powers are not considerably greater than the guru authors of many more ambitious texts.
The book starts out by showing why there is a problem with traditional structured methods - the software crisis of ballooning complexity and cost overruns. It then looks at development approaches including the basic variety of system life-cycles and the methodologies that accompany them.
A chapter is devoted to requirements engineering, which in plain practical terms gives a helpful introduction to our subject, templates for interviewing and sensible advice on getting started:
"Although direct questions are needed to control the interview, a lot of information can also be discovered by smiling, nodding encouragingly and making the interviewee feel that what they are saying is important."
The book then starts on object modelling, with clear illustrations of different types of model including architect's drawings and maps, before diving into class diagrams. The reader is drawn into the concepts including cardinality, reuse, and association, without any of the usual fuss.
After that come use cases and scenarios, also good Requirements Engineering topics but here leading up to sequence, collaboration, and state diagrams to define the behaviour of a system. UML gets a brief mention.
The book then boldly moves into implementation, with increasingly detailed class diagrams for the worked example, a car park, and precise explanations of how to implement relationships such as association and aggregation. The authors sympathetically admit that
"We have found that for students new to the topic, one of the hardest things about implementing an O-O system is coping with distribution of functionality amongst classes... To achieve one use case we will find that we are jumping about between classes. This is especially disconcerting to students used to top-down functional decomposition..."
The book closes with chapters dealing briefly with persistent data and testing.
The extensive appendices cover the worked example, providing background material, models, Java code, and a summary of UML notation. Students get a crib of answers to selected exercises, a short but properly annotated bibliography of "accessible and reasonably easy books" including especially some "that we feel would be useful in the next stage of learning". The glossary is terse and helpful, as is the index.
Students wanting to get started on systems development could do well to work through this book; teachers wanting a really practical first book on O-O should check it out. Old hands used to decomposing functions may also find it worth a quiet look while on holiday.
(c) Ian Alexander, June 2000
You may also like: