http://qs1969.pair.com?node_id=695313


in reply to Re: A first attempt.. at OO perl
in thread A first attempt.. at OO perl

Not entirely, I fear. You don't seem to use method calls at all. Consider $num_opt=getopt_dev->add_option($self,$opt,$type); - normally in OO you'd write $num_opt = $self->add_option($opt, $type); instead.

Ah. Ok, that explains why things look a little different in other people's code I've read. This is what I tried to begin with, but then, when you call your methods from outside the module, don't you have to call them like getopt_dev->add_option($self,$opt,$type); ? And if so, how do you deal with the class name being the first argument? I have the feeling I really do have the wrong end of the stick here!

That way one can actually subclass your module and override methods in the the derived module.

:| ok I'll, er look this up when I have the chance..! I sort of think I know what you mean, but don't know why this is the case..

Frankly I'm not too fond on going through all of your code to check for other OO paradigms. If you provide a Synopsis (ie a small usage summary, as found in the documentation of all good CPAN modules) it will be much easier to judge if your approach is a good one.

No, I don't blame you. I thought I'd just chuck all the code down since I didn't even really know what specific questions to ask and hoped someone enlightened like you would point me in the right direction. Thanks for all your comments. When I have some time (this is not something I should probably be doing much, if anything on during work hours) I will have a bash at a synopsis thingy and post it.

A note on style: using an underscore in module names is generally frowned upon, use CamelCase instead, or separate the words with in the module name with :: instead.

Noted.. when should you use :: ? I thought that was used as a file separator character?

Update: Fixed typos
........
Those are my principles. If you don't like them I have others.
-- Groucho Marx
.......

Replies are listed 'Best First'.
Re^3: A first attempt.. at OO perl
by moritz (Cardinal) on Jul 03, 2008 at 09:24 UTC
    As a user of an OO module, one typically uses the package name only to invoke the new method:
    my $obj = Your::Package->new(%options); $obj->do_something; $obj->do_something_other(@args);

    Consider reading perltoot, or if that doesn't help you, read a book on object orientation in general (doesn't really have to be perl related).

      I did read perltoot---I assumed that because you called new like that you had to call everything else like that too. Think I will pick up the book recommended by TGI and/or any others that people can suggest. I'm happy that I'm wrong about how to call methods, it did worry me at first, always having to include the object as an argument, the way you've shown me is much nicer!
      ........
      Those are my principles. If you don't like them I have others.
      -- Groucho Marx
      .......