Каковы были причины развития объектно-ориентированного программирования? - PullRequest
7 голосов
/ 25 мая 2010

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

Я думаю, что некоторые из этих причин будут:

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

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

Чего пытались достичь люди, разработавшие ООП? Что привело их к разработке ООП?

Ответы [ 7 ]

3 голосов
/ 25 мая 2010

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

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

2 голосов
/ 26 мая 2010

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

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

1 голос
/ 26 мая 2010

Если не считать теории, то, что действительно привело к принятию OOPS, стало появление графических интерфейсов на основе Windows.

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

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

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

1 голос
/ 25 мая 2010

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

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

1 голос
/ 25 мая 2010

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

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

1 голос
/ 25 мая 2010

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

0 голосов
/ 26 мая 2010

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

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

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

Суть ООП

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

Какие именно функции предоставляются в языке ООП - это тоже другой вопрос. Смотрите страницу Википедии .

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

...