To become a OO developer you have to become a OO designer. As far as I know there is no standardization in OO design. So becoming a blackbelt OO designer is not possible. Learning OO design is a journey of doing an OO course, reading blogs, watching YouTube movies, searching for answers on the internet and practicing a lot.
Especially starting the journey is difficult. There are many terms, principles, concepts, patterns, many different opinions, many examples, websites and YouTube movies.
Where should you start?
And how to keep an overview of all these terms?
My first OO course was about 20 years ago in C++ and the goal was to make software to control an elevator. It was very educational but in my work I never had to program a moving object. Like most ABAP developers I only develop in administrative systems like SAP, so business objects are relevant for me. Business objects are orders (sale orders, purchase orders, service orders), business partners (customers, suppliers, employees), materials, PDF documents, sending emails, inbound / outbound interfaces, batch jobs, workflows and so on.
Also many OO examples are based on cats, dogs or other animals. Or examples based on a Person with only two fields. These examples are difficult to apply to large SAP Business Objects like a Sales Orders and Customers.
OO design is not a matter right or wrong. It also about your own style and preferences. My own style based on adopting styles from others which I liked and I try to stick to concepts that are followed by many programmers.
By starting this blog post and some follow up blog posts I hope to help the developers starting their journey to become an ABAP OO Designers. OData is based on OO principles, so learning good OO design will also help you design good OData services.
The start of this journey...
Often OO journeys are started with a simple example and than explaining the Object Oriented Principles (OOP). I will explain the OOP later on.
I am starting the journey with the Software Architecture of OO Class Categories, because I think it is easier to design if you know which most used Class Categories exist and which Software layers exist. The term Class Category is made up by me. The term stereotype can also be used.
My examples are based on ABAP custom software builds which I have had to build more than once for different customers as an ABAP developer. So likely you have also built them.