Index: openacs-4/packages/acs-interface/www/doc/design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-interface/www/doc/design.html,v
diff -u -N
--- openacs-4/packages/acs-interface/www/doc/design.html 20 Apr 2001 20:51:09 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,116 +0,0 @@
-
-
-ACS Interface Requirements
-
-
-
- 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
-
-
-
-
-
-