create new instances of a class - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Objects : Commands Used with Objects : Object

Object - create new instances of a class

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)

newObj1:=ObjectObj

newObj1:=Object<<Obj,139688482991904>>

(2)

getDatanewObj1

0

(3)

setDatanewObj1&comma;10

10

(4)

newObj2:=ObjectnewObj1

newObj2:=Object<<Obj,139688483002816>>

(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)

newObj1:=ObjectObj2

newObj1:=Object<<Obj2,139688483019104>>

(8)

getDatanewObj1

0

(9)

newObj2:=ObjectObj2&comma;10

newObj2:=Object<<Obj2,139688483026080>>

(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:

newObj1:=Obj3

newObj1:=Object<<Obj3,139688483037248>>

(12)

getDatanewObj1

0

(13)

newObj2:=Obj310

newObj2:=Object<<Obj3,139688483044192>>

(14)

getDatanewObj2

10

(15)

See Also

ModuleApply, ModuleCopy, object, Object,builtin, Object,create, Object,method, Object,operators, procedure


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam