A few years ago I was invited by a customer to give a course on ABAP OO (aka. ABAP Objects). During the training, I then learned that some participants attended the third course on this topic in the company. It was impossible for you to implement the content ad hoc after  3-5 days of training. After a few days of dealing with the daily business, only 1% of the learned material had remained in memory. This was the starting point for me to look for a better solution and also to try to solve the arising problems better.

"All software engineers can program, but not all programmers can engineer Software." - Samer Buna

I am a great advocate of the Asian philosophy Kaizen. The constant preoccupation with the question of what can be improved sometimes leads to impressive results. I want to share these with you here...

A new way of Object orientation?

No, don't worry, the Object-oriented programming is not reinvented here. From my point of view, this is simply a further logical development on the subject of Object orientation and a successful introduction to the subject!

Although the topic is so old and there is most of the literature related to OO, in the course of my work as a Technology Coach, I have noticed that especially the obvious content is sometimes not easy to master. Since the beginnings of this paradigm, there have always been different interpretations of what the correct application should look like. It led to different methods of Object orientation. To name a few:

  • OOP according to the principles of Alan Kay
  • Radical OO after Ralf Westphal
  • Elegant Objects according to Yegor Bugayenko

This led me a few years ago to rethink this paradigm and put it together in such a way that it keeps some higher purpose in focus.

I finished thinking through Applied OO  in 2017 already. It is designed to focus on testable software, robustness and clean code. This has led to a significant reduction in the set of OO syntax usage. (Yes, sorry for the fans of maximum use of any syntax command, this procedure is probably nothing for you…) This is exactly because the application has always had the highest priority here. Once I couldn’t simply apply principles or practices with added value to the three Higher Goals, I stopped wasting time searching for other solutions.

Applied OO

Applied OO are primarily guidelines that I finished about 2 years ago on how to learn and practice OO. From the beginning, “higher” goals such as testable software, robustness, and clean code principles are used methods. The focus was on practitioners who have reached a high level, as well as content from my coaching work.

The results are contents that include modern ABAP, but also guidelines that eventually lead to good designs. I tried this by myself and then later with my coaching clients with incredible success… This year I decided to share this kind of OO…
The goal of the Applied OO (Applied Object-Oriented) approach is to use guidelines in Object-Oriented Programming that also enable an impact in terms of clean code, testability, and simple, robust solutions. The principles used are named below, and there is also an indication of influences from known developers.

Values

The values Applied OO tries to achieve:

  • Building Testable Software
  • Building Robust Software
  • Building Clean Code

Principles

  • Alan Kay's Principles
  • Clean Code
  • IOSP after Ralf Westphal
  • Refactoring
  • Symmetry
  • 4Rules of Simple Design by J.B. Rainsberger
  • Domain and Role-based
  • Simplicity

Practices

  • Modern ABAP
  • Subset to ABAP Objects

Focus on Principles

Applied OO is still Object-oriented programming, with the goal of high practical usability. For this reason, only the principles and practices of colleagues who have had a significant influence on our industry with their high level of programming mastery can be found.

Here in unsorted order the ones that influenced me the most (order has no value and is not sorted in any way): Alan Kay, Kent Beck, Uncle Bob, Ralf Westphal, Eric Evans, Trygve Reenskaug, James O. Coplien, J.B. Rainsberger, Martin Fowler, Michael Feathers, Kristen Nygaard, Ole-Johan Dahl

Principles of Applied OO

The following overview shows the used principles of Applied OO.

Indeed we are purposely only working on a level of principles, in order to be able to use these correctly for each context-referred situation. I don’t believe in cheap programming tricks that bring immediate redemption. For me, software development is strongly associated with software engineering and software craftsmanship.
Applied OO is not the holy grail, but it is a commonly used programming practice of many coaching clients and we have tested it ourselves for years. The results achieved there have to lead me to present Applied OO to the community. Very good results can only be achieved with the right mindset.

"It is not enough for code to work." - Robert C. Martin

Further information

If you want to learn more, you can watch my presentation at the SAP Inside Track Vienna 2018 : SITVienna 2018 - Damir Majer

Or you are invited to visit one of my webinars: "Webinars powered by majcon" on this topic.