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

MathGroup Archive 2010

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

Search the Archive

Question about classes package

  • To: mathgroup at smc.vnet.net
  • Subject: [mg114488] Question about classes package
  • From: "tarpanelli at libero.it" <tarpanelli at libero.it>
  • Date: Sun, 5 Dec 2010 21:55:02 -0500 (EST)
  • Reply-to: "tarpanelli at libero.it" <tarpanelli at libero.it>

Hello, 
I am trying to understand how works the classes package but I am get some 
error.

I use the following packages:
Needs["Classes`"]
Needs["Calendar`"]

This is the class that I use to store some simple data
Class[ YieldCurveData, Object,
 {dfact, now},
 {
  {new, (new[super]; dfact = #1; now = #2) &},
  {DiscountFactors, dfact &},
  {NowDate, now &}
  }
 ]

This is a module that I would like to use as method inside the subclass 
YieldCurveTermStructure:
P[df_, t0_, t_] := Module[{n, dftable, B},
   n = Length[df];
   dftable = 
    Table[{DaysBetween[t0, df[[i, 1]]]/365, df[[i, 2]]}, {i, 3, n}];
   B = Interpolation[dftable];
   B[t]
   ];

This is the subclass YieldCurveTermStructure
Class[YieldCurveTermStructure, YieldCurveData,
 {},
 {
  {new, new[super] &},
  {B, P[dfact, now, #] &}
  }
 ]

dfact -> discfactors := ( {
   {Dates, DiscountFactors},
   {{2010, 12, 2}, 1},
   {{2010, 12, 9}, 0.9998531},
   {{2011, 1, 3}, 0.999336},
   {{2011, 2, 2}, 0.9985969},
   {{2011, 3, 2}, 0.9973797},
   {{2011, 6, 2}, 0.9938465},
   {{2011, 9, 2}, 0.9907724},
   {{2011, 12, 2}, 0.9875571},
   {{2012, 12, 3}, 0.9691823},
   {{2013, 12, 2}, 0.9463441},
   {{2014, 12, 2}, 0.9181686},
   {{2015, 12, 2}, 0.8864135},
   {{2022, 12, 2}, 0.6633433},
   {{2030, 12, 2}, 0.4846045},
   {{2035, 12, 3}, 0.4212485}
  }

now ->nowdate = {2010, 12, 2};

I can create correctly the first class as:
ycdata = new[YieldCurveData, discfactors, nowdate]

but when I go to create the subclass
yc = new[YieldCurveTermStructure, dfact, now]


I get this error:

Function::slotn: Slot number 1 in (new[Classes`Private`raise[-
YieldCurveTermStructure-,Object]];dfact$743=#1;now$743=#2)& cannot be filled 
from ((new[Classes`Private`raise[-YieldCurveTermStructure-,Object]];
dfact$743=#1;now$743=#2)&)[]. >>
Function::slotn: Slot number 2 in (new[Classes`Private`raise[-
YieldCurveTermStructure-,Object]];dfact$743=#1;now$743=#2)& cannot be filled 
from ((new[Classes`Private`raise[-YieldCurveTermStructure-,Object]];
dfact$743=#1;now$743=#2)&)[]. >>


Any suggestion and correctlion it would be great,

thank you 

P






  • Prev by Date: Re: Mathematica and Symbolic Manipulation
  • Next by Date: Re: Why this cannot be solved (Mathematica 8)
  • Previous by thread: ANN: CMake module for Mathematica
  • Next by thread: Mathematica 8.0 Compile[] bug