Next February 2001 Slide #44

Delegation

        package Widget;
        sub expose {
          my ($self) = @_;
          $self->redraw;
          my @subwidgets = @{$self->subwidgets};
          for my $sw (@subwidgets) {
            $sw->expose;
          }
        }
        package Button;
        sub redraw {
          my $self = shift;
          draw_rounded_box($self->size, $self->position, 0.03);
        }
        # Drawing the button's label is taken care of by Widget::expose 


Next Copyright © 2001 M-J. Dominus