Академический Документы
Профессиональный Документы
Культура Документы
Extreme Variability
R/3 is Framework / CORE Application
Customization
5-levels of Extensions (layered)
Release-Cycles of individual system parts
Communication
Application
Dispatcher
WP WP Work- Buffers
(ABAP) (ABAP) process
Database DB
DB - Processes
Constructor definable
not needed for static initialization of attributes
No destructor!!!
no need to free storage (garbage collection)
time of call completely undefined, problems of ordering
no destructor calls at end of transaction
only to manage external resources, but there not safe.
Instead manage via RFC connection
Class constructor when class gets 'first used'
to initialize class attributes
no class destructor
SAP America, Inc. SAP™TechEd ‘98 Aug. 31-Sept. 3, 1998 ABAP4.ppt / 19
Multiple Inheritance or Interfaces?
Choices:
only composition + aggregation, no inheritance (COM)
single inheritance + interfaces (Java, COM+, ...)
multiple inheritance (C++, Eiffel, ...)
delegation (layered objects, no common identity)
Goals:
code reuse
polymorphism, multiple levels of abstraction
the goals can be met independently!
Problems:
mostly used as 'mixin' = interface
polymorphism on all axes (substitutability is hard)
name conflicts (in distributed development!)
multiple base classes? (diamond inheritance)
combinatorial explosion for multiple classification
must be resolved by role pattern or the like
would be static, not dynamic
ArchiveMgr
IArchive
Plan
Customer Material
Nesting
Interface reference specific
I3
Interface 3
Interface 3 Interface 4 Interface 5
Interface reference interface
1 I1
Implementing
Class 1 Interface reference interface I2
2
Inheriting Interface 4
if 4
from
Class 2
Interface reference specific
I4
class 2
Object reference specific
Class 2
Part
p = b;
p.share_room(g); // runtime error!
Boy Girl
share_room(Boy) share_room(Girl)
Point
equal(Point)
Polygon
equal(Polygon) <== Syntax error??
Alternatives
p : Point;
q : Polygon;
resolve by method overloading
but: use is still surprising p.equal(q);
q.equal(p);
// P::equal
// syntax error!!
Further problems
Base-class must be designed for inheritance
Control flow complexity, fragmentation of code
extremely tight coupling to super class (distributed
development!)
'fragile base-class' (subclass can cause errors in super
class)
Testing: subclass must be tested again after every
change of super class (and vice versa!)
Inheritance no vehicle for extensibility (formerly so in
the BOR)
no
Interfaces yes (composition) yes (merge)
(abstract class)
Constructor Constructor
Constructor… just Constructor
Destructor Destructor
Questions
and
Answers