Object Oriented technology

Object Oriented design is based on the idea of developing systems that contain things, which communicate with one another using formalised messages. The "things" are objects, which have defined behaviour (they respond in particular ways to the received messages) and a state (they contain data attributes, which at any given time contain a specific set of values). The exact behaviour of an object depends on its state at the time when it receives a message.

The design of Object Oriented systems is essentially different from the traditional design of software systems. In the early days of computer software development, design engineers reasoned that they should attempt to design programs using structures that mimicked the manner in which a computer processes information. In other words, they saw programs in terms of flow charts that represented the program as a sequence of decision blocks, loops and function calls. Data declarations were a separate issue.

An Object Oriented Design is undertaken very much in the same way as any other engineering design. The designer looks for suitable components to meet a purpose in a specification, in the same way as would a building designer look for architectural hardware. If the exact component is not available, it may be created by improving one that is available or by combining a number of such components. This is a "natural" way to design, even if it is considered to be unconventional for software systems.

Object Oriented Design is greatly facilitated through modelling. Models are able both to help structure the design and to experiment with its testing particularly in early development phases. Our paper on Software Modelling examines how software systems are modelled in the UML and pays particular attention to Object Oriented techniques. It is available on request.