В чем разница между императивным и объектно-ориентированным программированием?

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

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

2 ответа

Это сложный вопрос, потому что используемые термины часто означают разные вещи для разных людей.

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

Строгие сторонники OO, скорее всего, скажут, что OO декларативен. См. Стиль объектного мышления ОО в книге Дэвида Уэста с таким именем и в этом блоге: http://www.yegor256.com/.

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

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

Я знаю, что это не очень хороший ответ, но, возможно, он полезен.

Сверху вниз, есть два основных подтипа императивных языков.

  • Процедурные языки (например, BASIC, FORTRAN) - где код и данные обрабатываются как совершенно отдельные и имеют простую парадигму код-операции-над-данными.

  • Объектно-ориентированные (ОО) языки - где данные и код (в форме методов) объединяются в объекты. В ОО-языках дополнительная структура в большей или меньшей степени навязывается метаданными (такими как информация о классе).

Другие вопросы по тегам