Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: fyi, small note on using Mathematica for object based programming

  • To: mathgroup at smc.vnet.net
  • Subject: [mg125976] Re: fyi, small note on using Mathematica for object based programming
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Wed, 11 Apr 2012 18:15:59 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

method[arg] is determined according to specific DownValues for a specific  
"arg" or a general pattern for objects with the Head (or other  
characteristics) of "arg". The same function or method name can be used  
for many objects and classes of objects without confusion. That behavior  
is, I would say, inherently object-oriented.

The opposite of object oriented is when function names must include class  
names, such as integerAdd[1, 2] rather than simply 1 + 2.

Judge for yourself whether the following is simpler than the OP's code,  
but I don't believe it requires mimicking C++ so closely!

methods = {index, polynomial, stiffness, mass, damping, TF,
    unitStepResponse, bodePlot, poles, display};
ClearAll @@ methods
plantList = {};
plant[stiff_, damp_, m_] :=
  Block[{s, t}, Module[{tf, poly, self = plant[1 + Length@plantList]},
    polynomial@self = 1/(m*s^2 + damp*s + stiff);
    index@self = First@self;
    stiffness@self = stiff;
    mass@self = m;
    damping@self = damp;
    tf = TransferFunctionModel[polynomial@self, s];
    TF@self = tf;
    unitStepResponse@self =
     Chop@First@OutputResponse[tf, UnitStep[t], t];
    bodePlot@self = BodePlot@tf;
    poles@self = TransferFunctionPoles@tf;
    AppendTo[plantList, self];
    self
    ]]
display[any_plant] := Through[(methods[[;; -2]])@any];
new = plant[1, 1, 10];
display@new

Bobby

On Sat, 07 Apr 2012 03:34:34 -0500, Andrzej Kozlowski  
<akozlowski at gmail.com> wrote:

> While I completely agree with the sentiment expressed in the second  
> line, I don't think the first one is true, at least not in any sense of  
> "object-oriented" I am familiar with.
>
> Andrzej
>
>
> On 6 Apr 2012, at 11:58, DrMajorBob wrote:
>
>> Mathematica is already object-oriented WITHOUT all that. What a lot of
>> overhead for nothing.
>>
>> Bobby
>>
>> On Thu, 05 Apr 2012 04:49:54 -0500, Nasser M. Abbasi <nma at 12000.org>  
>> wrote:
>>
>>>
>>> Just FYI,
>>>
>>> I wrote this small note on using Mathematica for object-based
>>> programming. I found that it works really well for me.
>>>
>>> Nothing too advanced, just a simple way of using Module[] but
>>> in a way to emulate object based programming that I did not know
>>> about before.
>>>
>>> http://12000.org/my_notes/object_based_in_mathematica/v1.html
>>>
>>> --Nasser
>>>
>>
>>
>> --
>> DrMajorBob at yahoo.com
>>
>


-- 
DrMajorBob at yahoo.com



  • Prev by Date: Re: Incorrect parallel computation
  • Next by Date: Re: evaluate to True?
  • Previous by thread: Re: fyi, small note on using Mathematica for object
  • Next by thread: Re: fyi, small note on using Mathematica for object based programming