Method and system for implementing software objects

Data processing: database and file management or data structures – Database design – Data structure types

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S104000, C717S108000

Reexamination Certificate

active

06480856

ABSTRACT:

TECHNICAL FIELD
This invention relates generally to the field of computer programming language translators and more specifically to compilers and interpreters having object-oriented features.
BACKGROUND OF THE INVENTION
To cope with the rising complexity of computer programs, many modern programming languages use discrete programming structures called “objects” that present well-defined interfaces to the outside programming environment and are, in principle, self-contained. Objects typically contain information and methods that operate on the contained information or external information.
The pieces of information associated with an object are referred to as “properties” of the object. Each property has a name and can be assigned a value. The type of datum that can be assigned to a property as its value may be, for example, a datum of a simple type, such as an integer or a floating point number, or a datum of a complex type, such as a data structure or another object. When an object is defined, a programmer typically declares the properties that the object contains and specifies the data type for each property. The data type of a property indicates the type of data that the property can represent. For example, a property of the type “integer” can have values 1, 2, 3, etc., whereas a property of the type “pointer to a method” contains a memory address of the beginning of a set of instructions. The properties of an object collectively define its structure.
Each property of an object has associated attributes, such as its name, type, accessibility (e.g., in C++: public, protected, or private), and position within the object. The values of these attributes are not typically accessible to the programmer, i.e., a programmer cannot typically query an object to determine its type or its availability. In C++, a programmer can query the size of a property and could indirectly determine its position within an object by subtracting a pointer to the property from a pointer to the object. The inability to determine attributes of an object further limits programmers from specifying how a program will function.
A method comprises one or more lines of computer code that perform an operation. A method is typically executed by departing from the sequential execution of program lines at the point of the method call, jumping to the lines of code constituting the method, and then returning to the sequential execution of the program below the method call. In object-oriented programming, methods are typically defined as part of a class definition and can be applied only to objects of the defining class, or objects of classes derived from the defining class. The methods that can be applied to an object are collectively called the “behavior” of the object.
One fundamental goal of object-oriented programming is to encapsulate properties and methods within an object so that a second programmer can use an object defined by a first programmer after learning only the interface of the object. The interface contains code needed to send data to an object and to receive output, such as calculation results, error codes, and object status, from the object. The second programmer should not need to understand the internal workings of the object. Programmers should, therefore, be able to write programs that access objects defined by other programmers and reuse previously defined objects as building blocks of new programs. For example, once a programmer defines an object that represents an automated teller machine, another programmer should be able to use the automated teller machine object in different programs that, for example, model the same automated teller machines in a different banking network. Encapsulation of objects also allows a programmer to modify the internal workings of a particular object to eliminate an error or improve efficiency without having to change other parts of the program that use the object. Encapsulation thus reduces complexity in large programming endeavors.
Another fundamental goal of object-oriented programming is extensibility, i.e., allowing previously created objects to be extended to include additional properties or functionality. This is accomplished by allowing one object to inherit properties and methods from another source, such as a parent object. For example, if a new type of automated teller machine having- additional features becomes available, a programmer should be able to easily create, based upon an existing automated teller machine object, a new automated teller machine object that has additional properties and materials representing the additional features. By eliminating the duplication of programming efforts, inheritance allows existing object-oriented code to be expanded into new uses. Inheritance also facilitates building complex objects from relatively simple building blocks.
The class-instance programming model is one technique for implementing software objects. In the class-instance programming model, abstract objects, known as class objects, are defined, and then instances of the class can be declared. A class object defines the structure and methods of instances of the class, but properties in the abstract class itself do not have values. An instance of a class is an object having the structure defined by the class and capable of being assigned property values. All instances of a class, therefore, have a separate memory structure for storing the property values of that instance. Unlike properties, there is typically only one copy of each of the methods of a class. Method calls, therefore, typically include as an “invisible parameter” an indication of which instance of the class is calling or being passed to the class method.
To facilitate the creation of new classes in the class-instance programming model, a “child” class can be defined that is derived from and inherits the structure of its parent class. An instance of the child class would, therefore, have all the properties and methods defined in the parent class and any additional properties and methods defined specifically in the child class. For example, a class “Vehicle” may have derived from it a child class “Spacecraft,” an instance of which is a particular spacecraft, e.g., the space shuttle Discovery. Because the child class (Spacecraft) is a specific type of the more general parent class (Vehicle), this type of inheritance is known as an “is-a” inheritance.
To take advantage of inheritance, object-oriented programming languages are often sold with libraries of predefined abstract classes that aid programmers in building new classes and that promote use of standardized objects to build application software. Class libraries theoretically greatly simplify creation of new software.
Many programming languages allow multiple inheritance, i.e., inheriting properties and methods from more than one parent object. For example,
FIGS. 1A
,
1
B, and
1
C show, respectively, an “Airplane” class
10
, a “Boat” class
12
, and a “Seaplane” class
14
that inherits from the Boat and Airplane classes.
FIG. 1C
shows that the memory structure
16
of an instance of the derived Seaplane class
14
is a concatenation of the memory structures
18
and
20
of Boat class
12
and Airplane class
10
, respectively, the concatenation being performed in the order that the inheritance was declared. (The heavy lines of
FIGS. 1A
,
1
B, and
1
C enclose the actual memory structures and separate them from label information included in the drawings to facilitate understanding of the prior art and the invention. This convention is also followed in other figures in this specification.) Thus, properties having the same name in multiple parent classes are typically inherited in the children as separate properties. With duplicate method names, however, one method will override another and only one method will be inherited.
Unfortunately, multiple inheritance can cause encapsulation to break down in complex programming environments. One difficulty arises because inheritance lacks granularity, i.e., it is an a

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and system for implementing software 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 implementing software objects, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and system for implementing software objects will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2988549

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.