2010-05-25 3 views
7

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

Мое предположение было бы, что некоторые из этих причин было бы:

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

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

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

+2

Это был бы хороший вопрос о вики сообщества. –

+3

И вы проверили Википедию и Google? Большая часть этой информации уже существует. –

+1

привет leeand00. Если вы хотите, отредактируйте этот вопрос и установите флажок «Community Wiki». Не особенно интуитивно, но это обозначает скорее вопрос обсуждения, чем технический. Если вы этого не сделаете, некоторые люди будут голосовать, чтобы закрыть вопрос. –

ответ

3

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

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

1

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

1

Хорошая книга для этого - Object-Oriented Software Construction автор: Bertrand Meyer () считается основным текстом объектно-ориентированного программирования). На странице Википедии:

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

+0

Вместо этого вы намеревались ссылаться на следующую страницу? http://en.wikipedia.org/wiki/Object-Oriented_Software_Construction – stakx

+0

@stakx Да! Спасибо что подметил это. –

1

Пол Грэм имеет хороший список причины, почему люди, как объектно-ориентированное программирование:

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

+2

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

0

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

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

Действительно ли это действительно другой вопрос. См. Do We Think in Terms of Objects.

Суть объектно-ориентированного программирования является

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

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

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

1

Теория в сторону, что действительно побуждало принятие OOPS, было появление графических интерфейсов на базе Windows.

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

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

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

2

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

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

+0

Мне нравится этот ответ! : -D Природа будет знать, как лучше всего это сделать. – leeand00

Смежные вопросы