|
Иерархия наследований
|
|||
---|---|---|---|
#18+
День добрый ! Вот есть такая задачка. Есть цепочка наследований Custom->Class1->Class2. В одном из методов класса Class2 есть необходимость проверить принадлежность передаваемого параметра к одному из классов (Class1 или Class2). Все было бы ничего и ParentClass помог бы, только вот в цепочке наследований уже три класса Custom->Class1->Class2->Class3. Как в этом случае можно узнать принадлежность передаваемого параметра к одному из базовых классов (не зная их имен естественно). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 14:25 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
_usa__83_День добрый ! Вот есть такая задачка. Есть цепочка наследований Custom->Class1->Class2. В одном из методов класса Class2 есть необходимость проверить принадлежность передаваемого параметра к одному из классов (Class1 или Class2). Все было бы ничего и ParentClass помог бы, только вот в цепочке наследований уже три класса Custom->Class1->Class2->Class3. Как в этом случае можно узнать принадлежность передаваемого параметра к одному из базовых классов (не зная их имен естественно). Классу может принадлежать Объект. Что значит "принадлежность Параметра Классу"? Что за дебильный вопрос из usa ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 14:34 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 14:35 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
авторКак в этом случае можно узнать принадлежность передаваемого параметра к одному из базовых классов (не зная их имен естественно). т.е. у объекта можно щупать св-во BaseClass - это и будет тот класс базовый - фоксовый, на основании котор. создан наследник, независимо через сколько цепочек и т.д. ... ТП, - можно дать ответ применительно к Вашей задаче, если Вы нарисуете маленький пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 14:42 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
Eugenkru10, Дебильный или нет, но, если Вы знакомы с наследованием, то наверняка представляете себе следующую схему (в FoxPro нет множественного наследования p.s.). К примеру: Custom->Пользовательский класс1->Пользовательский класс2->Пользовательский класс3->...->Пользовательский классN (Надеюсь не очень утруднил Вас обобщенным описанием). Так вот, задача состоит в том, чтобы некоторый метод (член-функция) принадлежащая классу Пользовательский классN, получающая в качестве параметра некоторую переменную (как известно язык в FoxPro не является строго типизированным) могла определить следующее: является ли данный параметр экземпляром (по-науке) какого-нибудь из классов из перечня Пользовательский класс1->... Пользовательский классN, напрямую не сравнивая имя класса получаемого из Имя_Параметра.Class с представленным списком. Пасиба... Надеюсь на этот раз мой вопрос не показался "деб...", в других языках это решается известным образом... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:01 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
прошелмимо, Ну конкретней, Class1 наследует Custom, Class2 наследует класс Class1, Class3 наследует класс Class2. В моем случае, Class1 содержит информацию о таблице БД (поля, связи, ключи), Class2 представляет собой представление (в фоксовом понимании) (по сути вещей - интерфейс, аля понятие в ява), Class3 представляет собой описание как на основе псевдонимов (набора псевдонимов) таблиц образующих топологию "звезда", собрать представление (в фоксовом понимании) создать это представление в БД и связать с ним экземпляр класса Class1, так как класс Class1 содержит информацию о произвольной таблице в БД... Приводить листинг достаточно громоздко..... Так что вот в чем собственно вопрос... Пусть есть метод Init - Class3, он описывает набор параметров, а именно centraltable (центральная таблица в топологии звезда) и beamtables (массив таблиц являющихся родительскими по отношению к centraltable в топологии звезда).... Этот init хочет "проверить" является ли каждый из экземпляров centraltable или beamtables[i] экземпляром какого нибудь из классов class1,..class2,class3. Чтобы быть уверенным в том, что имеет дело с наследником class1 (как уже было сказанно выше хранящем информацию о полях, связях и ключах таблицы)... Вот в кратце ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:14 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
_usa__83_ ...является ли данный параметр экземпляром (по-науке) какого-нибудь из классов... Вот эту фразу пытаемся понять )))))))) Как может Параметр являться Экземпляром класса??? Если ты в качестве параметра передаёшь переменную типа объект, тогда она может быть экземпляром класса, а может и не быть. А если ты хрен знает что передаёшь, то оно является простым аргументом функции (по науке :)) ). Мы твои америкосовские зафаканые мысли типа FUCK usa читать не умеем ))))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:15 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
_usa__83_Этот init хочет "проверить" является ли каждый из экземпляров centraltable или beamtables[i] экземпляром какого нибудь из классов class1,..class2,class3. Чтобы быть уверенным в том, что имеет дело с наследником class1 (как уже было сказанно выше хранящем информацию о полях, связях и ключах таблицы)... Вот в кратце я ведь показал пример, и показал что св-во бейзкласс достаточно для определения самого базового класса фокспро, на основании котор. создан наследник. если этого недостаточно и есть какие-то подобъемы в объемах общих наследников от общих классов, то наделите такие подобъемы классов своими уникальными признаками-свойствами и анализируйте их наличие(соответствие) где-то. если моих объяснений недостаточно, то дайте конкретный пример -я покажу не спорте с троллем ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:21 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
Функция GetPem() может принимать в качестве параметра не только ссылку на объект, но имя класса. Как следствие, можно получить иерархию класса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Хотя, как мне кажется, что-то в постановке задачи не правильное. Например, в описанном Вами примере я бы просто в Class1 добавил еще одно свойство, вроде UserBaseClass и записал бы в нем имя этого самого Class1. Т.е. указал бы явно базовый пользовательский класс. Базовый для требуемой иерархии классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:38 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
прошелмимо, Пнятна, пасибо, хотя и достаточно очевидно, зашить в свойствах помимо существующих ParentClass и BaseClass еще и Class1 в данном случае именно это важно... Другой вопрос нельзя ли каким-то иным способом узнать является ли переменная экземпляром класса наследника от Class1, что-т вроде сравнения указателя на базовый класс в Java (простите но привык к более строгим языкам), ведь там разрешается эта ситуация ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:42 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
Eugenkru10, Очень и очень буйный товарищ (в отношении национальной принадлежности (эт кстати инициалы - читай по буквам - 3 штуки))... Если Вам, не понятна разница между фактическими и формальными параметрами, объявляемыми в сигнатуре метода (читай - функции) то что ж, очень жаль.... И тут ни при чем происхождение Ника (написал транслитерацией дабы опять не быть подверженным ксенофобству)... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:46 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
_usa__83_, Да видимо не верно изначально написал "к базовому классу", интересует именно к Class1, от Custom требовалась минимальная функциональность - только "Контейнерность" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:49 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
_usa__83_, Дада заепись ник! Мне тож нравится ))))))) Засунь его себе в Жопу! ))))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:52 |
|
Иерархия наследований
|
|||
---|---|---|---|
#18+
_usa__83_Да видимо не верно изначально написал "к базовому классу", интересует именно к Class1, от Custom требовалась минимальная функциональность - только "Контейнерность" Так я же показал основной принцип. Крутим в цикле GetPem() со ссылкой на класс-родитель, пока имя класса родителя не станет равно базовому классу Ну, если не понятна идея, то вот код в чистом виде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2010, 18:56 |
|
|
start [/forum/topic.php?fid=41&msg=36688445&tid=1585185]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 153ms |
0 / 0 |