1. Все в Smalltalk-е является объектом.
Подробнее этот принцип обсудим в другой раз. Сейчас займемся другим пунктом... Ведь это первое утверждение, по сути, является "апофатическим": говорит о том, чего нет в Smalltalk-е --- "не-объектов". А вот что такое объект?
На самом деле, в этом вопросе содержится сразу два:
- Что такое объект "извне" --- как ими пользоваться?
- Что такое объект "изнутри" --- как он устроены и как создать "свой" объект?
(Объект как, соответственно, ноумен и феномен?)
Сейчас рассмотрим только первую часть.
"Извне" объект весьма прост (и в этом, наверное, и заложена вся сила ООП): объект это то, что может что-то сделать (для нас). Нужно всего лишь попросить его. Просьба --- это сообщение. В сообщении мы должны изложить суть нашей просьбы (ее "название") и указать необходимые для ее выполнения "материалы" --- другие объекты, с использованием которых просьба может быть выполнена.
Примерно так же мы пользуемся объектами в жизни (правда не всегда сообщения вербальны)?
Сообственно, мы уже "расписали" второй принцип:
2. Все вычисления выполняются через посылку сообщений.
Сообственно, мы уже "расписали" второй принцип:
2. Все вычисления выполняются через посылку сообщений.
Синтаксис Smalltalk отвечает этому принципу максимально близко к естественному языку. Для примера:
Примечание: Smalltalk, естественно, ориентирован на английский язык; в русской версии за счет наличия окончаний в различных падежах либо выглядит не столь "естественно" (лучше бы смотрелось "... по: адресу"), либо требует доработки компирятора (что, кстати, выглядит не очень сложной задачей). Но в любом случае далее будем использовать "нормальный" англоязычный синтаксис.почтальон доставь: письмо по: адрес.
В обычном, англоязычном Smalltalk-е указанный пример будет выглядеть так:
postman deliver: letter to: address.
Получили (почти) обычное предложение. Подлежащее в нем --- объект почтальон --- в терминах Smalltalk называется получателем (сообщения). Само сообщение включает в себя
- "имя" (в терминах Smalltalk --- селектор; почему селектор --- будет ясно позже, при рассмотрении внутреннего устройства объектов) --- в данном случае именем является доставь:по: --- (почти) сказуемое
- аргументы (дополнения) --- объекты письмо и адрес
см. также http://ru.smalltalk.wikia.com/wiki/%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%D1%8B
ОтветитьУдалить