[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Howto ? :: Person is a customer

Squeak Smalltalk

7/28/2006 5:39:00 AM

Hi,

Beginner question probably but I do not know how to do it correctly.

I will read informations from a file and create an object.
During my load I do not know if it is a employe or a customer so I
create a person object.
After the object is created I will know which type it is.

After I know I want to change the type of my object.

How will you do it ?

Best Regards
W.

3 Answers

Jake McArthur

7/28/2006 6:44:00 AM

0

On Jul 28, 2006, at 12:39 AM, Squeak Smalltalk wrote:

> Hi,
>
> Beginner question probably but I do not know how to do it correctly.
>
> I will read informations from a file and create an object.
> During my load I do not know if it is a employe or a customer so I
> create a person object.
> After the object is created I will know which type it is.
>
> After I know I want to change the type of my object.
>
> How will you do it ?
>
> Best Regards
> W.

How about making Person#to_employee and Person#to_customer methods?
That would be very Ruby-like, would it not?

However, I think I would just find a way to wait until I know before
instantiating it, then passing all necessary data into the
appropriate .new method when I do.

- Jake McArthur

James Britt

7/28/2006 7:22:00 AM

0

Squeak Smalltalk wrote:
> Hi,
>
> Beginner question probably but I do not know how to do it correctly.
>
> I will read informations from a file and create an object.
> During my load I do not know if it is a employe or a customer so I
> create a person object.
> After the object is created I will know which type it is.
>
> After I know I want to change the type of my object.

"Type"? What exactly do you mean by 'type'?

(Check out the list archives for threads on duck typing and static
typing to see how the notion of 'type' has been discussed. Might give
you some ideas.)

--
James Britt

"I was born not knowing and have had only a little
time to change that here and there."
- Richard P. Feynman

Ben Nagy

7/28/2006 5:56:00 PM

0

> -----Original Message-----
> From: James Britt [mailto:james.britt@gmail.com]
> Sent: Friday, July 28, 2006 2:22 PM
> To: ruby-talk ML
> Subject: Re: Howto ? :: Person is a customer
>
> Squeak Smalltalk wrote:
> > Hi,
> >
> > Beginner question probably but I do not know how to do it correctly.
> >
> > I will read informations from a file and create an object.
> > During my load I do not know if it is a employe or a customer so I
> > create a person object.
> > After the object is created I will know which type it is.
> >
> > After I know I want to change the type of my object.
>
> "Type"? What exactly do you mean by 'type'?

If you mean class, you can do this (untested in irb)

class Person
def self.new( param, data )
if param==1
Employee.new(data)
else
Customer.new(data)
end
end
end

Now Person.new(param, data) will return an Employee or a Customer depending
on the param it is passed. Adjust as needed in terms of inspecting the
input.

I consider this needless trickery, but have used it before because it amuses
me. The other responses have more actual software engineering merit.

Cheers,

ben