Full text: XVIIth ISPRS Congress (Part B4)

ria 
h other 
1g with 
chwise 
asking, 
system 
atform 
)y nOW 
to the 
rtise all 
ear per 
or there 
imputer 
TRAN: 
ifferent 
cal user 
tabases 
e. The 
ide any 
rtantly, 
and the 
These 
nguage 
iented 
ularity, 
of the 
xndable 
tion to 
rained, 
erating 
1d with 
igence, 
riented 
<, even 
wever, 
ructure 
jaining 
' ones, 
ses to 
rithms) 
ssages 
lled by 
ygrams 
ymmon 
ms, on 
+ type 
grated 
s. This 
r most 
ith the 
terms 
> name 
> then, 
riented 
one. Object-oriented on the surface, it is capable of 
integrating modules belonging to both the procedural 
and the object oriented world. 
Implementing Autonomous Classes 
An autonomous class is, in the most general terms, a 
complex object incorporating (and encapsulating) data, 
instructions, and hardware. Full implementation of such 
classes is possible in distributed processing (network; 
specialized hardware on PC boards). But member 
programs integrated into a system and running in 
parallel in a multitasking environment represent the 
most typical, though not full, implementation of 
autonomous classes. 
The main programming languages to be used are C+ + 
and FORTRAN. Within one autonomous class, mixing 
them is to be avoided as far as possible (for reasons of 
portability). The choice of the language depends on: 
- the class being machine bound (preference for C+ +), 
- the class performing mainly numerics (mild preference 
for FORTRAN), 
- the availability of re-usable routines (usually 
FORTRAN), 
- the experience of the programmer (in most cases 
FORTRAN). 
An autonomous class is invoked by the user, or by other 
classes. It may command over any number of 
autonomous sub-classes thus building a family of 
autonomous classes. To enable the invocation of an 
autonomous class in different environments, different 
heading statements have to be provided by conditional 
compilation ("ifdef"-s). In FORTRAN, a PROGRAM 
statement enables SPAWN-type invocation in a 
multitasking environment. An alternative SUBROUTINE 
statement allows to build large linked systems, e.g., on 
mainframes, or the invocation of classes stored in 
dynamic link libraries (DLLs). In C+ +, similar 
techniques are possible in using corresponding CLASS 
statements and names. In the future, special headers for 
Object Request Brokers (ORBs) may become necessary, 
so to enable invocation by some Distributed Object 
Management technology. 
Communication among classes is via messages 
(strings). These are reminiscent of simplified directives 
of a command language. Simplicity is partly due to 
polymorphism: the object knows how to react to the 
same message in different cases, it itself knows best 
the stage and ways of processing, etc. - In the case of 
the autonomous class for topological database 
management (TOPDB), messages acquire the syntax of 
TOPSQL (Loitsch, Molnar, 1991). Autonomous classes 
should be able to handle simultaneous requests (I/O 
queues, buffering, priority handling, managing 
asynchronous communication with other classes, record 
locking, periodic checking of external requests to pause 
or abort, etc.). Multithreaded operating systems (0S/2) 
provide fine means to keep an autonomous class alert to 
messages while working on a task. Data communication 
should proceed either via the database management 
class (TOPDB), or via binary files, memory pipes, shared 
memory, and similar means. Synchronization via 
semaphores, flags, etc. becomes very important - e.g. if 
one class is processing a patch (tile) of data, and the 
database class is simultaneously retrieving data for the 
next patch. 
The developer should clearly differentiate between 
classes 
- mainly machine bound, and 
- practically machine independent, 
963 
and furthermore, concerning invocation: 
- public classes, to be invoked 
- by the user, 
- by (other classes of) the system, and 
- private ones, being subclasses to some other class. 
For a system integrating autonomous classes, "lazy" 
processing is characteristic: without user requests, there 
happens nothing, and in answering requests, there 
happens the minimum necessary. This principle of 
laziness is a sometimes shortsighted but generally 
advantageous principle of economy. 
APPLYING THE CLASS-ORIENTED ARCHITECTURE 
TO BUILD A DTM SYSTEM 
Instead of an Introduction: 
DTMX, and Hints on an Object-Oriented View of DTMs 
DTMX was to be a modular system of software tools 
operating on a (transitory) database, designed to provide 
a highly flexible interface between DTMs of different 
structure and origin (Molnar, 1984). It never 
materialized as a whole but its definitions of a 
sequential data exchange format became widely used in 
Austria (data in this format cover many times the 
territory of the country). 
The database of DTMX was to contain patches of data 
with a code characterizing the level of processing 
achieved on them ("lazy" processing). Examples of such 
levels are 'raw data', 'data edited', 'DTM grid', 'contour 
lines interpolated', etc. Modules have been foreseen to 
perform the upward transition from one level of 
processing to the next. With some system on the input 
side yielding data of one level (e.g. raw data), and the 
system on the output side requesting another level (e.g. 
contour lines), DTMX was thought to perform this 
transition automatically by piping internally the 
corresponding tools. 
So, the design of DTMX did have the potential to result 
in a fully-fledged DTM-ing system. Looking at it in an 
object-oriented way, a DTM is a complex object 
encapsulating both data and processing code, uniting 
information with intelligence. DTMX corresponds to this 
definition. - It is the origin of some major principles to 
follow here. 
Classifying Autonomous Classes of the DTM 
According to their role, the autonomous classes of the 
DTM can be classified as 
- FRAME (or Management) classes such as 
Management of User Interactions (including on-line 
context-sensitive help), Database Management, 
Project Management including Error and Message 
History, Graphics Management, and others; 
- KERNEL (or Application) classes such as Input 
Data, DTM Surfaces, Graphic Sheets, 
Isolines/Zones/Distributions, Views, the products 
of DTM-Algebra, of DTM Classification, of DTM 
Exploration - and numerous other classes. 
In thinking of an autonomous class (e.g. in planning 
one), the main consideration should be given to its 
instances (i.e. to its data records); the methods 
(algorithms) operating on them should be considered as 
means. This corresponds to the aspects of the user, and 
to an object-oriented analysis and modeling of the task. 
In this sense, notes on some of the classes of the DTM 
follow. 
 
	        
Waiting...

Note to user

Dear user,

In response to current developments in the web technology used by the Goobi viewer, the software no longer supports your browser.

Please use one of the following browsers to display this page correctly.

Thank you.