Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-06-03
2002-04-30
Chaki, Kakali (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C709S241000, C709S241000, C717S152000
Reexamination Certificate
active
06381734
ABSTRACT:
COPYRIGHT NOTICE/PERMISSION
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright© 1998, Microsoft Corporation, All Rights Reserved.
TECHNICAL FIELD OF THE INVENTION
This invention relates generally to computer languages, and more particularly to method and apparatus for programming in object-based or object-oriented languages.
BACKGROUND OF THE INVENTION
High-level programming languages enable developers to decompose code into smaller chunks. In non-object-oriented languages the smallest unit of decomposition is a procedure or function. In object-oriented languages, the smallest unit of decomposition is typically a method on a class.
Many modern programming languages also have mechanisms that enable developers to treat these decomposition units as values that can be used as values (passed around, stored in data structures, etc.) and also be used to “call” or “invoke” the code chunk that the value represents. Different languages provide different mechanisms.
In non-object-oriented programming languages, the best known of these constructs is the function pointer found in C and C++. In functional programming languages (LISP, ML, Scheme, etc.) this style of programming is common. In object-oriented programming languages, no adequate mechanism for this purpose has been developed.
In order for a programming system (language and runtime) to enable developers to create and use method references, the present invention addresses the following design objectives:
a) defining an entity that defines the shape of the method to be referenced;
b) obtaining a reference to a method;
c) storing this reference in arbitrary data structures;
d) passing the reference to code written by other parties;
e) enabling invocation of the method by anyone holding the method reference; and
f) enabling the holder of a method reference to determine the target object and method being referenced.
Furthermore, the programming system of the present invention accomplishes the above objectives in a strongly typed manner, making it possible for:
a) developers to learn of type mismatch problems early (at compile-time) rather than late (at run-time); and
b) development tools to present information to developers about the shape of components that use delegates.
Prior Solutions to Related Problems
A number of products employ C and C++ like function pointers, such as Microsoft® Visual C++, Visual Basic and Visual Basic A, all available from Microsoft Corporation. The Windows® API makes extensive use of function pointers as well. Function pointers of this kind are deficient for a number of reasons:
a) they are not type-safe and result in casting;
b) they are not security-aware—a function pointer is just a pointer that can be inadvertently altered and then invoked, resulting in a system crash; and
c) they don't allow for accessing the target object and method.
The Microsoft® Java VM and related products have a “Java Core Reflection” system that provides a primitive form of method reference. A developer can obtain a java.lang.reflect.Method instance. This instance can be used to invoke methods in a late-bound manner. This form of reference is inherently late-bound and therefore inefficient.
SUMMARY OF THE INVENTION
According to one example embodiment of the invention, there is provided a method for programming a computer in object-based computer code, comprising using a computer to perform the steps of invoking a first method by calling a second method of an instance of a class wherein the parameters supplied to the second method are supplied to the first method, and the parameter list of the second method matches the parameter list of the first method, and further wherein the first method is identified by name and by matching the parameter list and result type of the first method with the parameter list and result type declared for the class.
According to another feature, the instance of the class is represented by a value that can be assigned to variables and passed from one procedure to another, and program code is used to invoke the second method on a variable that has been assigned a value representing an instance of the class.
In another embodiment, security permissions are associated with each class in an object-based program, and these permissions are used to determine if a call by the first method to the second method is permitted.
In still another embodiment, the first method is created automatically upon declaration of the first class.
In yet another embodiment, the first method is used to handle events of the object-based program.
In still another embodiment, one or more additional first methods are invoked with the call to the second method, wherein one or more corresponding additional sets of parameters are supplied to the second method to be supplied to the one more additional first methods, respectively. Furthermore, an invocation list is associated with the second method, wherein the invocation list specifies the first methods to be invoked. In addition, first methods may be added to and deleted from the invocation list.
In yet other embodiments, the method outlined above is incorporated into a computer program, a compiler, an interpreter and in a programming system including hardware and software.
REFERENCES:
patent: 5265206 (1993-11-01), Shackelford et al.
patent: 5341478 (1994-08-01), Travis, Jr. et al.
patent: 5421016 (1995-05-01), Conner et al.
patent: 5515536 (1996-05-01), Corbett et al.
patent: 5619710 (1997-04-01), Travis, Jr. et al.
patent: 5632034 (1997-05-01), O'Farrell
patent: 5680619 (1997-10-01), Gudmundson et al.
patent: 5689709 (1997-11-01), Corbett et al.
patent: 5732271 (1998-03-01), Berry et al.
patent: 5768505 (1998-06-01), Gilchrist et al.
patent: 5864862 (1999-01-01), Kriens et al.
patent: 5901314 (1999-05-01), Boehme et al.
patent: 5907704 (1999-05-01), Gudmundson et al.
patent: 5920720 (1999-07-01), Toutonghi et al.
patent: 5937189 (1999-08-01), Banson et al.
patent: 5941945 (1999-08-01), Aditham et al.
patent: 5991802 (1999-11-01), Allard et al.
patent: 6002867 (1999-12-01), Jazdzewski
patent: 6014710 (2000-01-01), Taluri et al.
patent: 6078743 (2000-06-01), Apte et al.
patent: 6083276 (2000-07-01), Davidson et al.
patent: 6104874 (2000-08-01), Branson et al.
patent: 6182274 (2001-01-01), Lau
patent: 6195791 (2001-02-01), Carlson et al.
patent: 6199197 (2001-03-01), Engstrom et al.
patent: 6275979 (2001-08-01), Graser et al.
patent: 6298476 (2001-10-01), Misheski et al.
patent: 546684 (1993-06-01), None
patent: 643349 (1993-06-01), None
Morrisson et al.; Java 1.1 Unleashed. Macmillian Computer Publishing, Chapters 2, 5, 16-18, 39 and 54, May 1997.*
Venners, B.; “Under the Hood: How the Java virtual machine handles method invocation and return”, Java World Magazine, accessed online Sep. 24, 1999, Retreived from the Internet: http://javaworld.com/jw-06-1999/jw-06-hood.html, Jun. 1997.*
Weeks, K.; “The Sweet Smell of C++: Rational Enhances Its Rose-ability”. Windows Tech Journal, pp 69-72, Sep. 1994.*
Taylor, D.; Object-Oriented Information Systems: Planning and Implementation. John Wiley and Sons, Inc, chapters 3 and 4, Apr. 1992.*
Morgan et al.; “Visual J++ Unleashed”. Sams.net Publishing, Chapter 3, Dec. 1996.*
Norton et al.; Peter Norton's Guide to Java Programming. Sams.net Publishing, Chapter 1, Sep. 1996.*
Singhai, A.; “Quarterware for Middleware”. IEEE/IEE Electronic Library[online], Proceedings of the 18th International Conference on Distributed Computing Systems, pp. 192-201, May 1998.*
Jia et al.; “Object-Oriented Groups for Distributed Computation Development”, IEEE/IEE Electronic Lib
Golde Peter H.
Hejlsberg Anders
Royal Chad W.
Sharpe Tracy C.
Toutonghi Michael J.
Booker Kelvin
Chaki Kakali
Microsoft Corporation
Woodcock & Washburn LLP
LandOfFree
Method, software and apparatus for referencing a method in... 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, software and apparatus for referencing a method in..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method, software and apparatus for referencing a method in... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2836057