Raku kurss / Pielikums 🆕 / Tipi un teksta mašīnas / Objekti un klases / Exercises / Bankas konts
Risinājums: Bankas konts
Šeit ir iespējams risinājums uzdevumam.
Kods
class Account {
has $!balance = 0;
method deposit($amount) {
$!balance += $amount;
}
method withdraw($amount) {
if $amount > $!balance {
say 'declined: insufficient funds';
}
else {
$!balance -= $amount;
}
}
method balance { $!balance }
}
my $account = Account.new;
$account.deposit(100);
$account.withdraw(30);
$account.withdraw(200);
say $account.balance;🦋 Atrodiet programmu failā bank-account.raku.
Izvade
declined: insufficient funds
70Komentāri
has $!balance = 0deklarē atribūtu kā privātu — ar!tvigilu tam nemaz nav ģenerēta piekļuves metode, tāpēc vienīgais veids, kā atlikumu mainīt, ir klases piedāvātās metodes.method balanceārpasaulei dod veidu, kā to nolasīt, bet ne uzstādīt.Tas ir apzināti. Ja mēs būtu rakstījuši
has $.balance, tvigils.pievienotu publisku piekļuves metodi — pēc noklusējuma tikai lasāmu, bet viens neuzmanīgsis rwtai atvērtu tiešu piešķiršanu, piemēram,$account.balance = 1_000_000, ļaujot ikvienam pārvietot naudu, neejot caurdepositvaiwithdraw. Atribūta paturēšana privāta to izslēdz jau pēc konstrukcijas: atlikums var mainīties vienīgi pēc paša konta likumiem, tādiem kā nepietiekamu līdzekļu pārbaude metodēwithdraw.Otrā izņemšana prasa vairāk, nekā ir atlikumā, tāpēc tā tiek noraidīta un atlikums paliek
70.