Because I am making objects whose instance variables are dependent on the constructor. I could use inheritence but the number of subclasses will get very large. So I originally thought just define the variables based on what is passed in the constructor. That way I only need one class. Why do I need a class? Well, maybe I don't. But I have half a dozen variables I want to tie together. For me the obvious choice (in Java, C++ for example) is to make a class.
--- Original Message --- From: "Raul Miller" <[email protected]> Sent: September 17, 2014 4:37 PM To: "Programming forum" <[email protected]> Subject: Re: [Jprogramming] OOJ and calling a verb from another locale Out of curiosity, why? Thanks, -- Raul On Wed, Sep 17, 2014 at 2:21 AM, Jon Hough <[email protected]> wrote: > Thanks for the answers. > I think I was trying to be a little too clever. But for my specific problem > OOP is the way to go I think. > > > --- Original Message --- > > From: "Dan Bron" <[email protected]> > Sent: September 16, 2014 4:47 AM > To: [email protected] > Subject: Re: [Jprogramming] OOJ and calling a verb from another locale > > If this was StackOverflow, I'd be able to give this post a +1. As it is, > however, the best I can do is clutter up the list by vehemently agreeing > with you :) > > -Dan > > ----- Original Message --------------- > > Subject: Re: [Jprogramming] OOJ and calling a verb from another locale > From: Devon McCormick <[email protected]> > Date: Mon, 15 Sep 2014 15:38:37 -0400 > To: J-programming forum <[email protected]> > > The basic problem is attempting to do OO for its own sake. > > On Mon, Sep 15, 2014 at 2:32 PM, Raul Miller <[email protected]> wrote: > >> I can see two things you are doing wrong here, perhaps three. >> >> First, consider: >> >> myVerb=: +/ % # >> MyVerb 1 2 3 >> |value error >> >> J is case sensitive. >> >> Next, consider: >> coname'' >> base >> myVerb_base_ >> +/ % # >> myVerb_z_ >> |value error >> >> You defined myVerb in the base locale, and not in the z locale. >> >> So that's two things. >> >> Next let's consider the design of your constructor: >> >> coclass 'MyClass' >> >> create=: verb define >> myValue=: ".y >> ) >> >> This says that you are expecting the constructor to be getting an sentence >> which will be evaluated in the object's locale. That means that any names >> would have to be defined in the z locale or in your class definition >> definition (by default your object inherits from z and the class but not >> from any other locale). So that's the possible third problem. >> >> You might instead want the object to inherit from some other locale (in >> this example, you have implied you are interested in the base locale). You >> could make the class inherit from base: >> >> coclass 'MyClass' >> coinsert 'base' >> >> create=: verb define >> myValue=: ".y >> ) >> >> Or maybe you think that that is a bad idea, and instead only want the >> sentence to be evaluated in the base locale: >> >> coclass 'MyClass' >> >> create=: verb define >> myValue=: do_base_ y >> ) >> >> (There is no way to discover what locale you were called from unless >> debugging was enabled before the call was made, or unless some >> programmer-imposed convention was used to identify the calling locale.) >> >> Of course, you could just specify the locale where the name was defined in >> the sentence you pass to the constructor: >> >> 'myVerb_base_ 1 2 3' conew 'MyClass' >> +-+ >> |5| >> +-+ >> myValue_5_ >> 2 >> >> I'd also take note of the other responses you've gotten. >> >> Thanks, >> >> -- >> Raul >> >> >> >> >> >> >> On Mon, Sep 15, 2014 at 10:38 AM, Jon Hough <[email protected]> wrote: >> >> > OOJ = object oriented J >> > I have a preexisting verb, for example lets call it myVerb =. +/ % #. >> > Next I define a class: >> > coclass 'MyClass' >> > create =: verb define myValue =: ". y >> > ) >> > So, essentialy my value is going to run the command y, using verb ". >> > So perhaps I want y to by 'myVerb 1 2 3' >> > Then, hopefully myValue will be 2. >> > So I do >> > myObj =: conew 'MyClass' >> > create__myObj 'MyVerb 1 2 3' >> > However, I get a value error for MyVerb. I asusme this is because myVerb >> > was defined in a different locale. >> > I then tried create__myObj 'MyVerb_z_ 1 2 3' >> > Which also gives a value error. >> > By the way, what I am trying to do is pass a callback to the constructor >> > of MyClass, so I can execute an arbitrary function. I am using ". to call >> > the arbitrary function. I think this method of callbacks was shown in J >> for >> > C. >> > So the question is, what is my code doing wrong? >> > Thanks. >> > >> > >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > > > > -- > Devon McCormick, CFA > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
