Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: using constants in Derived class

by JavaFan (Canon)
on Nov 17, 2010 at 12:30 UTC ( #871984=note: print w/ replies, xml ) Need Help??


in reply to using constants in Derived class

No, it's not going to work that way. And I'm not sure you want to. But what you can do is:

package Automobile; sub CarType {die "Ought to be overridden!"} __END__ package Car; our @ISA = qw[Automobile]; sub CarType {"STRING1"} __END__ package Truck; our @ISA = qw[Automobile]; sub CarType {"STRING2"} __END__ package ParkingLot; $x = $automobile->CarType;
But do you really want to? I don't know your code, but it smells wrong. Perhaps you need to know the type because it matters how quickly the parking lot is full - it's the size that's important. Better is to have the ParkingLot be agnostic about what class (or type) of automobile it's dealing, and just ask the automobile for the number of slots in needs:
package Automobile; sub covers_slots {die "Ought to be overridden!"} __END__ package Car; our @ISA = qw[Automobile]; sub covers_slots {1;} __END__ package Truck; our @ISA = qw[Automobile]; sub covers_slots {3;} __END__ package ParkingLot; $slots = $automobile->covers_slots;
Then now if you introduce the classes "Limo", "Schoolbus" and "TinyCar", you don't have to change your ParkingLot module. And it also allows the Truck module return different numbers of covered_slots depending on the size of the truck (big trucks need more slots than small ones).


Comment on Re: using constants in Derived class
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (14)
As of 2014-09-30 15:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (376 votes), past polls