Каковы были взгляды позади разработки Объектно-ориентированного программирования?

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

Мое предположение было бы, которым будут несколько из тех причин:

  • Пригодность для обслуживания
  • Возможность многократного использования
  • Способность документа
  • Абстракция сложных технологий
  • Динамическое расширение во времени выполнения...
  • Вероятно, некоторые вещи, о которых я еще даже не знаю...

Но у меня действительно нет многого для резервного копирования этого, и я задавался вопросом, почему ООП было разработано во-первых, и это - история.

Кем были люди, которые разработали ООП, пытающееся выполнять? Что привело их разрабатывать ООП?

7
задан leeand00 25 May 2010 в 19:43
поделиться

7 ответов

Алан Кей, который придумал термин "объектно-ориентированное программирование", объяснял свое мышление в нескольких случаях.

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

2
ответ дан 7 December 2019 в 03:12
поделиться

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

1
ответ дан 7 December 2019 в 03:12
поделиться

Теория в стороне, что действительно стимулировало принятие ООП, так это появление графических интерфейсов на базе Windows.

Если вы просто программируете терминальное приложение для DOS или Mainframe, то вам действительно не нужно ООП, конечно, оно может быть полезным, но нет убедительных причин для его внедрения. Однако как только вы начинаете кодить для любого GUI, основанного на "wimp", то эффективно работать с ним без ООП становится очень трудно, особенно как только вы выходите за рамки простой системы.

Я начинал кодить для Mac еще тогда, когда Pascal был языком по умолчанию, вам приходилось обрабатывать свой собственный главный цикл событий и делать такие вещи, как проход по прямоугольникам для перерисовки окна, когда оно было на заднем плане, закрытое окнами перед ним. Следовательно, огромные объемы даже самой простой программы были связаны с базовой инфраструктурой, и было нетривиальной задачей поддерживать чистоту интерфейсов, чтобы код не превратился в спутанную спагетти. То же самое было верно для Windows (прочитайте любую из ранних книг Чарльза Петцольда "Программирование windows") и различных других графических интерфейсов, существовавших в то время.

Принятие ООП значительно упростило это, поскольку ООП естественно подходит для графических интерфейсов. Сегодня мы считаем это очевидным и естественным, но так было не всегда, и, конечно, в то время принятие ООП считалось чем-то вроде серьезного вызова для программистов. Однако результатом стало то, что все новые программисты с конца 90-х годов выросли с ООП, потому что оно действительно необходимо для работы с графическими интерфейсами, в результате чего это практически стандартный способ написания кода, и, следовательно, его использование широко распространилось за пределы интерфейса.

1
ответ дан 7 December 2019 в 03:12
поделиться

Я думаю, что в первую очередь мотивом ООП являются эти факты (или я должен сказать предположения?):

  • мы, естественно, думаем в терминах объектов / вещей
  • объекты хороши для захвата / моделирования реальности
  • объекты могут использоваться единообразно во всем dev. процесс (требование, анализ, реализация)

Верно ли это на самом деле - другой вопрос. См. Мы думаем об объектах .

Суть ООП

  • объект = идентичность + данные + поведение

Каковы точные функции, предоставляемые в языке ООП, также является другим вопросом. См. страницу википедии .

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

0
ответ дан 7 December 2019 в 03:12
поделиться

Я всегда придерживался мнения, что объектно-ориентированное программирование было создано для того, чтобы мы могли думать о сложных проблемах так, чтобы люди могли их понять:

Все в мире является объектом, объекты имеют свойства, а некоторые объекты могут даже выполнять действия (или иметь действия, выполняемые над ними).

3
ответ дан 7 December 2019 в 03:12
поделиться

У Пола Грэма есть хороший список причин, почему людям нравится ООП:

http://www.paulgraham.com/noop.html

1
ответ дан 7 December 2019 в 03:12
поделиться

Хорошая книга для этого - Объектно-ориентированное построение программного обеспечения Бертрана Мейера (широко считается основополагающим текстом объектно-ориентированного программирования). Со страницы Википедии:

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

1
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: