Vanguard Software
Forecasting & Planning Solutions

contents.gifindex.gifprev1.gifnext1.gif

Methods

A method is a special kind of property that simply points to a function. Usually, the function is designed to operate on the data that is contained in the object.

For example, assume you want to modify the Customer object to include a function that returns the customer's mailing address as it should be printed on a mailing label. The Customer object already includes the fields that make up this address, but not in the proper form.

You can build a separate function that constructs the address as follows:

Customer_mailingaddress(obj):=
obj.name+"\n"+
obj.address+"\n"+
obj.city+" "+obj.state+"  "+obj.zipcode

This function accepts a Customer object as the input argument and then constructs an address by concatenating the proper fields in the proper order. You can call this function as follows:

Customer_mailingaddress(customer)

A better approach is to make the mailingaddress function part of the object itself. To do this, you must modify the Customer object constructor to define one additional property as follows:

Customer(name):={
.name=name;
.address="";
.city="";
.state="";
.zipcode=0;
.phonenumber="";
.mailingaddress=Customer_mailingaddress;
}

Next, you modify the function Customer_mailingaddress to replace all occurrences of the argument obj with a reference to this and remove the input argument.

Customer_mailingaddress(none):=
this.name+"\n"+
this.address+"\n"+
this.city+" "+this.state+"  "+this.zipcode

Remember that using the keyword this is optional in DScript, so you can simplify the definition as follows:

Customer_mailingaddress(none):=
.name+"\n"+
.address+"\n"+
.city+" "+.state+"  "+.zipcode

Now, you can get the mailing address for any Customer object by calling the object's mailingaddress method:

customer.mailingaddress()

When you execute an object's method, the keyword this points to the object itself. This frees you from having to pass the object as an argument.

Note that even though the function Customer_mailingaddress accepts no arguments, the function is defined with one dummy argument named none. This is done to ensure that Customer_mailingaddress is defined as a function rather than a constant. If Customer_mailingaddress had been defined as

Customer_mailingaddress:=...

or

Customer_mailingaddress():=...

the last line in the object constructor

.mailingaddress=Customer_mailingaddress;

would have set the property mailingaddress equal to the value of Customer_mailingaddress instead of setting it equal to a pointer to the function.

See Also

Shape Object Example

  Forecasting Software  |  Strategic Planning Software  |  Decision Support Software
Decision Tree Software  |  Monte Carlo Simulation Software  |  Risk Analysis Software
Portfolio Analysis Software  |  Expert System Software  |  Customer Questionnaires

Contact Us  |  Terms of Use  |  Privacy Policy  |  Site Map
Vanguard Software
© 2010 Vanguard Software Corporation
Home Products Solutions Services Customers Partners Company
Vanguard
Applying science to business management
Vanguard
Print this page   Email this page to a friend