Smalltalk в примерах/Методы: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 108:
-->
 
В Smalltalk нет такой концэпцыиконцепции. Все методы доступны для всех объектов --- они только должны посылать правильные сообщения. Однако, понятие открытых и закрытых методов полезно; вы на самом деле не хотите чтобы другие объекты посылали сообщения которые существуют только как вспомогательные. Допустим вы решылирешили изменить способ выполнения чего-нибудь. Вы не должны предохранять всё с помощью закрытого интэрфейсаинтерфейса. Вы должны суметь скрыть поведение так, чтобы другие объекты могли использовать открытый интэрфейсинтерфейс и вы могли свободно менять деталиидетали реализацыиреализации.
 
<!--
Строка 114:
-->
 
Из-за того что в Smalltalk'е нет закрытых методов, любые различия между закрытыми и открытыми методами производятся с помощью использования соглашений. Одним из таких соглашений является использование слова \verb|закрытые| в имени протокола для закрытых методов. Вы можете увидеть имя протокола \verb|закрытые| или \verb|доступ-закрыт|. Неудобство этой схемы в том, что тыВы не всегда обращаешьобращаете внимание на имя протокола. Если тыВы просматриваешьпросматриваете методы используя отправителей, implementors и сообщения, тыВы не различаешьразличаете протокол, поэтому легко можно использовать особый протокол.
 
<!--
Строка 120:
-->
 
Техника которая мне нравится описана Bob Brodd в The Smallatlk Report, Nov-Dec, 1994. Все закрытые методы имеют приставкаприставку мой. Теперь мы используеiиспользуем смысл Русского языка для предотвращения использования закрытых методов. Обычно что-нибудь вроде \verb|аОбъект| \verb|мойДелайЧтоНибудь| выглядит странно, принимая во внимание что выглядит разумным сказать \verb|сам| \verb|мойДелайЧтоНибудь|. Если тыВы где-нибудь видишвидите сообщение \verb|мой| посылаемое чему-нибудь отличному от \verb|сам|, опасайсяопасайтесь --- тыВы возможно видишвидите использование закрытого метода как будто он открытый. Здесь приведён пример использования приставкаприставки \verb|мой| для закрытого метода.
 
<!--