Object-Oriented
Computation in C++ and Java fills a gap in the literature of object-oriented
programming. Many C++ or Java textbooks, courses, and class libraries emphasize
object-oriented classes for two kinds of data:
one-dimensional containers
(Java collections), such as vectors, lists, and sets
graphical user interface
(GUI) components, such as windows, forms, and menus
However, most
of the data items our programs process belong to neither of those categories.
Container structures and GUI components rarely belong to the application domain.
They don't represent actual objects in the real world of a business or science
application. True application-domain objects model real-world data items at the
core of the very purpose behind developing a computer application.
[Application-domain
objects are sometimes misleadingly called "business objects," although
they're not limited to business or commercial applications. Scientific and engineering
applications need and use application-domain objects just as much, if not more.]
This book is about an important subset of application domain data: numeric
data items. Numeric data are central both to most business applications and to
every engineering or scientific application.
For more than a dozen years,
I've been teaching courses in advanced object-oriented programming. My students
have backgrounds in both commercial/business applications and scientific/engineering
applications. In searching for a suitable textbook, I found none that adequately
treated application-domain objects.
Unfortunately, but hardly surprisingly,
the omission of application-domain data from books and courses is mirrored by
much application software. I frequently encounter allegedly "object-oriented"
application systems in which nearly all numeric quantities are represented as
floating-point numbers, as if the programmers have coded in Fortran.
In
response, I developed a large collection of course handout material, part of which
has evolved into this book.
Object-Oriented Computation in C++ and Java
is suited to an advanced programming course for senior undergraduates or masters-level
students in engineering, business, or the sciences, as well as to self-study by
practicing professionals. Since it covers an area neglected by most OOP textbooks,
it also serves well as a supplementary text in a survey course in object-oriented
programming for computer science majors.