|
|
ru.website- RU.WEBSITE ------------------------------------------------------------------- From : Vinokurov Andrey 2:5020/400 24 Jan 2002 19:03:09 To : Alexander Kostiuchenko Subject : Re: Perl OOP??? -------------------------------------------------------------------------------- Привет. "Alexander Kostiuchenko" <Alexander.Kostiuchenko@p419.f672.n463.z2.fidonet.org> wrote in message news:1011496145@p419.f672.n463.z2.ftn... AK> сразу отмечу- Перл на звание "чиста обьектного" языка не претендует. Честь и AK> хвала Ларри за это. Потому как эти самые чиста ООЯП полны ограничений (прежде AK> всего - поддержка только одной парадигмы - и все, что из этого вытекает). Я с тобой полностью согласен! Сам тоже недолюбливаю "чиста объектные языки" - по эффективности генерируемого кода они сильно уступают плюсам. К счастью, плюсы не таковы. Это объектно-процедурный язык. VA> Еще один важный момент - _подлинная_ инкапсуляция предполагает VA> сокрытие данных. Этого перл, естественно, тоже не умеет - данные VA> объекта доступны всегда: AK> посмотри protected из Class::Fields, Attribute::Protected и Tie::SecureHash. AK> Вполне себе реализуют private/protected. Запрещать и ограничивать - просто... AK> Только зачем? Для безопасности. :) Про необходимость "сокрытия" читай классиков ООП. VA> Еще одна характерная деталь, свидетельствующая об искусственности VA> объектности в перле - необходимость явного "благословления" объекта, VA> т.е. приписывания его к определенному типу. И т.д. и т.п.. Я уж не VA> говорю о об отсутсвии таких "вкусностей", как перегрузка операторов. AK> Сколько можно повторять - есть в Перле перегрузка, есть. perldoc overload В каком разделе (модуле) стандартной документации она описана? Я читаю перловую доку на http://www.perldoc.com/perl5.6.1/pod/perl.html VA> Hапример - явное "благословление", т.е. явное приписывание "объекта" к VA> классу. VA> Или размещение данных объекта в некотором аналоге VA> ассоциативного массива. А для разрешения наследования придется AK> а чем это плохо ? какая вообще разница, как хранятся данные ? при использовании AK> обьектного подхода ты к ним обращаешся только через соотв. методы getter/setter AK> (для этого например можно PlusPlus.pm использовать - с ним эти методы можно так AK> и описывать: getter FIELD {}, setter FIELD {}). Чем такая "объектность" отличается от эмулированной в чистом си? Делаешь себе #include <plusplus.h> и наслаждаешься "объектностью". А плохо это тем, что снижается надежность, возрастает вероятность сделать ошибку. Hеобходимость делать какие-то лишние шаги (типа "благословления") - _потенциальный_ источник сложностей. VA> Итак, сделайте ка мне на перле "ромбовидное невиртуальное VA> наследование". Это когда VA> class L { /*...*/ }; VA> class A: public L { /*...*/ }; VA> class B: public L { /*...*/ }; VA> class AB: public A, public B { /*...*/}; VA> И чтоб все производные классы унаследовали методы своих базовых VA> классов. AK> package L; AK> package A; AK> @ISA = qw(L); AK> package B; AK> @ISA = qw(L); AK> package AB; AK> @ISA = qw(A B); AK> Оно ? Hет - см. мой ответ Алексу Харитонову. Пока. Андрей. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.website/65771a92362a.html, оценка из 5, голосов 10
|