Electrical computers and digital processing systems: multicomput – Computer-to-computer data routing – Least weight routing
Reexamination Certificate
1998-06-16
2002-06-25
Courtenay, III, St. John (Department: 2151)
Electrical computers and digital processing systems: multicomput
Computer-to-computer data routing
Least weight routing
Reexamination Certificate
active
06412020
ABSTRACT:
TECHNICAL FIELD
This invention relates generally to a computer method and system of implementing interfaces to objects and, more specifically, to a method and system for aggregating objects.
BACKGROUND OF THE INVENTION
As computer software systems increase in sophistication, the cost of developing the software increases. To minimize the cost of software development, developers often share code. Prior development efforts use three types of code sharing:
(1) source code sharing, (2) compiled code sharing, and (3) code sharing through inheritance.
Also, as computer software systems increase in sophistication, software users are faced with increasing complexity in the maintenance and extensibility of their computer systems. Each time a software vendor generates new or improved capabilities, a user who wishes to benefit must somehow incorporate these modifications. Prior systems generally require such a user to upgrade the software, forcing the user to reinstall at least part of the system. Or, prior systems require a software developer to plan in advance for future enhancements and install the necessary hooks in the original system to enable the loading of enhancements at some future time.
Moreover, if a user wishes to enhance the capabilities of a piece of currently owned software by adding capabilities produced by a different software vendor, the user is limited by what the software vendors planned in advance. Prior systems generally require that the two pieces of software be designed to work together and that at least one of the software pieces have knowledge of what capabilities the other provides. Thus, in prior systems, later modifications to code as well as the sharing of code must be accounted for in the software design.
Source and compiled code sharing have been widely used for many years. Source code sharing refers to the use of the same source code by various computer programs or by various versions of the same computer program. For example, a spreadsheet program typically includes source code to control the displaying of a spreadsheet. If a word processing program allows the embedding of a spreadsheet within a document, then the word processing program may use the same (or slightly modified) source code to display the embedded spreadsheet object. Source code sharing is typically used by a single developer who develops multiple computer programs. For competitive reasons, developers typically do not share their source code with other developers. Moreover, even if the developer does share source code, the recipient of source code typically modifies the source code and thus two versions of the source code are maintained.
Compiled code sharing refers to the use of the same compiled code by various computer programs. The compiled code is typically stored in a static or dynamic link library. Compiled code stored in a static link library is shared when a computer program is linked before execution. Compiled code stored In a dynamic link library is shared when a computer program is linked during execution. The developer of a spell checking program, for example, may share compiled code by compiling the program and storing the compiled code in a static link library. The static link library can then be distributed to developers of word processing programs who can link the compiled spell checking code into their word processing program. The developer of the spell checking program typically needs to modify the compiled code to meet special requirements of certain developers. These modifications tend to increase the complexity (and size) of the compiled code and may conflict with requirements of other recipients. Alternatively, the developer could distribute multiple versions of the static link library. However, the maintenance of multiple versions can be costly.
Object-oriented programming techniques employ a concept referred to as inheritance to allow the sharing of code. An overview of well-known object-oriented programming techniques is provided, since the present invention is described below using object-oriented programming. Two common characteristics of object-oriented programming languages are support for data encapsulation and data type inheritance. Data encapsulation refers to the binding of functions and data. Inheritance refers to the ability to declare a data type in terms of other data types.
In the C++ language, object-oriented techniques are supported through the use of classes. A class is a user-defined type. A class declaration describes the data members and function members of the class. For example, the following declaration defines data members and a function member of a class named CIRCLE.
class CIRCLE
{ public:
int x, y;
int radius;
void draw();
};
Variables x and y specify the center location of a circle and variable radius specifies the radius of the circle. These variables are referred to as data members of the class CIRCLE. The function draw is a user-defined function that draws the circle of the specified radius at the specified location. The function draw is referred to as a function member of class CIRCLE. The data members and function members of a class are bound together in that the function operates on an instance of the class. An instance of a class is also called an object of the class.
In the syntax of C++, the following statement declares the objects a and b to be of type class CIRCLE.
CIRCLE a, b;
This declaration causes the allocation of memory for the objects a and b. The following statements assign data to the data members of objects a and b.
a.x=2;
a.y=2;
a.radius=1;
b.x=4;
b.y=5;
b.radius=2;
The following statements are used to draw the circles defined by objects a and b.
a.draw( );
b.draw( );
A derived class is a class that inherits the characteristics—data members and function members—of its base classes. For example, the following derived class CIRCLE_FILL inherits the characteristics of the base class CIRCLE.
class CIRCLE_FILL : CIRCLE
{ public:
int pattern;
void fill();
};
This declaration specifies that class CIRCLE_FILL includes all the data and function members that are in class CIRCLE in addition to those data and function members introduced in the declaration of class CIRCLE_FILL, that is, data member pattern and function member fill. In this example, class CIRCLE_FILL has data members x, y, radius, and pattern and function members draw and fill. Class CIRCLE_FILL is said to “inherit” the characteristics of class CIRCLE. A class that inherits the characteristics of another class is a derived class (e.g., CIRCLE_FILL). A class that does not inherit the characteristics of another class is a primary (root) class (e.g., CIRCLE). A class whose characteristics are inherited by another class is a base class (e.g., CIRCLE is a base class of CIRCLE_FILL). A derived class may inherit the characteristics of several classes, that is, a derived class may have several base classes. This is referred to as multiple inheritance.
A derived class may specify that a base class is to be inherited virtually. Virtual inheritance of a base class means that only one instance of the virtual base class exists in the derived class. For example, the following is an example of a derived class with two nonvirtual base classes.
class CIRCLE_
1
: CIRCLE { . . . };
class CIRCLE_
2
: CIRCLE { . . . };
class PATTERN: CIRCLE_
1
, CIRCLE_
2
{ . . . };
In this declaration class PATTERN inherits class CIRCLE twice nonvirtually through classes CIRCLE_
1
and CIRCLE_
2
. There are two instances of class CIRCLE in class PATTERN.
The following is an example of a derived class with two virtual base classes.
class CIRCLE_
1
: virtual CIRCLE { . . . };
class CIRCLE_
2
: virtual CIRCLE { . . . };
class PATTERN: CIRCLE_
1
, CIRCLE_
2
{ . . . };
The derived class PATTERN inherits class CIRCLE twice virtually through classes CIRCLE_
1
and CIRCLE_
2
. Since the class CIRCLE is virtually inherited twice, there
Hodges C. Douglas
Jung Edward
Koppolu Srinivasa R.
Leach Paul
MacKichan Barry B.
Courtenay III St. John
Klarquist & Sparkman, LLP
Microsoft Corporation
LandOfFree
Method and system for aggregating objects does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method and system for aggregating objects, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and system for aggregating objects will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2949878