in reply to using constants in Derived class
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 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;
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).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;
|
|---|