Tämä ohjelma hyödyntää olio-ohjelmointia sekä Tk-kirjaston käyttöä. Ohjelma laskee asuntosijoituksen tuoton tai hinnan. Syötteenä on tulot (esim. vuokratulot), hoitovastike sekä vsv (varainsiirtovero).
#!/usr/bin/perl
package Sijoitus;
use Tk;
sub new {
my $class = shift;
my $self = {
#Määritetään muuttujat
_tulot => shift,
_hoitovastike => shift,
_syote => shift,
_vsv => shift,
_tulos => shift,
};
bless $self,$class;
return $self;
}
sub AsetaTiedot {
my ($self,$tulot,$hoitovastike,$syote,$vsv) = @_;
#Asetetaan käyttäjän antamat tiedot.
$self->{_tulot} = $tulot if defined ($tulot);
$self->{_hoitovastike} = $hoitovastike if defined ($hoitovastike);
$self->{_syote} = $syote if defined ($syote);
$self->{_vsv} = $vsv if defined ($vsv);
return $self->{tulot},$self->{_hoitovastike},$self->{_syote},$self->{_vsv};
}
sub LaskeTuotto {
my ($self) = @_;
#Tässä aliohjelmassa lasketaan asunnon tuottoprosentti, kun tiedetään lähtötiedot.
$self->{_tulos} = ($self->{_tulot}*12-$self->{_hoitovastike}*12);
$self->{_tulos} /= ($self->{_syote}+$self->{_vsv}/100.0);
return $self->{_tulos};
}
sub LaskeHinta {
my ($self) = @_;
#Tässä aliohjelmassa lasketaan asunnon hinta, kun tiedetään lähtötiedot.
$self->{_tulos} = ($self->{_tulot}*12-$self->{_hoitovastike}*12);
$self->{_tulos} /= ($self->{_syote}/100.0*(1+$self->{_vsv}/100.0));
return $self->{_tulos};
}
#Luodaan seuraavaksi graafinen käyttöliittymä, jota kautta ohjataan ohjelmaa.
my $main = MainWindow->new;
$main->title("Sijoituslaskuri");
my $teksti = "";
my $nappain = $main->Button(-text=>"Tuotto",-command=>\&Tuotto)->pack();
my $nappain2 = $main->Button(-text=>"Hinta",-command=>\&Hinta)->pack();
my $tlaatikko = $main->Entry()->pack();
my $tlaatikko2 = $main->Entry()->pack();
my $tlaatikko3 = $main->Entry()->pack();
my $tlaatikko4 = $main->Entry()->pack();
my $lappu = $main->Label(-textvariable=>\$teksti)->pack();
$sijoitus = new Sijoitus();
#Luodaan näppäimille kuuntelijat.
sub Tuotto(){
$sijoitus->AsetaTiedot(int $tlaatikko->get(),int $tlaatikko2->get(),int $tlaatikko3->get(),int $tlaatikko4->get());
$teksti = $sijoitus->LaskeTuotto();
}
sub Hinta(){
$sijoitus->AsetaTiedot(int $tlaatikko->get(),int $tlaatikko2->get(),int $tlaatikko3->get(),int $tlaatikko4->get());
$teksti = $sijoitus->LaskeHinta();
}
MainLoop;Aihe on jo aika vanha, joten et voi enää vastata siihen.