Basic concepts in object oriented programming

The term object-oriented programming is derived f'rom the object concept in the Simula 67 programming language. In that language an execution of a computer program is organized as the joint execution of a (possibly variable) collection of objects. The collection as a whole is represented by a system object, and objects sharing a common structure are said to constitute a class, described in the program by a common class declaration. The concept may, however be traced further back, to the introduction of digital simulation as an important tool for analysis in the 1940s. This development took place in many different countries. The author's involvement started in 1949, when an integral equation model used for calculating the diameter of the uranium rods of the fust Norwegian nuclear reactor was substituted by a Monte Carlo simulation (" by hand "). In that model the physical paths and histories of a large number of neutrons were generated and a statistical analysis of their properties used to estimate the proper choice of rod diameter. Later on, the same approach was used in operational research situations when no appropriate mathematical model could be generated: Instead a process portraying the situation to be analyzed was generated within a computer, with entities in the outside phenomenon being represented by corresponding entities appearing in the computer program execution. A number of simulation languages started to appear, each representing a standardized view of the systems to be simulated. Simscript, GPSS, CSL, Sol and Simula I are early examples. In Simula I a more general view was adopted. The purpose of Simula I was from the outset to provide, at the same time, both a system description language and a simulation programming language. Simula should give its users a set of concepts in terms of which they could comprehend the system considered and a language for precise and complete description of its properties. It should thus be a tool both for the person writing the description and for people with whom he wanted to communicate about the systexr~ At the same time this system description should, with the necessary input/output and data analysis information added, be compilable into a computer simulation program, providing quantitative information about the system's behaviour.