Object Lessons: the State of the Art
The OO approach
The canonical, online sources for developments in object technology have changed little over the last couple of years -indicating some stabilization.
Structured programming (SP) was a common approach until the early 80's, with its emphasis on subroutines and the top-down decomposition of programs. In the late 80's, programs became composed of libraries of 'Objects' -aggregates of functions and data. Some problems are still better solved with SP techniques, and much existing code remains non-OO -written using procedural script, macros and traditional languages.
Object Oriented FeaturesObject-oriented languages like Java provide, however, features not found in other languages:
Encapsulation: an object consists of related data and code, bundled together.
Inheritance: classes can be extended to subclasses, code can be re-used.
Polymorphism: a variable that can hold an object of some class can hold an object of any subclass.
Protection: some of the data and code of a class can be hidden from the outside world.
- enhanced quality
- object stability within flexible processes
- faster development
- easier maintenance
- encapsulation, abstraction, re-use: objects can provide optimal granularity, the balance between flexible functionality within an object (cohesion) and reusability (lower coupling)
Programming using such encapsulated 'modules' predates OOP. Languages like C allow modular programming but OOP languages express more clearly the module concept.Here are some of the most interesting topics in OOP development.
Unified Modeling Language (UML)
This is the modeling language for specifying and visualizing software systems. The UML represents a collection of engineering practices that have proven successful in the modeling of complex systems. In 1995, Rational Partners created this first international standard for object-oriented modeling.
Rational Unified Process (RUP)
This is an iterative, web-enabled set of software engineering processes that provide guidance to development activities. The Process provides each team member with a unified approach to developing software via an on-line knowledge base that assigns responsibilities to the development team and allows access to new tools via plug-ins.
The momentum of design patterns continues to grow. Mature engineering disciplines have handbooks that describe successful solutions to known design problems. Design patterns and pattern languages are an attempt to describe successful solutions to common software problems.
This language continues to be hot, despite being a mature technology now. The Java technology is an object-oriented, platform-independent, multithreaded, programming environment, providing the foundation for smart Web and networked services. All kinds of systems can talk to each other -- from smart cards to supercomputers -- regardless of the underlying hardware or system software.
A Web service can be defined as "a loosely coupled collection of (markup language) software components that represents a business function and can be accessed by another application (a client, server or another Web service) over public networks using generally available protocols and transports (i.e. SOAP over HTTP). SOAP (Simple Access Open Protocol) is a protocol used for exchanging structured data in a decentralized, distributed environment. Web services are broadly comparable with object/component-based development architectures, and offer (subject to further development of security and standards) the benefits associated with object-orientation.
There's a lot of interest in Microsoft's new platform for developing software and running Web services. The .NET development framework allows support for XML-based Web services created in all current programming languages (especially the popular OO languages like Java). Applications and XML Web services created in one language can therefore be programmed in any of these other supported languages. The new ASP.NET, for example, separates code from HTML and supports the new C# language and its CRL (Common Runtime Language) which supports more than 20 other languages.
Developers who fail to use these OO technologies effectively in the future may face an array of difficulties. The resulting programming work could be harder to understand, and under perform because it mirrors reality less faithfully. Ultimately, there may be nightmarish maintenance issues.
Once there are effective standards for interoperability and security, developers will be faced by many new opportunities and challenges in the relation of network-enabled, service-based computing. See the next article Object lessons: the future of OO design.
Patrick Andrews is managing director of break-step productions, a consultancy firm specializing in designing digital businesses. His areas of interest include interactive marketing, machine intelligence and software design. Contact him at email@example.com.