ACS Interface Design
I. Essentials
II. Introduction
Object subtyping incurs the overhead of inheriting the data of the super class. In addition to this overhead, we are requiring the same underlying structure of the superclass to
execute a function on the object. The ACS Interface package addresses this issue by only requiring object types to implement a set of specified methods. Importantly, object
types that implement the interface are not required to have the same underlying structure. ACS Interface also provides the additional functionality of allowing object types to
provide a more specific version of a method. For example, a hashtable object type may want to check if the object it is placing into the hashtable has implemented the hashable
interface. If the object type has implemented the interface, then we could use the object method to get the hash value, otherwise use a general function to get the hash value.
Similarly to the current relational object model, interfaces of this sort are not automatically inherited by their subtypes.
V. Design Tradeoffs
n interface is a name together with a set of methods. The datamodel only stores the information about the methods. The implementation is left to the developer in each
programming enviroment. In the ACS Interface datamodel, there is a language column for the interface. The language refers to the programming language. The implementation
of the interface is specific to the programming environment. In the Oracle PL/SQL environment each object type has an associated package and interface methods are declared
and defined within the packages. Thus calling get_hashvalue on an object type would appear as: 'object_type.get_hashvalue()'. In the TCL environment, a way of handling
interface is the use of namespace, which resolves the collisions of naming object types and methods. For Java, interfaces are are standard.
Another solution would be to retrieve the signature of the procedure by querying the data dictionary of the database for the object type packages in Oracle (Namespace in Tcl).
The problem is that we don't know what the intended functionality of the procedure was, even though the procedure had a matching signature (method name and parameter
specifications). When an object type implements an interface, it agrees to implement the methods with their intended functionalities.
VI. API
All the procedures are defined into the acs_interface package. The methods are calls to describe the interface:
- new - add new methods
- delete - remove interface
- associate_object_interface - object type implements interface
- remove_obj_type_impl - remove object type provides interface implementation.
- add_method - add new method to a interface
- add_param_to_method - add parameter to a method
- remove_method - remove method from interface
- remove_param_from_method - remove parameter from method
- obj_provide_implement - another package provides the implementation for this object type
VII. Data Model Discussion
The datamode consist of four tables to describe the interface, methods, parameters, and object type and interface association.
- acs_interface - name and language of the interface
- acs_interface_methods - methods defined for a interface
- acs_interface_method_params - parameters for the method
- acs_interface_obj_type_map - object types to interfaces
X. Future Improvements / Areas of Likely Change
- A front end to view the interface meta data
XI. Authors
XII. Revision History
Document Revision # |
Action Taken, Notes |
When? |
By Whom? |
0.2 |
Edit |
11/27/2000 |
Josh Finkler |
0.1 |
Creation |
11/27/2000 |
Khy Huang |
khy@arsdigita.com