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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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