Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Perl: Olio-ohjelmointi ja Tk-kirjasto

koodaaja [24.09.2021 12:50:24]

#

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;

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta