В компьютерной программе ничто не происходит без указания о том, что оно должно произойти. В программе на языке программирования С весь код принадлежит функции и не выполняется, если функция не вызывается.

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

Объект в объектно-ориентированном программировании имеет точно определенный набор способностей — вещей, о которых он знает, как их делать. Например, вообразите объект, который представляет собаку. Мы можем разработать весьма упрощенную схему собаки, которая умеет выполнять только крайне ограниченный набор действий: есть, гулять, лаять, сидеть, лежать, спать. Цель этих умений объекта заключается в выполнении при необходимости соответствующих действий, когда вы говорите об этом объекту. Так что мы можем представить себе нашу схематичную собаку скорее как детскую игрушку-робот, способную реагировать на простые команды: Сидеть! Лежать! Голос!

В объектно-ориентированном программировании команда, отправленная объекту, называется сообщением. Для того чтобы заставить объект “собака” есть, мы отправляем сообщение eat (есть) объекту dog (собака). Этот механизм отправки сообщений является основой всей деятельности в программе. Программа полностью состоит из объектов, так что вся ее деятельность полностью состоит из отправки сообщений одним объектом другому. Сообщения имеют столь важное значение для деятельности объектно-ориентированной программы, что возникает соблазн предложить (несколько зацикленное) определение понятия объекта в терминах сообщений: объект — это сущность, которой можно отправить сообщение.

Минуту назад я сказал, что в программе на языке программирования С весь код принадлежит функции. Объектно-ориентированный аналог функции называется методом. Так, например, объект dog может иметь метод eat. Когда объекту dog отправляется сообщение eat, он отвечает на него вызовом метода eat.

Может показаться, что я не провожу четкого различия между сообщением и методом, но разница есть. Сообщение представляет собой то, что один объект говорит другому. Метод же представляет собой некоторый код, который вызывается. Связь между ними не идеально непосредственная. Вы можете отправить объекту сообщение, которое не соответствует методу этого объекта. Например, можно приказать собаке прочесть монолог Гамлета. Я не знаю, что произойдет, если вы это сделаете, — детали зависят от реализации. (Собака может просто сидеть молча или разозлится и укусит вас. А может, она возьмет томик Шекспира, выучит монолог и прочтет его.) Но эта зависимость от реализации и есть основным различием между сообщением и методом.

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

Язык программирования Objective-C является объектно-ориентированным; язык программирования С таковым не является. Поэтому мы говорим о функциях С, но о методах Objective-C.


 

 

 

Добавить комментарий


Защитный код
Обновить