При проектировании объектно-ориентированных систем (классов), важно соблюдать основополагающие принципы проектирования. К ним можно отнести список правил, составленных Робертом Мартином, которые известны под именем SOLID. SOLID это аббревиатура, где каждая из букв обозначает отдельное правило:

  • S — (Single responsibility principle — SRP), принцип единственной обязанности. На каждый класс должна быть возложена единственная обязанность.
  • O – (Open/closed principle — OCP), принцип открытости-закрытости. Программные сущности должны быть открыты для расширения, но закрыты для изменения.
  • L – (Liskov substitution principle — LSP), принцип подстановки Барбары Лисков. Объекты в программе могут быть заменены их наследниками без изменения свойств программы.
  • I – (Interface segregation principle — ISP), принцип разделения интерфейса. Много специализированных интерфейсов лучше, чем один универсальный.
  • D – (Dependency inversion principle — DIP), принцип инверсии зависимостей. Зависимости внутри системы строятся на основе абстракций. Модули верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Далее мы рассмотрим каждый из принципов подробнее.Читать далее

При моделировании какой-либо системы, построенной с помощью ООП, широко используется унифицированный язык моделирования UML. Взаимосвязи между классами в такой системе принято отображать в виде диаграммы классов. В данной статье рассмотрены основные взаимосвязи между классами и как они отражаются в ABAP коде.

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

Существуют следующие виды взаимосвязей:

relations

Читать далее

Методология тестирования, управляемого данными (DDT) применяется в автоматизации тестирования ПО, представляет собой тестирование, выполнение и верификация которого производится на основе данных, которые хранятся в БД или любых других источниках данных.

Обычно сравнивают эталонные данные с теми, что на выходе получает система из метода (функции, программы и т.п.).

Тестирование, управляемое данными подразумевает разделение юнит тестов и данных, которые в них проверяются. Юнит тесты получают эталонные данные из некого источника и сравнивают их с результатами, полученными при тестировании объекта.

Изначально ABAP Unit не предоставляет никакого сервиса для хранения и ведения тестируемых данных, как например это делают другие фреймворки для тестирования: jUnit, nUnit. В статье пойдет речь о том как обойти это недоразумение.

Читать далее

Как правило, в ABAP используется венгерская нотация для обозначения переменных.

В разных источниках правила по обозначению переменных могут отличаться, даже внутри кода SAP нет единого подхода. Есть некоторые рекомендации по обозначению, но они так же не являются полными.

С помощью анализатора кода тр. SCI можно унифицировать правила и проверять их соблюдение.  Ниже, с помощью этой транзакции, будет рассмотрена проверка тестовой программы на соглашения об именах.

Читать далее

Документация по методу.

Инкапсуляция — механизм языка программирования, ограничивающий доступ к составляющим объект компонентам (методам и свойствам), делает их приватными, то есть доступными только внутри объекта. Является важным инструментом ООП наряду с полиморфизмом, наследованием и абстракцией данных.

Как известно в ABAP можно получить доступ к приватному атрибуту другого класса, если класс запрашивающий атрибут является другом. Кроме этого способа, доступ к приватному атрибуту можно получить если мы сможем получить ссылку на него:

result

В официальной документации сказано следующее:

If references are set using GET REFERENCE, permission to access the data object in question is only checked at the position of the statement. After that, the references can be passed on to any destination and the associated data objects can be accessed from any position using the references. To prevent access to private and read-only attributes using references outside classes, do not publish references to these attributes externally. A constant or read-only input parameter, however, can never be made modifiable by passing its reference.

В ABAP редакторе есть весьма удобный генератор (строитель) типов, чтобы воспользоваться им, необходимо сделать следующее:

  • Написать в редакторе TYPES
  • Нажать Ctrl+Пробел, чтобы вызвать вспомогательное меню
  • Щелкнуть два раза по TYPES или нажать Shift+Enter

На экране необходимо указать структуру из словаря и нажать кнопку Preview TYPE, после чего можно будет выбирать необходимые поля для будущей структуры:

type_builder

В старых версиях редактора подобный инструмент можно было вызвать через вставку кода:

Читать далее

Результат:parameters