Janus SOAP User Language Interface: Difference between revisions

From m204wiki
Jump to navigation Jump to search
mNo edit summary
Line 4: Line 4:


The <var class="product">Janus SOAP ULI</var> was a collection of extensions to <var class="product">User Language</var> (now <var class="product">[[:Category:SOUL|SOUL]]</var>), so it
The <var class="product">Janus SOAP ULI</var> was a collection of extensions to <var class="product">User Language</var> (now <var class="product">[[:Category:SOUL|SOUL]]</var>), so it
did not alter the behavior of <var class="product">SOUL/User Language</var>. This is important on two counts:
did not alter the behavior of <var class="product">User Language</var>. This is important on two counts:
<ol>
<ol>
<li><var class="product">SOUL</var> applications continue to work as they always have when the extensions formerly known as the <var class="product">Janus SOAP ULI</var> are used.
<li><var class="product">SOUL</var> applications continue to work as they always have when the extensions formerly known as the <var class="product">Janus SOAP ULI</var> are used.
Line 16: Line 16:
</ul></ol>
</ul></ol>


Many of the extensions in the <var class="product">Janus SOAP ULI</var> come from [http://en.wikipedia.org/wiki/Object-oriented_programming Object-Oriented Programming] (sometimes abbreviated O-O) concepts that are implemented in many languages. These languages include [http://en.wikipedia.org/wiki/Visual_Basic Visual Basic .Net] (often called VB.Net), [http://en.wikipedia.org/wiki/Java_%28programming_language%29 Java], [http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29 Eiffel], [http://en.wikipedia.org/wiki/Perl Perl], [http://en.wikipedia.org/wiki/C%2B%2B C++], [http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29 C#], [http://en.wikipedia.org/wiki/Smalltalk Smalltalk], [http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python], and [http://en.wikipedia.org/wiki/Ruby_%28programming_language%29 Ruby]. While most languages
Many of the extensions in the <var class="product">Janus SOAP ULI</var> come from [http://en.wikipedia.org/wiki/Object-oriented_programming Object-Oriented Programming] (sometimes abbreviated OOP) concepts that are implemented in many languages. These languages include [http://en.wikipedia.org/wiki/Visual_Basic Visual Basic .Net] (often called VB.Net), [http://en.wikipedia.org/wiki/Java_%28programming_language%29 Java], [http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29 Eiffel], [http://en.wikipedia.org/wiki/Perl Perl], [http://en.wikipedia.org/wiki/C%2B%2B C++], [http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29 C#], [http://en.wikipedia.org/wiki/Smalltalk Smalltalk], [http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python], and [http://en.wikipedia.org/wiki/Ruby_%28programming_language%29 Ruby]. While most languages
differ in the implementation details of O-O concepts, especially in syntax, the basic
differ in the implementation details of OO concepts, especially in syntax, the basic
concepts are incorporated in all these languages, and once a programmer understands
concepts are incorporated in all these languages, and once a programmer understands
these concepts, it is usually relatively easy to move between the languages.
these concepts, it is usually relatively easy to move between the languages.


The <var class="product">SOUL</var> O-O extensions support many but not all the concepts
The <var class="product">SOUL</var> OO extensions support many but not all the concepts
discussed in books about object-oriented programming.
discussed in books about object-oriented programming.
Specifically there is no explicit support for [http://en.wikipedia.org/wiki/Interface_(8object-oriented_programming) interfaces], though multiple inheritance
Specifically there is no explicit support for [http://en.wikipedia.org/wiki/Interface_(8object-oriented_programming) interfaces], though multiple inheritance
Line 27: Line 27:
Overloading is also not supported but optional parameters provide most of what overloading is used for, and provides it much more easily.
Overloading is also not supported but optional parameters provide most of what overloading is used for, and provides it much more easily.


<var class="product">SOUL</var> without the O-O extensions generally corresponds to a [http://en.wikipedia.org/wiki/Procedural_programming procedural programming language].
<var class="product">SOUL</var> without the OO extensions generally corresponds to a [http://en.wikipedia.org/wiki/Procedural_programming procedural programming language].


If you are an experienced <var class="product">User Language</var> programmer, you might find [[Getting started with object-oriented programming for User Language programmers]] to be useful.
If you are an experienced <var class="product">User Language</var> programmer, you might find [[Getting started with object-oriented programming for User Language programmers]] to be useful.

Revision as of 00:36, 10 October 2013

The Janus SOAP User Language Interface, also referred to as the Janus SOAP ULI, was a collection of extensions to User Language originally intended to simplify the coding of applications that use the Janus SOAP product. In version 7.5 of Model 204, the Janus SOAP ULI was separated from Janus SOAP and incorporated into Model 204 under Rocket Software.

The Janus SOAP ULI was a collection of extensions to User Language (now SOUL), so it did not alter the behavior of User Language. This is important on two counts:

  1. SOUL applications continue to work as they always have when the extensions formerly known as the Janus SOAP ULI are used.
  2. All documentation concerning SOUL/User Language is still valid. Besides the topics contained in Category:SOUL, additional sources for information about SOUL include:

Many of the extensions in the Janus SOAP ULI come from Object-Oriented Programming (sometimes abbreviated OOP) concepts that are implemented in many languages. These languages include Visual Basic .Net (often called VB.Net), Java, Eiffel, Perl, C++, C#, Smalltalk, Python, and Ruby. While most languages differ in the implementation details of OO concepts, especially in syntax, the basic concepts are incorporated in all these languages, and once a programmer understands these concepts, it is usually relatively easy to move between the languages.

The SOUL OO extensions support many but not all the concepts discussed in books about object-oriented programming. Specifically there is no explicit support for interfaces, though multiple inheritance provides all the functionality provided by interfaces with more flexibility. Overloading is also not supported but optional parameters provide most of what overloading is used for, and provides it much more easily.

SOUL without the OO extensions generally corresponds to a procedural programming language.

If you are an experienced User Language programmer, you might find Getting started with object-oriented programming for User Language programmers to be useful.

Object-oriented terminology

One of the difficulties of learning new programming concepts is that if they are sufficiently complex, like those of object orientation, their explication can seem circular: the explanation of concept A refers to concept B, which refers to concept C, which refers back to concept A. In the introductory stages, you may may have little choice but to understand that this problem exists, use this understanding to avoid getting "stuck" on a concept that is not fully understood, and move on until the complex web of concepts become clear.

To facilitate the initial learning process and to provide a quick reference for when the concepts become clearer, brief definitions of key object-oriented (OO) terms are described here:

Class
A description of the information held in a particular type of object and the methods (actions) that can be performed on the object. There may be many instances of objects for any given class.
Collection
A special class that, as the name suggests, is used to manage collections or groups of variables. A collection provides the same functionality as an array, though with much more flexibility. The term collection is not standard object-oriented programming terminology but it is used in Visual Basic in almost exactly the same way, and it is a concept present in most object-oriented programming languages.
Constructor
A method that processes an object immediately after the object is instantiated (created). The term constructor is standard object-oriented programming terminology, but it does not appear as an actual keyword in most object-oriented programming languages.
Discard
A method that removes an existing object explicitly. Object discarding may also be implicit, and a DeepDiscard method is available to discard an object and the objects it references.
Enumeration
A special class that is used to denote a group of names with a limited set of values like, for example, "True" and "False". The term "enumeration" is not standard object-oriented programming terminology and, in fact, appears in many object-oriented languages as a procedural-language leftover often called "Enum".
Exception
A class used to describe an error situation that is detected during the execution of a method. The method's code uses a Throw statement to output an exception object (which must be specified in the method declaration). If the code that invokes the method is within a Try block, it can use a Catch block, following the invocation and within the Try block, to respond to an exception and thereby to prevent request cancellation.
Function
A method that returns a value and cannot be set, that is, appear on the left side of an assignment. The term function is not standard object-oriented programming terminology, but it is used in Visual Basic in almost exactly the same way.
Intrinsic method
A method which is applied not to an object, but rather to a string or number, providing the benefits of object-oriented syntax when operating on strings and numbers.
Instantiation
The process of the creation of an object, that is, an instance of a class.
Member
A method or variable in a class. A class is completely defined by its members, that is, its variables and methods.
Method
A block of code that performs a particular operation in a particular class. In the Janus SOAP ULI there are four kinds of methods: subroutines, functions, properties, and constructors. Methods can be shared that is, perform work independent of any instance of a class; or they can be non-shared, that is, perform work on an object, a specific instance of a class.
Object
A collection of information that describes some entity, often some "real world" entity such as a customer or an order or a part. Objects have state, that is, information contained in the object can change over time, usually as a result of methods (actions) performed against the object. Objects are never accessed directly but are accessed via references. Most important among these references are object variables that, in User Language, look very much like regular %variables. The specific information held in an object and the methods (actions) available on an object are described by the object's class.
Method object
In a User Language statement that invokes a method into operation, the object variable that references the object on which the method operates.
Property
A method that reflects the state of an object (class instance) or, in the case of a shared property, the state of the class as a whole. Properties can be read-only or settable, that is, valid on the left side of an assignment statement. Properties appear to users of a class to be almost identical to class variables, but they actually have code behind them that is run when the property value is set or retrieved. The term property is not standard object-oriented programming terminology, but it is used in Visual Basic in almost exactly the same way.
Structure
A standard layout of variables. A structure is similar to an image, except a structure can have many instances while an image can only have one. Structure variables have the layout indicated by the structure definition, and they can be assigned to each other. Structures are different from objects in that structures are passed by value rather than by reference. Structures can be thought of as composite datatypes.
Subroutine
A method that does not return a value and cannot be set, that is, appear on the left side of an assignment. The term subroutine is not standard object-oriented programming terminology, but it is used in Visual Basic in almost exactly the same way, though in VB subroutines are denoted by the word Sub.
Variable
A container for a value. In addition to the standard User Language variables, the Janus SOAP ULI provides class variables. A class variable can either be shared (accessed via a class reference and not associated with a specific object) or non-shared (accessed via an object reference and associated with that object).

Non-OO User Language enhancements

The enhancements listed here are not associated with object-oriented programming. Originally provided by Sirius Software, they are part of SOUL as of version 7.5 of Model 204:

User Language statements

Additional enhancements to User Language

See also