home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ckscripts / account next >
Lisp/Scheme  |  2020-01-01  |  827b  |  49 lines

  1. class account
  2. def account::new: {
  3.     show args
  4.     (setq \%c_\%s.balance 0)
  5.     return \%s
  6. }
  7. def account::new:deposit: {
  8.     show args
  9.     (setq \%c_\%s.balance \%2)
  10.     return \%s
  11. }
  12. def account>>deposit: {
  13.         if not def \m(\%c_\%s.balance) {
  14.         (setq \%c_\%s.balance 0)
  15.         }
  16.     (++ \%c_\%s.balance \%2)
  17.     return \%s
  18. }
  19. def account>>balance {
  20.     if not def \m(\%c_\%s.balance) {
  21.             (setq \%c_\%s.balance 0)
  22.     }
  23.     return \m(\%c_\%s.balance)
  24. }
  25. def account>>withdraw: {    
  26.     if > \%2 \m(\%c_\%s.balance) {
  27.         echo ... not enough balance!
  28.     } else {
  29.         (setq \%c_\%s.balance (- \%c_\%s.balance \%2))
  30.     }
  31.     return \%s
  32. }
  33.  
  34. class saving_account inherit: account
  35.  
  36. saving_account new: sa_1
  37. (sa_1 'balance)
  38.  
  39. sa_1 deposit: 250
  40. (sa_1 'balance)
  41.  
  42. (sa_1 'withdraw: 35)
  43. (sa_1 'balance)
  44.  
  45. ( (sa_1 'withdraw: 15) 'balance )
  46.  
  47. ( (sa_1 'deposit: 78) 'balance )
  48.  
  49.