Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Что есть обьект в Perl?


Автор: korob2001 5.5.2003, 03:24
Ещё раз всем доброго времени суток!

Пожалуйста помогите понять, что есть обьект в Perl?
Учу Perl самостоятельно, до этого учил JavaScript. В JavaScript в ООП всё было понятно - обьектом могло быть изображение, форма и т.д.
А вот в Perl я не пойму к чему я обращаюсь.

Если вас не затруднит, поясните пожалуйста.
Заранее благодарен,
Денис

Автор: acp 5.5.2003, 11:36
Странный вопрос... Что конкретно надо?

Автор: korob2001 5.5.2003, 12:11
Да, вопрос наверное действительно странный. В книге написано:
=============================================

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

=============================================
Дело в том, что я не пойму к чему конкретно я могу обратиться. Пожалуйста если вас не затруднит приведите самый постой пример с коментариями.
Я не могу сдвинуться с места. sad.gif

Автор: korob2001 5.5.2003, 14:04
Господа, всем большое спасибо. Вопрос снимается.

Полистал ещё пару книг по Perl и понял всё про объекты из обьяснения Стивена Холзнера в "Perl специальный справочник" - действительно мудрая книга. Просто человек объясняет без лишних наворотов и мудрых слов, всё ясно как божий день.

To acp
Теперь я прекрасно понимаю, что мой вопрос был действительно непонятным.

Ещё раз всем спасибо.

Автор: acp 5.5.2003, 14:52
Цитата
Объект - это структура данных с некоторым набором...

Что-то знакомое. Вроде, перевод "Perl programming" на русский smile.gif

Так вот, с тем же прямоугольником.

Сам класс
Код

package TRectangle;

#Конструктор
#
#Вход:
#Координаты прямоугольника
#1 - X1
#2 - Y1
#3 - X2
#4 - Y2
sub New
{
 #Нулевым параметром передаётся имя класса, извлекаем его
 my $Class = shift;
 
 #Создаём объект
 my $Obj =
 {
   'X1' => $-[0],
   'Y1' => $_[1],
   'X2' => $_[2],
   'Y2' => $_[3]
 };
 
 #Связываем объект с именем класса
 bless($Obj, $Class);
 
 #Возвращаем созданный объект
 return($Obj);
}

#Подсчёт площади
sub GetSquare
{
 #Получаем объект
 my $Obj = $_[0];
 
 #Вычисляем, возвращаем...
 return(($Obj->{'X2'} - $Obj->{'X1'}) *
   ($Obj->{'Y2'} - $Obj->{'Y1'}));
}

return(1);


А вот программа, использующая класс
Код

#Подключаем модуль с описанием объектного типа
require 'TRectangle.pl';

#Вызываем конструктор, передаём в него параметры, тем самым
#создавая объект
my $Rect = TRectangle->New(1, 1, 3, 3);
#Вызываем метод объекта, получаем площадь
my $Sq = $Rect->GetSquare();

print($Sq);

Автор: acp 5.5.2003, 14:53
Пока я писал, ты сам себе ответил...

Автор: korob2001 5.5.2003, 15:39
To acp
Всё равно большое спасибо. smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)