Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Creating Common Constructor

by Flame (Deacon)
on Jul 10, 2003 at 16:27 UTC ( [id://273033]=note: print w/replies, xml ) Need Help??


in reply to Creating Common Constructor

Inheritance is another way to go.

package Foo; our $count = 0; sub new { my $class = (ref($_[0]) ? ref(shift) : shift); $count++; return bless({ @_ }, $class); } package Bar; our @ISA = ('Foo'); sub new { my $self = SUPER::new(@_); #Anything unique to this class can now be applied to the object... return $self; }

I often use this approach when there are several attributes guaranteed to be present in all of the instances, such as the name of the creature or whatever. Also, thanks to inheritance, you can place any methods that all of these classes should support into the base class.

I hope this helps, I've only been awake for... about 3 minutes now, so my interpretation of your question may be a little... off...

Edit/Note: SUPER::new is a common trick used in many object oriented languages when the parent contstructor has code to take care of a lot of the setup work.



My code doesn't have bugs, it just develops random features.

Flame ~ Lead Programmer: GMS (DOWN) | GMS (DOWN)

Replies are listed 'Best First'.
Re: Re: Creating Common Constructor
by exussum0 (Vicar) on Jul 10, 2003 at 20:24 UTC
    Just realize, that he wants to garantee keeping track of them. So if someone writes an animal object without a super, he's screwed.

    But for the attribute thing, i'm sure there's something he can work out.. perhaps keeping the various attributes to create in a config file, have the parent read in said config file, and evertytime you want an object created, the zoo object would dynamically know what to make. Hrm....

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://273033]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-04-19 02:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found