![]() |
Модераторы: korob2001, ginnie Страницы: (10) Все « Первая ... 2 3 [4] 5 6 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Shaggie,
для этого есть Class::ISA(::self_and_super_path как пример) там можно и смотреть... может кто скажет, что тут имеете ввиду под "закрытыми методами класса (по типу private)"? ![]() |
|||
|
||||
Nab |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
С этого и начнем ![]() проверка на принадлежность определенному классу делается проще всего:
А я искал способ определить приведена ли ссылка. Второе, private метод это метод который в принципе не виден и не может быть вызван, ВООБЩЕ. А реализовывается он при необходимости таким способом:
все , метод say может быть вызван только внутри ФАЙЛА, содержащего пакет и нигде более... даж потомки не смогут, если они определены в другом файле. Если как в Вашем примере, то они могут звать друг друга как угодно... Это сообщение отредактировал(а) Nab - 12.2.2007, 13:46 -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
||||||
|
|||||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
А если файл Dog.pm
сделать таким:
то отраютают и gav и gav_gav. но во втором случае собака всеже залает ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Nab, спасибо.
Проверка на принадлежность определенному классу - действительно удобно. То, что мне и было нужно. Восстанавливаю затертое. Да, появилось замыкание. Да, метод say теперь является ссылкой на функцию, вызываемой из метода gav, и теперь никто не может обратиться к методу say... Но работает такой код:
В результате к ЗАКРЫТОМУ методу say можно обратиться через ОТКРЫТЫЙ метод gav. То есть в любом случае закрытость методов от использования потомками/простым кодом не обеспечивается. Это сообщение отредактировал(а) Shaggie - 13.2.2007, 08:17 |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Shaggie, не верный вывод....
gav сделан как обертка, только для демонстрации. Не обязательно он нужен, зато метод сохраненный в преременной $say не доступен нигде кроме пакета в котором он определен, то есть если не делать gav, то это реально приватный метод получается... А изменилось то что метод say в вашем варианте вызвать можно, но будет ошибка при выполнении, а вызвать мой заключенный в переменную метод вам не даст компилятор еще на стадии компиляции сказав что метода то такого и нет... И переопределить такой метод в потомке не получиться, а только можно создать свой с таким же именем... Так что разница есть и существенная... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Nab, не понимаю:
|
|||
|
||||
Nab |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Да уж ![]()
Это не просто определение функции после которой не нужно ставить точку с запятой, это операция присваивания... И верно будет так:
И вообще Shaggie, боюсь нас не верно поймут, потому как эта теме вынесена в прикрепленные, именно для обсуждения тонкостей и нюансов, а также некоторых неочевидных вещей. А те вопросы которые мы сейчас обсуждаем описаны в большинстве учебников по Перл. Может стоит задавать непонятные вопросы в обычном форуме, а эту тему оставить для всяких "извращенцев от перла" ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
||||||||
|
|||||||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
||||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
tishaishii, спасибо. Насколько я понял, модуль private применяет в качестве основы обеспечения закрытости доступа модули Class::Fields::Attribs (обеспечивающий имена констант) и Class::Fields::Fuxor (обеспечивающий функции установки и проверки прав доступа), а от себя проверяет наличие подчеркивания перед именем закрытого метода. Этакий use strict для объектного программирования
![]() Nab, код скопирован из твоего примера ![]() ![]() Всем спасибо! ![]() |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Это сообщение отредактировал(а) tishaishii - 15.2.2007, 07:23 |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
Нашел книжку, что давно хотел почитать.
Damian Conway: Object Oriented Perl Отсюда: http://www.progteam.com/liter/?teh=Perl Книжка на английском языке. Статус ее (бесплатная, платная, ворованная) - непонятен. По крайней мере, я нигде не нашел описания статуса. Господа модераторы, решите, пожалуйста, что делать с этой ссылкой и насколько "пправильно" (со всех точек зрения) размещение этой ссылки здесь и вообще размещение этой ссылки. --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
stan777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 29.1.2007 Репутация: нет Всего: нет |
Чесно говоря недавно сталкнулся с ООП в перле, более сложной и непонятной схемы не видел
![]() Это сообщение отредактировал(а) stan777 - 19.2.2007, 00:07 |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Что, собственно, не понятно было?
Удивило bless? Ну так new, в принципе, по же самое делает. |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
stan777, было бы интересно сравнить на простых примерах, например реализацию парадигм ОО Программирования в C# и perl. Если тебе интересно, конечно, приведи простенькие примеры.
А еще лучше - подготовь маленькую диаграмку (в UML, например) того механизма, который ты хотел бы видеть в Perl и реализацию этого на C#. Я думаю, не мне одному будет интересно поразбираться. ![]() Это сообщение отредактировал(а) Zuzu - 19.2.2007, 10:06 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
А что там сравнивать-то? 1:1.
ООП, по-моему, имеет единую идеологию. В конце-концов, я не в полне понимаю выражения "на уровне компилляции" и "на уровне выполнения". Всё равно, в итоге, происходит сравнение и всякие "если", даже, если это не было скомпилировано. Другое дело - скорость работы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |