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

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:

getDataObj

0

(1)

newObj1ObjectObj

newObj1Object<<Obj,139704094130752>>

(2)

getDatanewObj1

0

(3)

setDatanewObj1&comma;10

10

(4)

newObj2ObjectnewObj1

newObj2Object<<Obj,139704093220672>>

(5)

getDatanewObj2

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:

getDataObj2

0

(7)

newObj1ObjectObj2

newObj1Object<<Obj2,139704093186912>>

(8)

getDatanewObj1

0

(9)

newObj2ObjectObj2&comma;10

newObj2Object<<Obj2,139704093166368>>

(10)

getDatanewObj2

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:

newObj1Obj3

newObj1Object<<Obj3,139704092409120>>

(12)

getDatanewObj1

0

(13)

newObj2Obj310

newObj2Object<<Obj3,139704092388608>>

(14)

getDatanewObj2

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