Программирование на языке Ruby
Шрифт:
Таким образом, можно определить любое число методов, создающих объекты по различным спецификациям. Вопрос о том, уместен ли здесь термин «конструктор», мы оставим «языковым адвокатам».
11.1.2. Создание атрибутов экземпляра
Имени атрибута экземпляра в Ruby всегда предшествует знак
В ОО-языках часто создаются методы для доступа к атрибутам, чтобы обеспечить сокрытие данных. Мы хотим контролировать доступ к «внутренностям» объекта извне. Обычно для данной цели применяются методы чтения и установки (getter и setter), хотя в Ruby эта терминология не используется. Они просто читают (get) или устанавливают (set) значение атрибута.
Можно, конечно, запрограммировать такие функции «вручную», как показано ниже:
Ho Ruby предоставляет более короткий способ. Метод
Методы
Напомним, что для выполнения присваивания атрибуту необходимо указывать вызывающий объект, а внутри метода нужно в качестве такого объекта указывать
11.1.3. Более сложные конструкторы
По мере усложнения объектов у них появляется все больше атрибутов, которые необходимо инициализировать в момент создания. Соответствующий конструктор может оказаться длинным и запутанным, его параметры даже не будут помещаться на одной строке.
Чтобы справиться со сложностью, можно передать методу
Отметим несколько нюансов. Во-первых, мы пользуемся методами доступа к атрибутам, поэтому присваивание им значений интуитивно понятно. Во-вторых, ссылка на
Ясно, что в теле блока можно делать все, что угодно. Например, можно было бы вычислить некоторые поля на основе других.
А если вам не нужны методы доступа для всех атрибутов? Если хотите, можете избавиться от лишних, вызвав для них метод
11.1.4. Создание атрибутов и методов уровня класса
Метод или атрибут не всегда ассоциируются с конкретным экземпляром класса, они могут принадлежать самому классу. Типичным примером метода класса может служить
Санкт-Петербург. Автобиография
Научно-образовательная:
история
рейтинг книги
Клиент
Детективы:
триллеры
рейтинг книги
Неучтенный элемент. Том 7
7. Антимаг. Вне системы
Фантастика:
фэнтези
рейтинг книги
Свободный среди звезд: пилот
Вселенная EVE Online
Фантастика:
космическая фантастика
рейтинг книги
Старплекс. Конец эры (сборник)
Шедевры фантастики
Фантастика:
научная фантастика
рейтинг книги
Перехитрить богов. Дилогия
29. В одном томе
Фантастика:
научная фантастика
рейтинг книги
Газлайтер. Том 26
26. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Северянин. Трилогия
Северянин
Фантастика:
фэнтези
рейтинг книги
Город Бездны
1. Космический апокалипсис
Фантастика:
научная фантастика
космическая фантастика
рейтинг книги
Право на жизнь
Фантастика:
ужасы и мистика
рейтинг книги
Старая школа рул
1. Второгодка
Фантастика:
альтернативная история
рейтинг книги
Война с Востока. Книга об афганском походе
Проза:
военная проза
рейтинг книги
Основы общей психологии
Мастера психологии
Научно-образовательная:
психология
рейтинг книги
Американская трагедия
150. Библиотека всемирной литературы
Проза:
классическая проза
рейтинг книги