Object-oriented programming languages and tools


Информатика, кибернетика и программирование

They were working on simultions tht del with exploding ships nd relized they could group the ships into different ctegories. The Smlltlk tem ws inspired by the Simul 67 project but they designed Smlltlk so tht it would be dynmic. The objects could be chnged creted or deleted nd this ws different from the sttic systems tht were commonly used. It is this feture tht llowed Smlltlk to surpss both Simul 67 nd the nlog progrmming systems.



37 KB

0 чел.

Lecture 7. Object-oriented programming languages and tools. Part 1.

7.1 The history of object oriented programming1

The basis for OOP started in the early 1960s. The first programming language to use objects was Simula 67. It was designed for the purpose of creating simulations, and was developed by Kristen Nygaard and Ole-Johan Dahl in Norway.

They were working on simulations that deal with exploding ships, and realized they could group the ships into different categories. Each ship type would have its own class, and the class would generate its unique behavior and data. Simula was not only responsible for introducing the concept of a class, but it also introduced the instance of a class.

The term “object oriented programming” was first used by Xerox PARC in their Smalltalk programming language. The term was used to refer to the process of using objects as the foundation for computation. The Smalltalk team was inspired by the Simula 67 project, but they designed Smalltalk so that it would be dynamic. The objects could be changed, created, or deleted, and this was different from the static systems that were commonly used. Smalltalk was also the first programming language to introduce the inheritance concept. It is this feature that allowed Smalltalk to surpass both Simula 67 and the analog programming systems. While these systems were advanced for their time, they did not use the inheritance concept.

Simula 67 was a groundbreaking system that has inspired a large number of other programming languages, and some of these include Pascal and Lisp. By the 1980s, object oriented programming had become prominent, and the primary factor in this is C++. Object oriented programming was also important for the development of Graphical user interfaces. The Cocoa structure that exists within Mac OS X is a good example of a dynamic GUI that works with an object oriented programming language. This paradigm of programming has also played an important role in the development of event-driven programming.

Niklaus Wirth and his associates were looking at areas such as modular programming and data abstraction, and they developed two systems which incorporated these elements. These two systems are Oberon and Modula-2. Oberon used a unique approach to classes and object orientation that is much different than C++ or Smalltalk. Since the introduction of OOP, a large number of modern programming languages are now using the concept. Some of these are Fortran, BASIC, and Pascal. There have been some compatibility issues, because many programs were not designed with a OOPs approach in mind. Object oriented programming languages that were "pure" did not have many of the functions that programmers needed.

To solve these problems, a number of researchers have been attempting to design new programming languages that used object oriented concepts but still retained many of the functions that programmers needed. One example of a programming language that has achieved this to some degree is Eiffel. Another programming language that has attempted to solve this problem is Java. Java has become popular because it uses a virtual machine, and it is very similar to C++ and C. The virtual machine is important because it allows code to be run on multiple platforms without having to be changed. Another system that is similar is Microsoft’s .NET. Many developers now understand the importance of OOP, and are actively using it within their own programs. Many researchers have continued to make advancements by using the object oriented approach.

There are a number of other languages that have successfully combined the object oriented approach with procedures that are useful to programmers. Python is one example, and Ruby uses a similar approach as well.

The use of an object oriented approach has led to advancements in modeling languages, design patterns, and a number of other areas. It is likely that OOP is a programming paradigm that will continue to evolve as we move forward into the future. It is a powerful language which has continued to improve over the years. It is the subject of debate within the programming community, as critics point out a number of problems with the structure. However, the popularity of programming languages such as Java demonstrates that it is a paradigm that is here to stay.


Simula is a name for two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is a fairly faithful superset of ALGOL 60.

Idea. Dahl and Nygaard worked on simulations that deal with exploding ships. They realized they could group the ships into different categories, each ship type would have its own class and the class would generate its unique behavior and data.  Simula was not only responsible for introducing the concept of a class, but it also introduced the instance of a class.


