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.