Tämä esimerkki esittelee olio-ohjelmointia ja Tk-kirjaston käyttöä Perl-kielellä. Ohjelma käyttää Liike-oliota, jolla on neljä attribuuttia, konstruktori ja kolme metodia. Olio sisältää get ja set-metodin. Ohjelmaa ohjataan graafisen käyttöliittymän avulla, mutta toiminnot tapahtuvat olioiden kautta. Esimerkkinä käytetään nopeuden ja kiihtyvyyden laskentaa.
#!/usr/bin/perl
package Liike;
use Tk;
#Ohjelmassa käytetään Liike-nimistä oliota.
sub new {
my $class = shift;
my $self = {
#Luodaan attribuutit
_matka => shift,
_aika >= shift,
_nopeus => shift,
_kiihtyvyys => shift,
};
bless $self,$class;
return $self;
}
sub AsetaTiedot {
my ($self, $matka,$aika) = @_;
# Asetetaan käyttäjän antamat tiedot
$self->{_matka} = $matka if defined ($matka);
$self->{_aika} = $aika if defined($aika);
return $self->{_matka},$self->{_aika};
}
sub LaskeNopeus {
my ($self) = @_;
# Lasketaan nopeus ja palautetaan arvo
$self->{_nopeus} = $self->{_matka}/$self->{_aika};
return $self->{_nopeus};
}
sub LaskeKiihtyvyys {
my ($self) = @_;
# Lasketaan kiihtyvyys ja palautetaan arvo
$self->{_nopeus} = $self->{_matka}/$self->{_aika};
$self->{_kiihtyvyys} = $self->{_nopeus}/$self->{_aika};
return $self->{_kiihtyvyys};
}
# Luodaan graafinen käyttöliittymä
my $main = MainWindow->new;
$main->title("Liike");
# Luodaan kontrollit
my $teksti = "";
my $nappain = $main->Button(-text=>"Nopeus",-command=>\&Nopeus)->pack();
my $nappain2 = $main->Button(-text=>"Kiihtyvyys",-command=>\&Kiihtyvyys)->pack();
my $tlaatikko = $main->Entry()->pack();
my $tlaatikko2 = $main->Entry()->pack();
my $lappu = $main->Label(-textvariable=>\$teksti)->pack();
$liike = new Liike();
# Ohjelmassa on kaksi toimintoa
sub Nopeus(){
$liike->AsetaTiedot(int $tlaatikko->get(),int $tlaatikko2->get());
$teksti = $liike->LaskeNopeus();
}
sub Kiihtyvyys(){
$liike->AsetaTiedot(int $tlaatikko->get(),int $tlaatikko2->get());
$teksti = $liike->LaskeKiihtyvyys();
}
MainLoop;Aihe on jo aika vanha, joten et voi enää vastata siihen.