Object - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


Object

create new instances of a class

 

Calling Sequence

Parameters

Description

Examples

Compatibility

Calling Sequence

Object( obj )

Object( obj, arg1, ... )

Parameters

obj

-

an instance of an object

arg1, ...

-

arguments to a ModuleCopy routine

Description

• 

The Object routine creates a new object by copying a given object.

• 

For information on declaring new objects, see Object,create.  For an overview of objects in Maple, see object.

• 

If the given object does not implement a ModuleCopy routine, then Object copies the values for each not-static member of the given object obj into the new object.

• 

If the object does implement a ModuleCopy routine, then calling Object will invoke the ModuleCopy routine.  Any additional parameters given (arg1, ...) will also be passed on to the ModuleCopy routine.

• 

Implementing a ModuleApply routine that calls Object to invoke ModuleCopy makes applying the prototype object into an object factory.

Examples

> 

module Obj()
   option object;
   local data := 0;

   export getData::static := proc( self::Obj )
       self:-data;
   end;

   export setData::static := proc( self::Obj, d )
       self:-data := d;
   end;
end:

> 

getData⁡Obj

0

(1)
> 

newObj1≔Object⁡Obj

newObj1≔Object<<Obj,125204555726816>>

(2)
> 

getData⁡newObj1

0

(3)
> 

setData⁡newObj1&comma;10

10

(4)
> 

newObj2≔Object⁡newObj1

newObj2≔Object<<Obj,125204555694048>>

(5)
> 

getData⁡newObj2

10

(6)
> 

module Obj2()
   option object;
   local data := 0;

   export getData::static := proc( self::Obj2 )
       self:-data;
   end;

   export ModuleCopy::static := proc( self::Obj2, proto::Obj2, d, $ )
       if ( _npassed = 2 ) then
           self:-data := proto:-data;
       else
           self:-data := d;
       end;
   end;
end:

> 

getData⁡Obj2

0

(7)
> 

newObj1≔Object⁡Obj2

newObj1≔Object<<Obj2,125204554955872>>

(8)
> 

getData⁡newObj1

0

(9)
> 

newObj2≔Object⁡Obj2&comma;10

newObj2≔Object<<Obj2,125204554935584>>

(10)
> 

getData⁡newObj2

10

(11)
> 

module Obj3()
   option object;
   local data := 0;

   export getData::static := proc( self::Obj3 )
       self:-data;
   end;

   export ModuleApply::static := proc( )
       Object( Obj3, _passed );
   end;

   export ModuleCopy::static := proc( self::Obj3, proto::Obj3, d, $ )
       if ( _npassed = 2 ) then
           self:-data := proto:-data;
       else
           self:-data := d;
       end;
   end;
end:

> 

newObj1≔Obj3⁡

newObj1≔Object<<Obj3,125204554911552>>

(12)
> 

getData⁡newObj1

0

(13)
> 

newObj2≔Obj3⁡10

newObj2≔Object<<Obj3,125204553789504>>

(14)
> 

getData⁡newObj2

10

(15)

Compatibility

• 

The Object command was introduced in Maple 16.

• 

For more information on Maple 16 changes, see Updates in Maple 16.

See Also

ModuleApply

ModuleCopy

object

Object,builtin

Object,create

Object,function_mechanism

Object,method

Object,operators

procedure