Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Ereditarieta_conto_corrente
- {
- class ContoCorrenteException : Exception
- {
- public ContoCorrenteException(string messaggio) { }
- }
- class ContoCorrente
- {
- //dati intestatario
- public String Cognome { get; set; } = "";
- public String Nome { get; set; } = "";
- //dati conto
- protected double saldo = 0;
- public double Saldo
- {
- get { return saldo; }
- set {
- if (value >= 0)
- saldo = value;
- else throw new ContoCorrenteException("Saldo negativo");
- }
- }
- private int NumeroConto { get; set; }
- public static int ProgressivoNumeroConto { get; set; } = 0;
- //operazioni sul conto
- public void Deposita(double cifra)
- {
- if (cifra > 0)
- saldo += cifra;
- else throw new ContoCorrenteException($"Valore deposito non valido: {cifra}");
- }
- public bool Preleva(double cifra)
- {
- if (saldo >= cifra)
- {
- saldo -= cifra;
- return true;
- }
- else return false;
- }
- //costruttore
- public ContoCorrente(string cognome, string nome, double saldo_iniziale = 0)
- {
- Cognome = cognome; Nome = nome;
- Saldo= saldo_iniziale;
- NumeroConto = ++ProgressivoNumeroConto;
- }
- public bool Autentica(string user, string psw)
- {
- //controllo...
- return true;
- }
- }
- class ContoCorrentePrivilegiato : ContoCorrente
- {
- //protected new double saldo;
- private double tolleranza = 0;
- public double Tolleranza {
- get { return tolleranza; }
- set {
- if (value >= 0) tolleranza = value; else throw new ContoCorrenteException("Tolleranza negativa");
- }
- }
- public ContoCorrentePrivilegiato(string Cognome, string Nome, double tolleranza, double saldo_iniziale = 0)
- : base(Cognome, Nome, saldo_iniziale)
- {
- Tolleranza = tolleranza;
- }
- public new bool Preleva(double cifra)
- {
- if (cifra - saldo <= tolleranza)
- {
- saldo -= cifra;
- return true;
- }
- else return false;
- }
- public new bool Autentica(string user, string psw)
- {
- if (base.Autentica(user, psw))
- ; //si prosegue con il controllo basato su pin e cellulare
- return true;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- //conformità di tipo
- ContoCorrente cc = new ContoCorrentePrivilegiato("a", "a", 500, 30000);
- //Random r = new Random();
- //if (r.Next() % 2 == 0)
- // cc = new ContoCorrente("a", "a", 30000);
- //else
- // cc = new ContoCorrentePrivilegiato("a", "a", 500, 30000);
- ContoCorrentePrivilegiato ccp = (ContoCorrentePrivilegiato)cc;
- Console.WriteLine( ccp.Preleva(30400) );
- ccp = (ContoCorrentePrivilegiato) new ContoCorrente("b", "b", 30000);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement