Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Dear fellow Monks,

I want to make sure that a number of classes in my program ALWAYS implement a number of methods, much like abstract classes in C++ allow. This has previously been discussed (by some very wise monks) here.

The solution they propose is basically dying in all your perl "abstract class" methods, so you can tell if derived classes are not implementing them.

The problem I see with this approach is that you don't get to know if all abstract methods are overridden in the derived classes until you call them, which happens at runtime! (Please correct me if I'm wrong, but this practice could be dangerous, unless you are sure your testing will always call all the inherited "abstract" methods in all your concrete classes).

My question is: Is there a way to verify that a number of methods are implemented in a package, at compile time?

(note the generality of the question, as I don't really care about having the @ISA relationship)

Thanks!

Gregorovius.


In reply to Interfaces in Perl? by gregorovius

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2024-03-29 11:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found