Object-oriented (OO) applications can be written in either conventional languages or OOPLs, but they are much easier to write in languages especially designed for OO programming. OO language experts divide OOPLs into two categories, hybrid languages and pure OO languages. Hybrid languages are based on some non-OO model that has been enhanced with OO concepts. C++ (a superset of C), Ada 95, and CLOS (an object-enhanced version of LISP) are hybrid languages. Pure OO languages are based entirely on OO principles; Smalltalk, Eiffel, Java, and Simula are pure OO languages.
In terms of numbers of applications, the most popular OO language in use is
C++. One advantage of C++ for commercial use is its syntactical familiarity to
C, which many programmers already know and use; this lowers training
costs. Additionally, C++ implements all the concepts of object orientation,
which include classes, inheritance,
information hiding,
polymorphism, and
dynamic binding. One disadvantage of C++ is that it lacks the level of
polymorphism and dynamics most OO programmers expect. Ada 95 is a reliable,
standardized language well-suited for developing large, complex systems that
are reliable
[Tokar 96].
The major alternative to C++ or Ada 95 is Smalltalk. Its advantages are its
consistency and flexibility. Its disadvantages are its unfamiliarity (causing
an added training cost for developers), and its inability to work with
existing systems (a major benefit of C++)
[Tokar 96].
OOPLs are strongly recommended to complete the implementation of Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD)
technologies. AT&T Bell Labs used OOD and OOPLs and realized the benefits
of reduced product development time and increased reuse of both code and
analysis/design artifacts on a large project called Call Attempt Data
Collection System (CADCS). This large project consisted of over 350,000 lines
of C++ code that ran on a central processor with over 100 remote systems
distributed across the United States. During the development of two releases
of the CADCS, the use of the OOD techniques and subsequent implementation in
OOPL resulted in an 30% reduction in development time and a 20% reduction in
development staff effort as compared to similarly-sized projects using
traditional software development techniques and languages
[Kamath 93].
Organizations such as Bell Labs have found that through the introduction of OO
programming techniques in pilots and training courses, the developers were
able to learn properly and experiment with the OOPL constructs. This resulted
in increased object-oriented expertise such that much of the CADCS software
(objects) was reused on a similar project
[Kamath 93].
OOPLs such as Ada 95 and C++ can also be used to develop traditional non-object-oriented software. These applications can be developed by avoiding the use of the object-oriented language features. There are many commercial, Department of Defense (DoD), and government applications of this type in existence today.
For applications where OOPL code is to be generated by a CASE tool, developers must decide which programming language to generate: C++, Ada 95, Smalltalk, Java, or CLOS. The choice of an OOPL can limit the choices of CASE tools because the tools may not support the chosen language. However, if language generation is not a consideration, then CASE tools can be chosen based on features and design capabilities without regard to the OOPL chosen for implementation.
Since different OOPLs support different levels of 'objectiveness' (e.g., inheritance), different OOD constructs may or may not map directly to OOPL constructs. Therefore, the choice of an OOPL is affected by a design captured using OOD techniques. Where OOD is not present, any OOPL can be used, depending upon the training of the developers.
OOPLs have been used worldwide on many commercial, DoD, and government applications/projects. There exists a wealth of documentation and training courses for each of the various OOPLs.
The use of OOPL technology requires a corporate commitment to formal training
in the proper use of the OOPL features and the purchase of the language
compiler. The costs of completely training a development staff implies that
the insertion of this technology should be undertaken only on new developments
(instead of maintenance of legacy systems), and only after pilot project(s)
are successfully completed
[Malan 95].
Both object-oriented and non-object-oriented applications can be written in either traditional languages or OOPLs. To fully realize the benefits of an object orientation, it is much easier to write the implementations in languages especially designed for OO programming.
Combining object-oriented methods with Cleanroom (with its emphasis on rigor,
formalisms, and reliability) can define a process capable of producing results that are reusable, predictable, and high-quality. Thus, OOPLs can be used for implementation of an object-oriented design and Cleanroom can be used for life-cycle application engineering.
This technology is classified under the following categories. Select a
category for a list of related topics.