Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: jacknk88 от Октябрь 04, 2012, 02:54:26 pm

Название: что значит TYPE REF TO, => и -> ?
Отправлено: jacknk88 от Октябрь 04, 2012, 02:54:26 pm
есть отрывок кода:
Код: You are not allowed to view links. Register or Login
DATA:   go_alv       TYPE REF TO cl_salv_table
Код: You are not allowed to view links. Register or Login
  TRY.
      cl_salv_table=>factory(
         IMPORTING
           r_salv_table = go_alv
         CHANGING
           t_table = gt_all[] ).
    CATCH cx_salv_msg .
      MESSAGE 'Ошибка при создании ALV' TYPE 'E'.
  ENDTRY.

  go_alv->set_screen_status( EXPORTING
                               report = sy-repid
                               pfstatus = 'SALV_STANDARD'
                               set_functions = CL_SALV_MODEL_BASE=>C_FUNCTIONS_ALL ).

1) что значит TYPE REF TO ?
2) что такое go_alv, что в нем содержится, какая структура будет у него?
3) что значит "=>" в cl_salv_table=>factory(... и само выражение?
4) что значит "->" в go_alv->set_screen_status( и само выражение?
         что будет содержаться в go_alv?

заранее Огромное спасибо за разъяснения!
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: Uukrul от Октябрь 04, 2012, 03:17:10 pm
Ну как бы это все таки больше вопросы по правилам ООП (Объектно Ориентированное Программирование), чем по именно абапу, поэтому я возможно буду объяснять не очень понятными словами.
You are not allowed to view links. Register or Login
1) что значит TYPE REF TO ?
Объявляем переменную, которая будет содержать ссылку на экземпляр объекта, в данном случае объекта cl_salv_table.

You are not allowed to view links. Register or Login
2) что такое go_alv, что в нем содержится, какая структура будет у него?
Это переменная которая содержит в себе адрес размещения экземпляра объекта cl_salv_table. Сам экземпляр объекта создался при вызове конструктора. Хотя в данном случае конструктор был вызван при использовании метода класса (или как еще говорят классового метода) cl_salv_table=>factory, ну тут просто такая вот реализация, которая не требует предварительного вызова конструктора.

You are not allowed to view links. Register or Login
3) что значит "=>" в cl_salv_table=>factory(... и само выражение?
4) что значит "->" в go_alv->set_screen_status( и само выражение?
В первом случае => - как уже говорилось вызов метода класса, во втором случае, -> - вызов метода экземпляра объекта. Разница между методами следующая, для вызов метода класса, не нужен созданный экземпляр, поэтому вы указываете имя класса cl_salv_table и далее имя метода. Во втором случае вы создает экземпляр, т.е. конкретную уже ALV-таблицу и далее обращаетесь к свойствам/методам этого экземпляра объекта.

You are not allowed to view links. Register or Login
         что будет содержаться в go_alv?
Ссылка на конкретный экземпляр объекта ALV-таблицы.
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: Uukrul от Октябрь 04, 2012, 03:26:17 pm
Что такое метод класса и метод экземпляра.. ну например смотрите, как создать объект в общем виде? Да есть переменная которая объявлена как XY TYPE RET TO z_class, но это только ссылка на... на пока что ни на что, так как переменная пустая. Теперь нужно создать экземпляр объекта, но как написать типа create(XY)? Ну в некоторых языках так и делают, но на самом деле что происходит, на само деле у класса z_class, есть метод который можно вызвать именно для класса и который сделает начальное создание объекта, т.е. этот метод не требует наличия конкретного уже созданного экземпляра. У этого метода есть определенные ограничения в работе по доступу к переменным и т.д. но его задача в большинстве случаев типа создать экземпляр объекта в памяти и поместить его адрес в переменную XY. Дальше уже работа будет идти с конкретными данными из памяти, т.е. работа с экземпляром (реализацией) класса z_class.
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: jacknk88 от Октябрь 04, 2012, 03:28:26 pm
Uukrul
.спасибо еще раз...Вам либо преподавать надо, либо лучше всего писать книги…help-ы...очень понятно и доступно объясняете

PS: если не секрет - вам сколько лет и какой стаж в ABAP-е?
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: Uukrul от Октябрь 04, 2012, 03:35:35 pm
You are not allowed to view links. Register or Login
Uukrul
.спасибо еще раз...Вам либо преподавать надо, либо лучше всего писать книги…help-ы...очень понятно и доступно объясняете
Ну это спорный вариант :-) а хелпы.. ну как видите потихоньку пишу  8)


You are not allowed to view links. Register or Login
PS: если не секрет - вам сколько лет и какой стаж в ABAP-е?
38, а абап.. ну это знания не из абапа, а из объектного паскаля, который позже стал Delphi и т.д. Вообще-то я не специалист по именно ABAP (хотя уже лет 15 кажется с SAP работаю), я все больше как-то вроде думал, что специалист по ММ и все что около него лежит.

PS: Между нами говоря объектный ABAP мне не нравится, ну или я не очень умею его готовить, поэтому и не нравится  :P
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: jacknk88 от Октябрь 04, 2012, 03:37:10 pm
после таких объяснений у меня все вопросы отпадают)))....хорошо когда при объяснениизатрагивается и физическая сторона вопроса
Цитировать
создать экземпляр объекта в памяти и поместить его адрес в переменную XY. Дальше уже работа будет идти с конкретными данными из памяти

кстати, для меня Delphi более понятный чем ABAP...ABAP устаревший какой-то....и не понятный язык
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: Uukrul от Октябрь 04, 2012, 03:56:17 pm
You are not allowed to view links. Register or Login
хорошо когда при объяснениизатрагивается и физическая сторона вопроса
Ну это у меня типа годы программирования на ассемблере сказываются  8)

You are not allowed to view links. Register or Login
хорошо когда при объяснениизатрагивается и физическая сторона вопроса
кстати, для меня Delphi более понятный чем ABAP...ABAP устаревший какой-то....и не понятный язык
Есть одна статейка у меня по этому поводу, не моя. я только перевод сделаю, она на как раз вот поднятую тему, что такое ABAP и не устарел ли он... может на днях выложу. Мое мнение все таки ABAP это не совсем язык, это "Среда разработки" + "Язык" что накладывает определенные ограничения, возьмите тот же язык программирования 1С например. Вообще по ходу картина такая, что системы которые написали ядро + бизнес логика на внутреннем языке, оказались более тиражируемые, чем системы просто написанные с какими-то настройками.
Название: Re: что значит TYPE REF TO, => и -> ?
Отправлено: ysichov от Октябрь 04, 2012, 05:34:20 pm
еще курс BC401 можно почитать об ООП на ABAP. Есть много небольших простых примеров.