Функциональные группы против классов - PullRequest
0 голосов
/ 19 марта 2019

В ABAP я хочу знать, какими OO-свойствами обладает группа функций.

Группа функций имеет инкапсуляцию, потому что я могу поместить глобальные переменные в группу функций. Полиморфизм и наследование невозможны в функциональной группе. Это правильно?

А как насчет разных экземпляров функциональных групп? Это вообще свойство OO и возможно ли это сделать с помощью групп функций?

1 Ответ

8 голосов
/ 19 марта 2019

Как описано в Чистом ABAP :

  • Нет экземпляров. Вы не можете создать несколько экземпляров одной и той же группы функций.
  • Нет наследства. Вы не можете наследовать или разрешать наследовать функциональные группы.
  • Нет интерфейсов. Вы не можете предоставить две реализации для одной и той же группы функций.
  • Без замены. Вы не можете обменять вызов одной функции на вызов другой с другим именем, но с идентичной подписью.
  • Без перегрузки. Вы не можете предоставить две функции с одинаковыми именами, но разными параметрами. (Кстати, это невозможно в ABAP OO.)
  • Переменная инкапсуляция. Группы функций могут скрывать внутреннее состояние в приватных переменных.
  • Метод инкапсуляции. Группы функций могут скрывать внутренние методы («подпрограммы форм»).

Как предлагают Джаггер и Сандра Росси, представьте себе группу функций как global abstract final class с static public/private членами.

...