Каков пример концепции ООП «Передача сообщений» в С# (вызов методов/параметров передачи/событий запуска/обработки событий/???) и почему это называется передачей сообщений?
ООП — передача сообщений в С#
Ответы (3)
Вызовы методов.
Это называется передачей сообщений, чтобы отличить его от императивного понятия «вызов функции» и укрепить идею о том, что принимающий объект решает, что делать. На сайте вызова вы просто говорите получателю «сообщение».
Примером могут служить методы, абстрактные в классе и реализованные в подклассах; или реализации метода интерфейса. Когда вы звоните, например. GetEnumerator()
через переменную типа IEnumerable
, вы не знаете на месте вызова, какой код должен выполняться на самом деле.
Это называется передачей сообщений, чтобы отличить его от передачи параметров.
Основным преимуществом передачи сообщения является то, что вы можете изменить содержимое сообщения без изменения подписи метода, получающего сообщение.
Другая заключается в том, что несколько методов могут нуждаться в одной и той же информации, поэтому ее можно определить и изменить в одном и том же месте.
Некоторые считают, что передача сообщений и вызовы методов — это разные вещи. Мы используем этот термин взаимозаменяемо, но его значение тонкое.
В smalltalk передача сообщений была ограничена временем выполнения, и у объекта был способ определить, может ли он обработать сообщение, которое не было явно определено как метод. Ruby называет этот метод method_missing. Методы в C++, в частности, привязываются во время компиляции, и нет возможности динамически добавлять способы обработки большего количества сообщений. В C# 4.0 есть смесь, как только вы начинаете использовать динамику.
Есть еще одна школа передачи сообщений, Erlang считает, что все аргументы сообщения должны быть отделены от состояния. То есть они либо неизменяемые, либо копии.