// PankkiMonimuotoinen.cs (c) 2005 Kari Laitinen // http://www.naturalprogramming.com // 2005-02-12 Tiedosto luotu. // 2005-02-12 Viimeisin muutos. using System ; class Pankkitili { protected string tilin_omistaja ; protected long tilin_numero ; protected double tilin_saldo ; public Pankkitili( string annettu_tilin_omistaja, long annettu_tilin_numero, double tilin_alkusaldo ) { tilin_omistaja = annettu_tilin_omistaja ; tilin_numero = annettu_tilin_numero ; tilin_saldo = tilin_alkusaldo ; } public void nayta_tilin_tiedot() { Console.Write( "\n\nP A N K K I T I L I N T I E D O T : " + "\n Tilin omistaja : " + tilin_omistaja + "\n Tilin numero: " + tilin_numero + "\n Tilin saldo: " + tilin_saldo ) ; } public virtual void talleta_rahaa( double talletettava_rahamaara ) { Console.Write( "\n\nTAPAHTUMA TILILLA NUMERO " + tilin_numero + " (Tilin omistaja: " + tilin_omistaja + " )" ) ; Console.Write( "\n Talletettu maara: " + talletettava_rahamaara + "\n Vanha tilin saldo: " + tilin_saldo ) ; tilin_saldo = tilin_saldo + talletettava_rahamaara ; Console.Write( " Uusi saldo: " + tilin_saldo ) ; } public virtual void nosta_rahaa( double nostettava_rahamaara ) { Console.Write( "\n\nTAPAHTUMA TILILLA NUMERO " + tilin_numero + " (Tilin omistaja: " + tilin_omistaja + " )" ) ; if ( tilin_saldo < nostettava_rahamaara ) { Console.Write("\n -- Nostoa ei suoritettu: " + "Ei riittavasti saldoa nostaa " + nostettava_rahamaara ) ; } else { Console.Write("\n Nostettu maara: " + nostettava_rahamaara + "\n Vanha tilin saldo: " + tilin_saldo ) ; tilin_saldo = tilin_saldo - nostettava_rahamaara ; Console.Write(" Uusi saldo: " + tilin_saldo ) ; } } public void siirra_rahaa_tilille( Pankkitili vastaanottava_tili, double siirrettava_rahamaara ) { Console.Write( "\n\nTAPAHTUMA TILILLA NUMERO " + tilin_numero + " (Tilin omistaja: " + tilin_omistaja + " )" ) ; if ( tilin_saldo >= siirrettava_rahamaara ) { vastaanottava_tili.tilin_saldo = vastaanottava_tili.tilin_saldo + siirrettava_rahamaara ; Console.Write( "\n " + siirrettava_rahamaara + " siirrettiin tilille " + vastaanottava_tili.tilin_numero + " (Tilin omistaja: " + vastaanottava_tili.tilin_omistaja + " )" + "\n Saldo ennen siirtoa: " + tilin_saldo ) ; tilin_saldo = tilin_saldo - siirrettava_rahamaara ; Console.Write( " Uusi saldo: " + tilin_saldo ) ; } else { Console.Write( "\n -- Ei tarpeeksi saldoa siirtoon." ) ; } } } class LuotollinenTili : Pankkitili { protected double luottoraja ; public LuotollinenTili( string annettu_tilin_omistaja, long annettu_tilin_numero, double tilin_alkusaldo, double annettu_luottoraja ) : base( annettu_tilin_omistaja, annettu_tilin_numero, tilin_alkusaldo ) { luottoraja = annettu_luottoraja ; } public override void nosta_rahaa( double nostettava_rahamaara ) { Console.Write( "\n\nTAPAHTUMA TILILLA NUMERO " + tilin_numero + " (Tilin omistaja: " + tilin_omistaja + " )" ) ; if ( tilin_saldo + luottoraja < nostettava_rahamaara ) { Console.Write("\n -- Nostoa ei suoritettu: " + "Ei riittavasti luottoa nostaa " + nostettava_rahamaara ) ; } else { Console.Write("\n Nostettu maara: " + nostettava_rahamaara + "\n Vanha tilin saldo: " + tilin_saldo ) ; tilin_saldo = tilin_saldo - nostettava_rahamaara ; Console.Write(" Uusi saldo: " + tilin_saldo ) ; } } } class RajoitettuTili : Pankkitili { protected double maksimi_noston_maara ; public RajoitettuTili( string annettu_tilin_omistaja, long annettu_tilin_numero, double tilin_alkusaldo, double annettu_nostoraja ) : base( annettu_tilin_omistaja, annettu_tilin_numero, tilin_alkusaldo ) { maksimi_noston_maara = annettu_nostoraja ; } public override void nosta_rahaa( double nostettava_rahamaara ) { if ( nostettava_rahamaara > maksimi_noston_maara ) { Console.Write( "\n\nTAPAHTUMA TILILLA NUMERO " + tilin_numero + " (Tilin omistaja: " + tilin_omistaja + " )" ) ; Console.Write( "\n -- Nostoa ei suoritettu: Ei voi nostaa " + nostettava_rahamaara + "\n -- Nostoraja on " + maksimi_noston_maara + "." ) ; } else { base.nosta_rahaa( nostettava_rahamaara ) ; } } } class PankkiMonimuotoinen { static void Main() { Pankkitili hurriganesin_tili = new Pankkitili( "Remu Aaltonen", 222222, 2000.00 ) ; LuotollinenTili popedan_tili = new LuotollinenTili( "Pate Mustajarvi", 333333, 2000.00, 1000.00 ) ; RajoitettuTili him_yhtyeen_tili = new RajoitettuTili( "Ville Valo", 444444, 4000.00, 1000.00 ) ; hurriganesin_tili.nosta_rahaa( 2500.00 ) ; popedan_tili.nosta_rahaa( 2500.00 ) ; him_yhtyeen_tili.nosta_rahaa( 2500.00 ) ; } }