Текущее время: Вт, июл 22 2025, 12:42

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Чт, июл 22 2010, 18:18 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Есть абстрактный класс A, и ряд конечных, скажем B, С и D которые наследуются от него (INHERITING FROM).

Находясь внутри класса A, как определить из какого класса создан объект - B, С или D?

Заранее благодарен!

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Чт, июл 22 2010, 19:56 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 22 2010, 19:53
Сообщения: 34
Вот так?
Code:
  CALL METHOD cl_abap_classdescr=>get_class_name
      EXPORTING
        p_object = me
      RECEIVING
        p_name   = lv_name.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Чт, июл 22 2010, 23:07 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Попробуем! Но в любом случае cl_abap_classdescr - это уже тепло! Есть куда копать. :pivo:

Не мог пройти мимо и зарегистрировался, чтобы мне помочь (первое сообщение на форуме)? ЧЕЛОВЕЧИЩЕ! Ценю!

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Пт, июл 23 2010, 10:34 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
sokov, а оно вам зачем? Есть подозрение что у вас неправильная архитектура, если потребовалось такое знание. Как-то в парадигму ООП оно не вписывается ;)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Пт, июл 23 2010, 23:21 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Задача простая: объекты B и С очень схожи - для них подходит стандартная логика методов класса А.
Для D надо её чуть изменить.

Вы намекаете на полиморфизм - стандартный метод из A переопределить в наследнике D?

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Пт, июл 23 2010, 23:38 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
sokov написал:
Задача простая: объекты B и С очень схожи - для них подходит стандартная логика методов класса А.
Для D надо её чуть изменить.

В первом посте у Вас А - абстрактный. Какая там может быть логика ? :) Либо я Вас не понимаю.

_________________
Никого не трогаю, примусы починяю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Сб, июл 24 2010, 00:53 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Абстрактный - не значит пустой! Там могут быть свойства и методы, которые он предоставляет потомкам. Ничего необычного в этом не вижу.
А вот объект из него самого сделать нельзя (абстрактный).

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

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Сб, июл 24 2010, 08:13 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
sokov написал:
Абстрактный - не значит пустой! Там могут быть свойства и методы, которые он предоставляет потомкам. Ничего необычного в этом не вижу.
А вот объект из него самого сделать нельзя (абстрактный).

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

Дык зачем Вам менять логику в классе А?
Переопределяйте её в наследниках С и Д. Там то уж известны требуемые особенности. ...

_________________
Никого не трогаю, примусы починяю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Вс, июл 25 2010, 23:07 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Да, это один из вариантов.

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал  Тема решена
СообщениеДобавлено: Пн, июл 26 2010, 10:21 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Это не один из, это правильный :)
Все остальные варианты требуют тех или иных извращений. Что не есть хорошо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ООП: определить, какой класс унаследовал
СообщениеДобавлено: Пн, июл 26 2010, 11:13 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Спасибо!

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB