Текущее время: Пн, июл 21 2025, 21:30

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Overwrite-exit для метода класса
СообщениеДобавлено: Чт, окт 14 2010, 17:04 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Всем привет.

Столкнулся с такой проблемой: расширяю класс и делаю к его методу overwrite-exit. А в этом exit недоступны приватные атрибуты и методы класса. Дело в том, что для exit'а генерируется ещё один локальный класс и в нем метод. Хоть в новом методе и есть ссылка экзмемпляр расширяемого класса, но private атрибуты в нем уже не видны.

Такой механизм нелогичен т.к. теряется смысл делать подобный exit. К тому же для методов web dynpro такой проблемы нет. Там exit видит все, что видит исходный метод.

Есть какие-то способы прозрачно подменить метод стандартного класса своим методом так, чтобы все, что доступно в исходном методе, было доступно и в новом?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Чт, окт 14 2010, 17:15 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
ну чисто теоретически, тем же методом перезаписи добавить методы, достающие нужные вам параметры. нет?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Чт, окт 14 2010, 21:27 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
holocron написал(а):
ну чисто теоретически, тем же методом перезаписи добавить методы, достающие нужные вам параметры. нет?


Теоретически я про это тоже думал, но это как-то громоздко и неправильно: ради расширения одного метода писать ещё 20 методов для доставания и записи данных. Должен быть красивый способ!

Вообще если бы тот стандартный класс не был бы конечным, то все было бы красиво: я бы от него унаследовался и переопределил нужный мне метод. Но он конечный.

Есть ещё решение - скопировать класс целиком. Но пока не хочу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Пт, окт 15 2010, 05:54 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
profiteer написал(а):
Вообще если бы тот стандартный класс не был бы конечным, то все было бы красиво: я бы от него унаследовался и переопределил нужный мне метод. Но он конечный.

В принципе есть вариант как обойти свойство 'Конечный' - сделать не глобальный класс, через SE24, а локальный, в вашей программе:
Code:
CLASS my_alv DEFINITION INHERITING FROM CL_GUI_ALV_GRID.
....
ENDCLASS.

Но к приватным данным вы разумеется доступа все равно не получите, только к PROTECTED

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Пт, окт 15 2010, 09:25 
Специалист
Специалист

Зарегистрирован:
Пт, окт 20 2006, 16:39
Сообщения: 230
еще есть такая штука, как дружественный класс, возможно поможет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Пт, окт 15 2010, 19:09 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
demst написал(а):
еще есть такая штука, как дружественный класс, возможно поможет...


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

В общем я все-таки пошел по пути добавления методов для обращения к данным класса т.к. в данном случае их оказалось немного нужно.


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

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


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

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


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

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