Классы в Ruby обозначаются словом class. Причем имя класса должно начинаться с большой буквы (а методы с маленькой); иначе получена ошибка: class/module name must be CONSTANT.
Объект класса создаётся посылкой сообщения new (в Руби методы класса вызываются путем посылки сообщения с именем метода объекты класса). Когда создаётся объект, в описании класса ищется метод initialize и вызывается:
Переменные экземпляра класса имеют имена, начинающиеся с символа @. Для различных объектов одного и того же класса эти переменные могут быть различны. К этим переменным нет доступа снаружи объекта (ни на чтение ни на запись), только через методы объекта. По умолчанию эти переменных инициализируются nil. Декларировать эти переменные не нужно, они добавляются к объекты при первой ссылке на них. Добавить методы доступа к переменным достаточно просто:
Здесь @issue и @vendor доступны для чтения, @model и @price - для записи.
В Руби существует особая переменная self которая ссылается на вызывающий метод объект (по аналогии с this C++).
Помимо переменных экземпляра класса есть переменные класса (статические переменные в С++). Эти перменные обозначаются с приставкой @@. Значение такой переменной одинаково для всех экземпляров одного и того же класса.
Так же в класс можно добавлять константы, которые именуютс с большой буквы:
Так же как и переменные методы тоже делятся на два типа: методы класса (статические в С++) и методы экземпляра класса. При объявлении методов класса указывается имя класса:
Все классы, для которых не указан предок, автоматически наследуются от Object, поэтому имеют минимальный общий набор методов, например, clone, id, inspects, to_s и т.д.
среда, 12 сентября 2007 г.
Классы и объекты в Ruby ч.1
Автор: sash_ko на 14:12
Ярлыки: Программизм, Ruby
Подписаться на:
Комментарии к сообщению (Atom)
2 комментария:
Гм. После Python'а довольно необычно выглядит объектная модель. Именно потому, что схожа.
После С++ это выглядело еще необычней - как будто узнал, что Земля не плоская, а круглая. А после того, как начал использовать Python, назад к Цпп совсем не тянет
Отправить комментарий