Rumours are that here will, from WAS version 8.0, be 3 different categories of ABAP classes: Upper, Middle, and Lower. What follows is an exclusive heads-up regarding these revolutionary new features of ABAP!
- Upper classes can invoke methods of middle and lower classes (but only call favours of other upper classes).
- Upper classes are always abstract.
- Upper classes are allowed to call a specific default method of lower classes: Abuse.
- Upper classes normally refuse to be friends with most middle, and all lower classes. This will result in compilation errors (for middle class friendships) and system dumps (for lower class friendships).
- Upper classes will occasionally try to allocate a higher amount of system resources for their own use – as long as this is not noticed by the dispatcher. Whenever attention is brought to this point, the upper class in question will instantly re-model itself or automatically re-implement itself in a different application server with more generous system resources.
- The attributes of the upper classes are generally more beautiful and well-shaped than those of the middle and lower classes.
- Some of the methods of upper classes are completely empty.
- Middle classes can only invoke methods of other middle or lower classes.
- Middle classes usually have a wide range of methods, but are somewhat more demanding on system resources than lower classes (see below).
- Middle classes are relatively stable compared with lower (and upper) classes, especially during times of system stability. In an unstable system, however, they will be more prone to failing.
- Middle classes will perform noticeably better when co-existing in an application with upper classes (especially when their methods are called by upper classes). Less so if they are combined with lower classes, whereby they become more likely not to respond.
- Lower classes can only call methods of other lower classes, never those of middle or upper classes. If a lower class tries to call the methods of an upper class, the upper class will ignore it. Lower classes calling methods of a middle class may result in the middle class throwing an exception.
- Lower classes cannot even exist in an application containing upper classes. Such applications will not compile.
- (The concept of having a sub-type of lower classes called a “working class” was abandoned early on due to a high percentage of such implementations were shown to not respond to their own methods).
- Lower classes generally have very limited sets of methods, but more (and larger) attributes than upper or middle classes. Besides, the attributes of the lower classes are generally uglier, since they usually only inherit from other lower classes (never from upper classes). In general, as the system grows, the functionality of most lower classes will become less desirable and the classes will eventually make themselves redundant.
More and more applications now rely on a specific type of interfaces which are implemented via so-called Outsourced Classes (classes that are implemented in a different application server entirely, and only called upon when needed). This application server usually runs in a different time zone.