:: Visual Foxpro, Foxpro for DOS
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
leonid
Что-то мне помнится, в бытность я в таких случаях писал dodefault() плюс пару строк кода.
Думаю, что и Олег писал то же самое.

А поскольку DODEFAULT() - лишь частный случай оператора "::", то можно считать, что все, кто использовал DODEFAULT(), пользовались и оператором "::", так как любой DODEFAULT() можно заменить на "::".

И уж в любом случае никакой принципиальной разницы между ними нет.
А поэтому либо Олег никогда не пользовался и DODEFAULT(), либо это его сообщение непонятно:
of63
Но, блин, чтобы применять эти :: приходится знать устройство класса (его "предысторию"), "это уже не то", не "класс"
Получается, что для DODEFAULT() знать устройство класса не приходится, а для "::" - приходится. Этого не может быть.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Каратаев

Сообщений: 3977
Откуда: Алматы
Дата регистрации: 04.12.2001
akvvohinc
...И уж в любом случае никакой принципиальной разницы между ними нет.
Ну не совсем так... По крайней мере в Хелп указана разница между DODEFAULT() и ::
Цитата:
Оператор области разрешения ссылки ::, в отличие от функции DODEFAULT( ), выполняет программный код события или метода родительского класса, имеющих другое имя (наименование).


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/1 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Каратаев
Ну не совсем так... По крайней мере в Хелп указана разница между DODEFAULT() и ::
Об отличиях я написал выше.

Но они непринципиальны при обсуждении высказывания:
of63
Но, блин, чтобы применять эти :: приходится знать устройство класса (его "предысторию"), "это уже не то", не "класс"
так как для DODEFAULT() "предысторию класса" знать надо так же, как и при применении оператора "::".

На мой взгляд, принцип здесь - это возможность использования кода метода родителя, а какого именно метода - непринципиально.



Исправлено 1 раз(а). Последнее : akvvohinc, 01.11.22 11:51
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Оператор области разрешения ссылки ::, в отличие от функции DODEFAULT( ), выполняет программный код события или метода родительского класса, имеющих другое имя (наименование).
Лень смотреть, как написано в оригинале, но оператор "::" выполняет код метода (события) родителя, имеющего не только другое имя, но и то же самое, иными словами - любое.

Именно поэтому оператором "::" можно заменить функцию DODEFAULT(), если есть такое желание.

PS
Заглянул всё же в оригинал Help - перевод предложения правильный, но оно само - не совсем корректно.
Надо было написать не "выполняет код метода, имеющего другое имя", а "может выполнять и код метода, имеющего другое имя".
Тогда было бы понятно, что оператор "::" может делать и то, что умеет DODEFAULT(), и кое-что ещё.



Исправлено 1 раз(а). Последнее : akvvohinc, 01.11.22 11:44
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
Я не пойму, ты прикалываешься или тролишь клуб? Одно да потому каждый день. Кому чего тут объяснять? Всем всё понятно и без профессоров.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
Я не пойму...
Всем всё понятно...
Ты уж определись.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
akvvohinc
Taran
Я не пойму...
Всем всё понятно...
Ты уж определись.

Жажда общения!
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
Каратаев
Ну не совсем так... По крайней мере в Хелп указана разница между DODEFAULT() и ::
Об отличиях я написал выше.

Но они непринципиальны при обсуждении высказывания:
of63
Но, блин, чтобы применять эти :: приходится знать устройство класса (его "предысторию"), "это уже не то", не "класс"
так как для DODEFAULT() "предысторию класса" знать надо так же, как и при применении оператора "::".

На мой взгляд, принцип здесь - это возможность использования кода метода родителя, а какого именно метода - непринципиально.

DODEFAULT() (и NODEFAULT) только для "слома/обхода" штатного VFP-механизма обработки события, типа в KeyPress... О глобальном смысле оператора "::" предложил его характер "неправмерномерности" в отрыве от штатных механизмов фокса... В пределе ты прав - не надо лазить внутрь устройства класса, или лазить по полной (читать устройство классов, разные "блэкдоры", если програмеры их оставили)
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
of63
В пределе ты прав - не надо лазить внутрь устройства класса, или лазить по полной
Я ничего не писал про "не надо лазить" внутрь класса.
В том сообщении я написал лишь, что если ты не против добавлять/изменять свойства, то чем в этом плане "хуже" методы (события)?
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Возможно я тебя не понял...
В классах (в ООП) все просто:
- есть предмет ОБЬЕКТ, обладающий свойствами (значениями и методами)
- не дОлжно знать (без необходимости) об устройстве этого обьекта

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

