» Главная
eXcode.ru » Статьи » Ruby
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 15







Ruby классы




Реальный мир полон объектов, и мы можем их классифицировать. Например, при виде собаки младенец, вероятно, скажет "bow-wow" независимо от породы; и мы в самом деле можем рассматривать окружающий мир в данных категориях.

В терминологии ОО программирования, категория объектов типа "собака" называется класс, а отдеьные объекты, принадлежащие классу, называются представителями этого класса.

В общем случае, перед созданием объекта в Ruby или любом другом ОО языке, мы сперва должны определит характеристики данного класса, а затем создавать представителей. Для иллюстрации процесса, давайте сперва для примера создадим класс Dog.



ruby> class Dog

| def speak

| print "Bow Wow\n"

| end

| end

nil

В Ruby определением класса заключаеься в ограничители class и end. def внутри этого раздела открывает определение метода класса, которое, как мы рассмотрели ранее, определяет некоторое специфическое поведение объектов данного класса.

Теперь, после определения класса Dog, мы можем использовать его для создания объекта "собака".



ruby> pochi = Dog.new

#<Dog:0xbcb90>

Мы создали новый объект класса Dog, и дали ему имя pochi. Метод new любого класса создает объект данного класса. Поскольку pochi принадлежит классу Dog в соответствии с нашим определением класса он имеет все свойства, которые мы определили для класса Dog. Т.к. наша идея Dog-ности была очень простой, есть только одно действие, которое pochi можо попросить выполнить.



ruby> pochi.speak

Bow Wow

nil

Создание нового объекта класса иногда называется инстанциированием этого класса. нам нужно получить собаку, прежде чем мы будем иметь удовольствие поговорить с ней; мы не можем просто попросить class Dog погавкать для нас.



ruby> Dog.speak

ERR: (eval):1: undefined method `speak′ for Dog:class

В этом не больше смысла, чем пытаться съесть концепцию бутерброда.

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



ruby> (Dog.new).speak # or more commonly, Dog.new.speak

Bow Wow

nil

"Погодите," скажите Вы, "что там насчет несчастной, исчезающей в итоге?" Это правда - если мы не озаботимся дать ей имя (как мы сделали с pochi), автоматический сборщик мусора Ruby решит, что это ненужная бродячая собака и немилосердно избавится от нее. На самом деле это хорошо, т.к. мы можем сделать себе столько собак, сколько нам надо.

Источник: www.opennet.ru
К началу статьи





Добавил: MadvEXДата публикации: 2007-10-09 08:43:16
Рейтинг статьи:3.00 [Голосов 10]Кол-во просмотров: 3818

Комментарии читателей

Всего комментариев: 0
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какой вид спорта вы предпочитаете?
Футбол
28% (61)
Баскетбол
9% (20)
Волейбол
8% (18)
Теннис
5% (10)
Легкая атлетика
2% (5)
Хоккей
5% (11)
Лыжный спорт
3% (6)
Всеми
3% (7)
Другим
18% (38)
Я не дружу со спортом!
19% (41)

Проголосовало: 217
Все, конечно, слышали выражение "программа партии". А что было бы, если бы политические партии действительно писали программы?
Программа КПРФ
Последние версии документированы как совместимые с другими программами, но на самом деле после инсталляции стремятся их уничтожить. Интерфейс текстовый, белые буквы на красном фоне. Ядро написано более ста лет назад, с тех пор не только не исправлены старые глюки, но и добавлены многие новые. Считает, что все файлы должны быть одинакового размера. Периодически объявляет какое-нибудь расширение вредным и удаляет файлы с этим расширением по всему диску. Запросы на подтверждение имеют единственный вариант ответа: "Даешь!" Пытается выделять под свои задачи ресурсы, не заботясь об их физическом наличии, и в случае неудачи блокирует вывод сообщений об ошибках. При запросе диагностики выводит заранее сформированный файл, сообщающий, что все хорошо. Hе принимает электронную почту извне и прибивает задачи, пытающиеся ее отправить. Hе совместима с современной техникой. Hе может быть деинсталлирована легальными средствами.
Программа ЛДПР
Имеет яркий, аляповатый интерфейс и неотключаемые звуковые эффекты повышенной громкости. Может быть инсталлирована хоть на ХТ, однако заявляет о чрезвычайно высоких требованиях к системным ресурсам и на любой машине стремится захватить их как можно больше. В сообщениях активно использует нецензурную лексику, в особенности если пользователь - женщина. Постоянно грозится взломать сервер Пентагона и устроить mail-bombing президенту США, но физически не содержит модулей, способных на что-то подобное. Выводит множество предупреждений и сообщений об ошибках, в том числе самых невероятных, но никогда не виснет, не падает и не выгружается из памяти, даже если пользователь очень захочет. При выводе диагностики начинает торговаться с пользователем, обещая вывести хорошие результаты, если ей выделят больше ресурсов. Запрашивает высокую цену за инсталляцию и вдвое большую - за деинсталляцию.
Программа "Яблока"
Имеет красивый, стильный, но не всем понятный интерфейс. Отказывается работать с другими программами. Содержит мощный диагностический модуль, всегда готова дать пользователю подробный совет в любой ситуации, но на предложение выполнить конкретную операцию неизменно выдает сообщение с аргументированным объяснением, почему данная операция выполнена быть не может. Работает только на компьютерах фирмы Apple.
Программа HДР
Hекогда была главным системным модулем и по-прежнему пытается выполнять эту функцию. Имеет непонятный интерфейс и нечитабельную документацию. Сообщения об ошибках приписывает предыдущим и последующим версиям, а также внешним процессам. Пытается решить проблему нехватки ресурсов, постоянно прося пользователя вставить новую дискету и обещая впоследствии отдать две. Когда задача запрашивает память, сообщает, что память успешно выделена, но на самом деле выделяет ее не раньше чем через полгода, отобрав у других задач. В конечном итоге наглухо вешает машину.
Рейтинг: 8.6/10 (9)
Посмотреть все анекдоты

 
eXcode.ru » Статьи » Ruby