Объектно-ориентированное программирование — это методов написания программ в форме набора объектов, каждый из которых представляет экземпляр определённого класса, а классы формируют иерархию наследования.
Предыстория объектно-ориентированного программирования
Первым примером решения, которое воплотило в себе объектно-ориентированный метод, может считаться программно-аппаратный графический Планшет на основе специального оборудования DEC PDP. Сокращение расшифровывается так: Digital Equipment Corporation - компания, разработавшая Programmed Data Processor, то есть программируемый процессор данных. Этот Планшет был создан ещё в 1963-ем году молодым учёным Иваном Сазерлендом, который помогал в проектировании вертолётных симуляторов военному научному агентству DARPA. При помощи светового пера и набора ниспадающих меню на Планшете можно было нарисовать разнообразные простые рисунки на аналоговом дисплее, передвигать их и помещать в нужных местах на экране, а затем сохранять.
История объектно-ориентированного программирования
Родоначальниками объектно-ориентированного метода при написании программ являются норвежцы Оле Джохан Дал и Кристен Нюгорт, которые создали язык программирования Симула. В 1952 году Нюгорт начал заниматься моделированием больших систем реальной действительности. В 1957-ом году у него появилась возможность реализовать свои идеи на компьютере Ferranti MERCURY, но он быстро понял, что Фортран и машинные языки сильно ограничены в возможностях.
История Симулы берёт своё начало с 1962 года, когда начался проект Simulation Language, языка, который предназначался для создания программной модели метода Монте-Карло. Нюгорт в то время занимал пост директора по науке Норвежского компьютерного центра (NCC), и он начал проектирование языка для построения дискретных моделей. Нюгорт пригласил к сотрудничеству Оле Джохана Дала, который был его коллегой в экспериментальной группе Норвежского Министерства обороны.
Параллельно разрабатывались два варианта Симулы. Первый вариант, именуемый Симула I, формировался согласно контракту с одним из отделений компании Univac, а именно, Sperry Rand для машины UNIVAC 1107. Заказчики из США хотели, чтобы разрабатываемый новый язык был подобен Фортрану, но авторы проекта эту идею не стали использовать. В итоге в качестве прародителя Симулы выступил язык Алгол 60, который выбрали из-за его блочной архитектуры, набора хороших средств сокрытия данных, а также по причине его распространённости в научных кругах Европы.
Разработки второго варианта Симулы финансировал NCC. В 1965-ом году авторы проекта решили соединить информационные данные с операциями по их обработке. По итогам рассмотрения достоинств Симулы I, саммит НАТО, проходивший в 1966-ом году, принял решение продолжить его развитие. В язык были добавлены новые инструменты моделирования и имитации мультипроцессорной работы. Авторами также были введены в обиход термины «класс» и «объект». В то же время появилась технология так называемого наследования, то есть, разработчики Симулы добавили в зык возможность применения различными классами общих свойств за счёт добавления названия класса в форме префикса. Публичный анонс новой технологии вызвал живой интерес у ученых многих стран, в том числе:
- Дании,
- Германии,
- Советского Союза.
В СССР в шестидесятые годы прошлого века вышла версия Симулы для машины УРАЛ-16.
Разработка нового варианта языка Симула была завершена в начале 1967-го года. Язык мог поддерживать проектные работы по принципу «сверху вниз» при помощи виртуальной процедуры и технологий статических и динамических связываний. NCC сформировал рабочую группу, которая называлась Simula Standards Group. В последствии в эту группу вошёл Якоб Палме, который был специалистом Шведского института исследований в области обороны. Он ввёл в Симулу инструменты для сокрытия переменных. Разработка обновлённого варианта Симулы 67 была завершена в 1969-ом году и он проверялся на компьютерах Control Data. Далее язык был реализован для машин UNIVAC 1108 и IBM, но они были достаточно дорогостоящими, что не позволяло широко распространиться этому прекрасному языку программирования. Тем не менее его использовали при проектировании первых СБИС чипов Intel.
Специалист, который придумал первый персональный компьютер, Алан Кей, очень детально изучил возможности, имеющиеся в Планшете, а также Симулу и ещё пару специальных языков, а именно, - LISP, используемый для решения проблем искусственного интеллекта, и LOGO, который служил обучающей программой для освоения базовых понятий программирования. Ознакомившись с данными языками, Кей сформулировал новую идею проектирования программ, согласно которой последовательность исполняемых инструкций может быть заменена многомерной средой взаимодействия объектов, обменивающихся сообщениями между собой по асинхронному принципу. В итоге появляется возможность поддерживать подобную среду набором компьютеров, соединённых в сеть. Но для того времени такая идея была чересчур революционной.
Позднее Кей работал в Стэнфордской лаборатории искусственного интеллекта, а затем в 1972 году перешёл в известнейший научный цент Xerox PARC. Там он претворил в жизнь свои идеи при создании нового объектного языка SmallTalk, изначально именуемым им как Biological System и смоделированном на основе языка Бейсик, а впоследствии выполненном уже на ассемблере. При реализации этих проектов Кей использовал известный сегодня термин «объектно-ориентированное программирование» (ООП). Положенные в основу SmallTalk идеи ООП и на сегодняшний день остаются непревзойдёнными другими системами и языками программирования. Кея иногда величают отцом языка SmallTalk, однако матерью данного специального языка по праву считается профессор лингвистики Адель Голдберг, которая работала в то время вместе с Аланом Кеем. Именно она составила первый комплект документации к языку SmallTalk, а позже опубликовала много работ по методике объектного анализа.