Class Rectangle (Width, Height);

Real Width, Height;

Boolean Procedure IsSquare;

     IsSquare := Width=Height;

End of Rectangle;

Simula 67 introduced objects, classes, inheritance and subclasses, virtual methods, coroutines, discrete event simulation, and features garbage collection. Subtyping was introduced in Simula derivatives.

Simula is considered the first object-oriented programming language. As its name implies, Simula was designed for doing simulations, and the needs of that domain provided the framework for many of the features of object-oriented languages today.

Simula has been used in a wide range of applications such as simulating VLSI designs, process modeling, protocols, algorithms, and other applications such as typesetting, computer graphics, and education. The influence of Simula is often understated, and Simula-type objects are reimplemented in C++, Java and C#. The creator of C++, Bjarne Stroustrup, has acknowledged that Simula 67 was the greatest influence on him to develop C++, to bring the kind of productivity enhancements offered by Simula to the raw computational speed offered by lower level languages like BCPL.

Simula is still used for various types of university courses.

7.3 Evolution of SIMULA2

General purpose languages. High level languages, like FORTRAN, ALGOL 60 and COBOL were originally regarded as useful for two purposes:

 to provide concepts and statements allowing precise formal description of computing processes and also making communication between programmers easier

 to provide the non-specialist with a tool making it possible for him to solve small and medium sized problems without special help.

High level languages have succeeded in these respects. However, strong new support for these languages developed from the task of organizing and implementing very complex, highly interactive programs, such as large simulations.

1) In order to decompose the problem into natural, easily conceived components:

  •  each part should be describable as an individual program
  •  the language should provide for this
  •  the language should  contain means for describing he joint interactive execution of these sub-programs

2) In order to relate and operate a collection of programs  the language should have:

  •  the necessary powerful list processing capabilities
  •  the  sequencing capabilities

3) In order to reduce the excessive amount of debugging

  •  the language should give “reference security”
  •  the language and its compiler should spot and not execute invalid use of data through data reference based on wrong assumptions

SIMULA 67 (SIMUlation Language) contains most features of the general algorithmic language ALGOL 60 as a subset. The reason for choosing ALGOL 60 as a starting point was that its basic structure lent itself to extension. It was felt that it would be impractical for the users to base SIMULA 67 on yet another new algorithmic language, and ALGOL 60 already has a user basis, mainly in Europe.

In dealing with problems and systems containing a large number of details, decomposition is of prime importance. By decomposing a large problem, one can obtain component problems of manageable size to be dealt with one at a time, and each containing a limited number of details. Suitable decomposition is an absolute requirement if more than one person takes part in the analysis and programming.

The fundamental mechanism for decomposition in ALGOL 60 is the block concept. A block is completely independent of the rest of the program. The locality principle ensures that any reference to a local quantity is correctly interpreted regardless of the environment of the block.

The block concept corresponds to the intuitive notion of “sub-problem” or “sub-algorithm”. A block is a formal description (or “pattern”) of an aggregated data structure and the associated algorithms and actions. When a block is executed, a dynamic “instance” of the block is generated. Ina computer, a block instance may take the form of a memory area containing the necessary dynamic block information and including space for holding the contents of variables local to the block.

A block instance can be thought of as a textual copy of its formal description, in which local variables identify pieces of memory allocated to the block instance.

The notion of block instances leads to the possibility of generating several instances of a given block which may co-exist and interact, such as, for example, instances of a recursive procedure. This further leads to the concept of a block as a “class” of “objects”, each being a dynamic instance of the block, and therefore conforming to the same pattern.

A central concept in SIMULA 67 is the “object”. An object is a self-contained program (block instance), having its own local data and actions defined by a “class declaration”. The class declaration defines a program (data nad action) pattern, and objects conforming to that pattern are said to “belong to the same class”. If no actions are specified in the class declaration, a class of pure data structures is defined. New objects belonging to the class can be generated. The need for manipulating objects and relating objects to each other makes it necessary to introduce list processing facilities.

