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 virtual 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 virtual 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)
- {
- int quantiConti = 10;
- ContoCorrente[] listaConti = new ContoCorrente[quantiConti];
- for (int i = 0; i < quantiConti; i++)
- listaConti[i] = (i % 3 == 0) ?
- new ContoCorrentePrivilegiato($"cognome{i}", $"nome{i}", 500, 10000) :
- new ContoCorrente($"cognome{i}", $"nome{i}", 10000);
- for(int i = 0; i < quantiConti; i++)
- Console.WriteLine($"Conto {i} esito operazione: {listaConti[i].Preleva(10001)}");
- //for (int i = 0; i < quantiConti; i++)
- // if (listaConti[i].GetType() == typeof(ContoCorrente))
- // Console.WriteLine($"Conto {i} esito operazione: {listaConti[i].Preleva(10001)}");
- // else
- // Console.WriteLine($"Conto {i} esito operazione: { ((ContoCorrentePrivilegiato) listaConti[i]).Preleva(10001)}")
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement