The objective of this work is best described by the first sentence of the preface: “The primary goal of this book is to introduce students to the basic principles of object-oriented modeling, design and implementation of simulation models.” In this, the book is successful. It further states: “For undergraduate students, another goal is to provide relevant material for easy understanding of object orientation and simulation.” The book does not completely fulfill this second objective.
When I skimmed the contents of the book, I enjoyed the fact that it adopted a programming language stance. However, a closer read may leave one dissatisfied, as Garrido stops short of showing the limitations of general-purpose programming languages for simulation. It is not clear whether something is lost if one adopts a language different from OOSimL for teaching object-oriented simulation.
The overall objective of the book is quite ambitious and this is reflected in its contents. Part 2, “Object Oriented Programming with OOSimL,” covers using OOSimL; it presents the notions of software, program structure, object, classes, thread, exception, and many more, all in only 200 pages. Motivating each of these topics in an assertive manner is a difficult and challenging task. This part of the book could be easily condensed; for example, chapter 4, “Programs and Software Development,” is rather superfluous--it is too light to be useful. An enumeration and discussion of the aspects where OOSimL is superior to general-purpose languages would have definitely consolidated the whole story.
The third part of the book, “Discrete Event Simulation,” is didactic and clearly written. It covers and illustrates the field’s important topics, such as multiservers, event list, priorities, resources, waiting, interruptions, and specification of input. The car wash example is used for motivation, recurrently. This part also provides a nice and concise introduction to the distribution and confidence interval. However, the notion of “clock” is missing.
That being said, the book does deserve to be considered for teaching modeling and programming of discrete-event-based simulations. Even though the part about object orientation is not optimal, this can be redressed by consulting a dedicated manual.