A class may be used as a “prefix” to another class declaration, thereby building the properties defined in the prefix into the objects defined by the new class declaration. If actions are defined in a class declaration, actions conforming to this pattern may be executed by all objects belonging to that class. The actions belonging to one object may all be executed as a series of separate subsequences, or “active phases”. Between two active phases of a given object, any number of active phases of other objects may occur.

SIMULA 67 contains basic features necessary for organizing the total program execution as a sequence of active phases belonging to objects. These basic features may be the foundation for aggregated sequencing principles, of which the class SIMULATION is an example.

When many objects belonging to various classes co-exist as parts of the same total program, it is necessary to be able to assign names to individual objects, and also to relate objects to each other, e.g. through binary trees and various other types of list structures. A system class. “SIMSET”, introducing circular two-way lists is a part of the language.

Hence basic new types, “references”, are introduced. References are “qualified”, which implies that a given reference only may refer to objects belonging to the class mentioned in the qualification (or belonging to subclasses of the qualifying class).

1 http://www.exforsys.com/tutorials/oops-concepts/the-history-of-object-oriented-programming.html

2 Simula 67. An introduction. Compiled by Robin Hills. Published by Robin Hills (Consultants) Ltd, 1972. – 51p.


А также другие работы, которые могут Вас заинтересовать

  Основной особенностью пластинки является её способность воспринимать только распределённую нагрузку действующую главным образом в её плоскости рис. Нагружение пластины граничные условия для пластинки более разнообразны так как включают опирание продольных кромок рис.
  Стержень - элемент удлинённой формы, работающий на растяжение-сжатие от продольных (осевых) сил (рис. 12.1,а). Стержни в авиационных конструкциях - это стрингеры крыла, фюзеляжа, оперения, пояса лонжеронов, тяги проводки управления и т.д.
  Панель элемент авиационной конструкции состоящий из пластинки обшивки и стержней стрингеров подкрепляющих её. В зависимости от характера соединения обшивки со стрингерами различают панели: клёпаной конструкции; сварной клеесварной и клеевой конструкции; монолитные...
  В обычной конструкции крыла силовыми элементами являются рис.1: обшивка; лонжероны и стрингеры продольный набор крыла; нервюры поперечный набор крыла; соединения заклепочные болтовые сварные или клеевые. Конструкция крыла 1 обшивка; 2 лонжерон; 3 стрингер; 4 нервюра; 5 соединения...
  Нормальные нервюры могут устанавливаться перпендикулярно к оси крыла рис. вдоль хорд фактического обтекания крыла потоком рис. Если они поставлены по потоку то форма профиля в плоскости фактического обтекания крыла выдерживается лучше.
69156. Устройства, улучшающие взлетно-посадочные характеристики самолета 354 KB
  Устройства улучшающие взлетно посадочные характеристики самолета повысить несущие свойства крыла cyS можно обычными средствами механизации или энергетическими которые обеспечивают увеличение подъемной силы за счет силовой установки. Средства механизации повышают несущие свойства крыла.
  Полет на аппаратах легче воздуха называется воздухоплаванием а на аппаратах тяжелее воздуха авиацией от латинского vis птица. Процесс развития самолетов обусловлен взаимным влиянием и взаимодействием между наукой производством и эксплуатацией самолетов.
  Основные агрегаты самолета Самолеты относятся к летательным аппаратам тяжелее воздуха им характерен аэродинамический принцип полета. У самолетов подъемная сила Y создается за счет энергии воздушного потока омывающего несущею поверхность которая неподвижно закреплена относительно...
  В полете на самолет действуют: рис.1: тяга двигателя Р; аэродинамические силы подъемная сила Y и лобовое сопротивление Q; сила тяжести G. Эти силы показаны для самолета рассматриваемого в виде материальной точки. В общем случае силы действующие на самолет не находятся в равновесии.