Объекты и методы
Мы подошли к одному из наиболее важных аспектов использования объектов: каким образом метод класса применяется к объекту? Код представленный ниже использует член shares некоторого объекта:
Но какого объекта? Чтобы ответить на него, давайте вначале посмотрим, как создается объект. Наиболее простой способ объявления переменных класса выглядит так:
Это создает два объекта класса Stock, один по имени kate, а второй — joe. Теперь рассмотрим, как использовать функцию-член с одним из этих объектов. Ответ, как и в случае структур и членов структур, состоит в применении операции членства: Первый оператор вызывает show () как член объекта kate. Это значит, что метод интерпретирует shares как kate.shares, a share_val — как kate.share_val. Аналогично вызов joe.show() заставляет метод show() интерпретировать shares как joe.shares, a share_val — как joe.share_val, соответственно. Подобным же образом вызов kate. sell () запускает функцию set_tot (), как если бы это была kate.set_tot(), позволяя ей получать доступ к данным объекта kate. Каждый вновь созданный вами объект содержит хранилище для собственных внутренних переменных-членов класса, однако все объекты одного класса разделяют общий набор методов, по одной копии каждого. Предположим, например, что kate и joe — это объекты класса Stock. В этом случае kate.shares занимает один фрагмент памяти, a joe. shares — другой. Но kate. show() и joe. show() представляют собой один и тот же метод, т.е. оба выполняют один и тот же блок кода, только применяют этот код к разным данным. Вызов функции-члена — это то, что в некоторых объектно-ориентированных языках называется отправкой сообщения. Таким образом, отправка сообщения двум разным объектам вызывает один и тот же метод, который применяется к двум разным объектам (см. рис.).
|