$ui->refresh
In the Text package, refresh is just a stub, i.e. refresh {}, while the Graphical package has a functioning refresh routine. (In general, the stubs might better be in the base class.) I create the object in the first lines of the program based on a command-line switch.
The program is a single file. I share data by using our ($var1, @var2, %var3) enabling all packages to access these variables without a package prefix.
This is how I got the polymorphism to work, thanks to the advice of some helpful monks.
use strict; use warnings; package UI; our @ISA = (); sub new { my $class = shift; return bless {@_}, $class } sub hello {print "superclass hello\n"}; package UI::Graphical; our @ISA = 'UI'; sub hello {print "make a window\n";} package UI::Text; our @ISA = 'UI'; sub hello {print "hello world!\n";} my $ui = UI->new; $ui->hello; my $tui = UI::Text->new; $tui->hello; my $gui = UI::Graphical->new; $gui->hello;
UPDATE: Changed @ISA = '' to </c> @ISA = ()</c> as cautioned by chromatic.
In reply to Re: replace conditionals with polymorphism
by gnosti
in thread replace conditionals with polymorphism
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |