Игаль *    (yigal_s) wrote,
Игаль *   
yigal_s

что ж такое object-oriented?

Может быть, просто представление, что программу можно написать в виде объектов, имеющих внутреннее состояние и посылающих друг другу сообщения?

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

Откуда взялось представление, что объекты моделируют реальный мир, и, следовательно, позоляют модель этого мира запрограммировать? Извините, но объекты реального мира друг другу сообщений уж никак не посылают, тем более не реализуют какие-то многоэтапные протоколы с callbacks. Поэтому доказывать эффективность object-oriented можно как угодно, только не ссылаясь на то, что они моделируют предметную область чуть ли не один в один.

Под посылкой сообщения мы здесь понимали обычный вызов функции с возвратом значения. Сделаем лёгкую вариацию - пусть у нас действительно посылаются сообщения, без ожидания "возврата", т.е. ответа. Кажется, мы получили что-то похожее на Actors. Вопрос, на сколько такая система позволяет практически строить "concurrent" алгоритмы (при том, что мы абсолютно жестко запрещаем одному объекту как-то модифицировать состояние другого, скажем, через переданные указатели на его данные) - опять же нетривиален.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 5 comments