Getting Started Documentation Glish Learn More Programming Contact Us
Version 1.9 Build 1367
News FAQ
Search Home


next up previous
Next: Basic Data Values and Objects Up: No Title Previous: No Title

Introduction

Some of the important classes in any object-oriented data processing system should be those based upon mathematical entities and operations. This was recognized early in the AIPS++ project and led to a prototyping emphasis on array-based classes and tables. However, the next layer of classes, and the way algorithms would be organized around mathematical classes, has not been defined with any completeness. In addition, there may be some additional attributes of vectors, matrices, and arrays that would be useful in a system where they are viewed as mathematical ``components'' of tables. Therefore we will discuss mvector, mmatrix, and marray classes that are almost identical to AIPS++ vector, matrix, and array classes, but will have one additional public attribute (dimnames) and additional methods to support the mathematical system being proposed. In addition, we will discuss a mtable class which represents a view of a table as part of a vector, matrix, etc., oriented system of mathematical processing, and which will have additonal methods reflecting its role relative to other data objects. The classes we propose represent a design in the context of a framework, a ``larger building block'' than classes (Firesmith 1993, Mössenböck 1992). This framework is designed for data processing using mathematical objects. This document is planned to be complete, but will stop short of specific astronomical applications using these mathematics based classes.

An important distinction should be made between the data objects and methods discussed in this document and the C++ classes, designed for power and efficiency, that they are based upon. This distinction deals with the data objects from the point of view of the scientist and not necessarily the programmer. We tacitly assume that some of these objects, and some of their methods, are intended solely to make programming and algorithm modification easy for astronomers who are not experts at the sublety and power of C++. Providing efficient classes is basic, but a secondary goal of providing classes expressing a scientist's point of view is probably essential to easy use of AIPS++ for programming by astronomers.

Some of the concepts to be discussed are derived from a study of the object-oriented data processing and visualization language S (Becker et al. 1988, Chambers and Hastie 1991), using the version released by AT & T in 1991, as implemented for workstations and PCs in the commercial implementation product S+ .

The issues that we should consider are not solely based upon a list of classes with associated methods. For this reason we will use a slightly different language to describe needed entities. First of all, we will discuss fundamental data objects in a manner which seemingly separates these data objects from the methods that use, modify, and create basic data objects. It seems useful to distinguish between the user-invocation of a method, methods that represent specific algorithms using data objects, and the methods of classes that instantiate data objects.

Amongst the completely new data objects that we suggest as useful for AIPS++ are: mlist, factor, grid, and the abovementioned mtable. Minor augmentation of the attributes of AIPS++ Array-based classes, and addition of important methods for Array-based classes will be described for marray, mvector, and mmatrix. An mtable is a table when viewed as a collection of one or more vectors of numeric and/or string types, each with the same length, with character string labeling for rows and columns.


next up previous
Next: Basic Data Values and Objects Up: No Title Previous: No Title
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc., Washington, D.C.

Return to AIPS++ Home Page
2006-03-28