Теория позади объектно-ориентированного программирования

Лямбда-исчисление церкви Alonzo является математической теорией позади функциональных языков. Имеет объектно-ориентированное программирование некоторую формальную теорию?

25
задан Tinku 24 June 2010 в 19:46
поделиться

3 ответа

ООП - это немного смешанный мешок возможностей, которые различные языки реализуют немного по-разному. Не существует единого формального определения ООП, но ряд людей пытались описать ООП, основываясь на общих чертах языков, претендующих на объектно-ориентированность. Из Википедии:

Бенджамин Куайр Пирс и некоторые другие исследователи считают тщетными любые попытки свести ООП к минимальному набору характеристик. Тем не менее, он выделяет фундаментальные особенности, которые поддерживают стиль программирования ООП в большинстве объектно-ориентированных языков:

  • Динамическая диспетчеризация - когда метод вызывается на объекте, объект сам определяет, какой код будет выполнен, просматривая метод во время выполнения в таблице, связанной с объектом. Эта особенность отличает объект от абстрактного типа данных (или модуля), который имеет фиксированную (статическую) реализацию операций для всех экземпляров. Это методология программирования, которая обеспечивает модульную разработку компонентов и в то же время является очень эффективной.
  • Инкапсуляция (или мультиметоды, в этом случае состояние хранится отдельно)
  • Полиморфизм подтипов
  • Наследование объектов (или делегирование)
  • Открытая рекурсия - специальная переменная (синтаксически это может быть ключевое слово), обычно называемая this или self, которая позволяет телу метода вызывать другое тело метода того же объекта. Эта переменная имеет позднюю привязку; она позволяет методу, определенному в одном классе, вызывать другой метод, определенный позже, в каком-то его подклассе.
5
ответ дан 28 November 2019 в 21:39
поделиться

Я бы заглянул на страницу википедии на OO http: // en .wikipedia.org / wiki / Объектно-ориентированное_программирование В нем есть принципы, основы и история.

Насколько я понимаю, это было эволюционное развитие функций и идей на множестве языков, которые, наконец, объединились с толчком в 90-х, направленным на то, чтобы GUI стал мейнстримом. Но я мог бы быть ужасно неправ :-D

Edit: Что еще более интересно, люди до сих пор спорят о том, «что делает объектно-ориентированный язык объектно-ориентированным». Я не уверен, что набор функций хотя бы в целом согласован, что определяет ОО язык.

2
ответ дан 28 November 2019 в 21:39
поделиться

Одно из формальных определений, с которыми я столкнулся для строгого определения и ограничения подтипов, - это Принцип подстановки Лискова . Это, конечно, не все объектно-ориентированное программирование, но все же оно может служить связующим звеном с формальными основами разработки.

3
ответ дан 28 November 2019 в 21:39
поделиться