> В том сообщении я написал лишь, что если ты не против добавлять/изменять свойства, то чем в этом плане "хуже" методы (события)?
"Не против". Методы, правда, изменять не научился...

Изменяю методы примерно так:
- встраиваю в метод исскуственный вызов, типа в Init - встраиваю вызов ".Init_()". Метод Init_ вынужден делать в классе (или PEMSTATUS-ом как-то определяьб его наличие/отсутствие). Да , все это можно, просто, но загромождает картину... Но это и есть "програмертство", и за него платят (удивительно)...



Исправлено 2 раз(а). Последнее : of63, 02.11.22 21:57
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
of63
- не дОлжно знать (без необходимости) об устройстве этого обьекта
Ну, в этой теме речь же идет о не об объектах, а о написании дочерних классов.
Как это можно сделать не "изучив" "устройство" классов родителей вплоть до базовых?

of63
нет смысла предоставлять пользователям класса его "внутренности, подклассы", иначе идея понятия "класс" становится "расхожей"
Не пользователям, а себе самому как разработчику класса.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
как себе - конечно, знай всю иерархию! )


...Наверное так - разраб класса, на основе отцовых классов, может использовать :: или DO|NOT0DEFAULT, если это документировано, иначе - это использование - лайфхак... )
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
akvvohinc
of63
В пределе ты прав - не надо лазить внутрь устройства класса, или лазить по полной
Я ничего не писал про "не надо лазить" внутрь класса.
В том сообщении я написал лишь, что если ты не против добавлять/изменять свойства, то чем в этом плане "хуже" методы (события)?

Добавить можно, изменить нельзя.
Можно переопределить (override).
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
_vit
Добавить можно, изменить нельзя.
Можно переопределить (override).
Вот это "переопределить" я позорно и назвал "изменить".

Но если "изменить нельзя", то вы понимаете, что именно нельзя сделать, правильно?
Расшифруйте, пожалуйста, а то я никогда особенно не задумывался об этих различиях.
Или напишите, что именно можно было бы сделать с кодом метода, если бы "изменить" его было можно.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
akvvohinc
_vit
Добавить можно, изменить нельзя.
Можно переопределить (override).
Вот это "переопределить" я позорно и назвал "изменить".

Но если "изменить нельзя", то вы понимаете, что именно нельзя сделать, правильно?
Расшифруйте, пожалуйста, а то я никогда особенно не задумывался об этих различиях.

Цитата:
Какой позор, какой позор! Наш заяц вор, наш заяц вор!

Изменить значит сделать другим.
Переопределить - отменить одно определение и назначить другое.

При переопределении метода родительского класса в наследуемом, метод родительского класса не меняется он остается таким же.
Вместо функционалности реализуемой кодом метода родительского класса, определяется функциональнось реализуемая кодом наследуемого класса.


akvvohinc
Или напишите, что именно можно было бы сделать с кодом метода, если бы "изменить" его было можно.

Взять исходники родительского класса и внести правки в его метод.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
_vit
Взять исходники родительского класса и внести правки в его метод.
То есть когда речь идёт о "добавить", то имеем в виду "добавить в дочерний класс", а когда об "изменить", то сразу о родительском?
Интересно...
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Изменить значит сделать другим.
Переопределить - отменить одно определение и назначить другое.
Иными словами, когда мы что-то переопределяем, то мы не делаем это что-то другим?
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
Ну...
Можно и
Цитата:
Взять исходники родительского класса и ...
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
akvvohinc
Цитата:
Изменить значит сделать другим.
Переопределить - отменить одно определение и назначить другое.
Иными словами, когда мы что-то переопределяем, то мы не делаем это что-то другим?

Делаем.
Делаем мир другим.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
akvvohinc
Ну, в этой теме речь же идет о не об объектах, а о написании дочерних классов.

Кстати почему класс дочерний?
Класс это же - он, мужской род.
Должен быть по идее сыновий.
Ratings: 0 negative/2 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 31 (Гостей: 31)

© 2000-2024 Fox Club 
Яндекс.Метрика