Object-Oriented Computing in Astrophysics (OOCA) comprises various abstraction levels:
As building blocks, object-orientation is providing improvement in basic component definition and interfacing. This new technology of objects is perhaps most evident in superior computer-human interfaces, as interface objects provide windows to underlying objects that represent the conceptually complete components of a system and that can be individually understood and then combined, integrated, and arranged in multitudes of configurations. This represents a fundamental change and improvement in the way software, if not the world, can be understood by reconstituting the basic principles of the science. And object-orientation provides for better modeling of the real world by providing a much needed improvement in domain analysis and then integration with system design, which is itself improved by the same technique.
The use of objects distinguishes object-orientation from other techniques such as traditional structured methods (process-based: data and function are separate) or other techniques.
C++ added classes to C as early as 1985 and by the 1990s had emerged as the market leader in object-oriented languages (if not all of programming) with powerful features including multiple inheritance, exceptions, templates, operator overloading, and namespaces. It's popularity was due in part to compatibility with the large existing base of C programmers and the widespread use of Unix, which ran on many machines.
Java is now vying with C++ as the most popular object-oriented programming language. Java was created as a simplification of C++ that could run on any machine, providing a write-once/run anywhere capability. This development was originally to support multitudes of devices (still true today) and with the rise of the WWW enabled Java to become the defacto Web programming language with applets that could run in a browser on any platform. Java provides first class support for object-orientation rather than the hybrid approach of C++, which added object-orientation to C but retained the underlying C structured programming base language. Java also has several advanced capabilities, including reflection and support for graphics, distributed programming, threading, and the WWW (Applets). Java is now used in most application programming areas, but does not have the low-level facilities required for systems and science programming. It was originally interpreted, although some vendors now provide native-compiled executables and Sun provides Hot Spot runtime optimized runtime environments (JRE, Java Runtime Environment).