It's going to take me a while to understand what you've done.
"I'd be very interested in a concrete example of how using objects
simplifies matters."
Well, in this case, the objects just ties three related things together (names 
and balance). Using three different arrays is a recipe for disaster, and also 
gets very confusing, at least in a Java/C++ context. Perhaps in J using three 
lists is the way to go?


> Date: Wed, 4 Jun 2014 11:43:50 -0400
> From: [email protected]
> To: [email protected]
> Subject: Re: [Jprogramming] More Object List Questions
> 
> I suppose you could do something like this:
> 
>    coclass 'Account'
>    create =: verb define
> balance =: 0
> fname =: ''
> lname =: ''
> )
>    coclass 'base'
>    list =. 5 $ < 'Account'
>    objs=. conew &> list
>    objs
> +-+-+-+-+-+
> |1|2|3|4|5|
> +-+-+-+-+-+
>    conames''
> 1         2         3         4         5         Account
>    (<''''''),~&.>(<'create_'),&.>(":&.>objs),&.><'_'
> +-----------+-----------+-----------+-----------+-----------+
> |create_1_''|create_2_''|create_3_''|create_4_''|create_5_''|
> +-----------+-----------+-----------+-----------+-----------+
>    ".&>(<''''''),~&.>(<'create_'),&.>(":&.>objs),&.><'_'
> 
> 
> 
> 
> 
>    balance_1_
> 0
>    (<'balance_'),&.>(":&.>objs),&.><'_'
> +----------+----------+----------+----------+----------+
> |balance_1_|balance_2_|balance_3_|balance_4_|balance_5_|
> +----------+----------+----------+----------+----------+
>    ".&>(<'balance_'),&.>(":&.>objs),&.><'_'
> 0 0 0 0 0
> 
> But this all seems rather clumsy compared to simply using arrays directly
> rather than this vector of object names, e.g.:
> 
>    'bals fnms lnms'=.
> (5$0);('Jon';'Dick';'Harry';'Sally';'May');<'Smith';'Jones';'Black';'White';'Eye'
>    bals
> 0 0 0 0 0
>    fnms
> +---+----+-----+-----+---+
> |Jon|Dick|Harry|Sally|May|
> +---+----+-----+-----+---+
>    lnms
> +-----+-----+-----+-----+---+
> |Smith|Jones|Black|White|Eye|
> +-----+-----+-----+-----+---+
> 
> I'd be very interested in a concrete example of how using objects
> simplifies matters.
> 
> 
> 
> On Wed, Jun 4, 2014 at 11:16 AM, Jon Hough <[email protected]> wrote:
> 
> > I hope I'm not spamming the forum with my questions.
> > I am still getting my head around OOP in J.
> > My class:
> >
> > coclass 'Account'
> >
> > create =: verb define
> > balance =: 0
> > fname =: ''
> > lname =: ''
> > )
> > It's just a dummy 'Account' class with balance, first name and last name.
> > I want to create several objects in a list:
> >
> > list =. 5 $ < 'Account'
> >
> > list
> >
> >
> > ┌───────┬───────┬───────┬───────┬───────┐│Account│Account│Account│Account│Account│└───────┴───────┴───────┴───────┴───────┘
> >
> > So I have my list of 5 Accounts. Now I want to be able to access their
> > fields, functions by indexing the list.
> > e.g. in Java if I have an array of Accounts
> > Account[] accounts = new Account[5];
> > I can access the fields from the array index:
> > for(int i = 0; i<5; i++){
> >           accounts[i].fname = "No name given";
> > }
> > In J,
> > I tried the following:
> > create__(1{list)
> > |value error: create__
> > |       create__(1{list)
> > I tried to call the create function of the 2nd Account (index 1) of th
> > elist. It seems I can't append 1{list to create__.
> > Next I thought about making a function to do the work for me:
> > NB. function to return y's fname...
> > func =: verb define     acct =. y        name =: fname__acct        name
> > )
> > The above function assumes y is an instance of Account.
> > Alas, func 1{list doesn't work.
> > However if I do:
> > acct =: 1{list
> > func acct
> > This will return the fname.
> > But I have to explicitly define acct, which is not particularly terse. Is
> > there a way to call functions from the list of objects?
> >
> > ----------------------------------------------------------------------
> > 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

Reply via email to