Advertisement
fcamuso

Interfacce - parte A

Dec 26th, 2020
659
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.84 KB | None | 0 0
  1. using System;
  2.  
  3. namespace interfacce_1
  4. {
  5.  
  6.   class Program
  7.   {
  8.     static void Main(string[] args)
  9.     {
  10.       Allarme obj = new Allarme(new GestoreMessaggistica());
  11.       Allarme objPEC = new Allarme(new PEC());
  12.  
  13.       obj.Notifica();
  14.       objPEC.Notifica();
  15.     }
  16.   }
  17.  
  18.  
  19.   interface ISendEmail
  20.   {
  21.     void InviaEmail(string indirizzoMail, string oggetto, string testoMail);
  22.   }
  23.  
  24.   class GestoreMessaggistica : ISendEmail
  25.   {
  26.     public void InviaEmail(string indirizzoMail, string oggetto, string testoMail)
  27.     { Console.WriteLine("Email inviata"); }
  28.   }
  29.  
  30.   class PEC : ISendEmail
  31.   {
  32.     public void InviaEmail(string indirizzoMail, string oggetto, string testoMail)
  33.     { Console.WriteLine("Email PEC inviata"); }
  34.   }
  35.  
  36.   class Allarme
  37.   {
  38.     ISendEmail gestoreEmail = null;
  39.  
  40.     public Allarme(ISendEmail gestore) {
  41.       gestoreEmail = gestore;
  42.     }
  43.  
  44.     public void Notifica()
  45.     {
  46.       gestoreEmail.InviaEmail("fcamuso@gmail.com", "test", "questo è un test");
  47.     }
  48.   }
  49.  
  50.   //COMPOSIZIONE SENZA INTERFACCE: meno problemi ma si può ancora migliorare!
  51.   //class GestoreMessaggistica
  52.   //{
  53.   //  public void InviaEmail(string indirizzoMail, string oggetto, string testoMail) { }
  54.   //}
  55.  
  56.   //class Allarme
  57.   //{
  58.   //  GestoreMessaggistica gestoreMessaggistica = new GestoreMessaggistica();
  59.  
  60.   //  void Notifica()
  61.   //  {
  62.   //    //...
  63.   //    gestoreMessaggistica.InviaEmail("fcamuso@gmail.com", "test", "questo è un test");
  64.   //  }
  65.   //}
  66.   // ************************************************************************************
  67.  
  68.  
  69.   //NO! Cattivo esempio di ereditarietà
  70.   //class Allarme : GestoreMessaggistica
  71.   //{
  72.   //  //public void InviaEmail(string indirizzoMail, string oggetto, string testoMail) { }
  73.  
  74.  
  75.   //}
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.   abstract class Conto
  91.   {
  92.     public long NumeroConto { get; set; } = 0;
  93.     abstract public double InteresseAnnuo { get; set; }
  94.     abstract public void Preleva(decimal value);
  95.   }
  96.  
  97.   class ContoCorrente : Conto
  98.   {
  99.     private double interesseAnnuo = 0;
  100.     public override double InteresseAnnuo {
  101.       get => interesseAnnuo;
  102.       set {
  103.         //logica che lo determina in base al tipo di cliente,
  104.         //operatività prevista sul conto e altre variabili
  105.       } }
  106.  
  107.     public override void Preleva(decimal value)
  108.     {
  109.       Console.WriteLine("Prelievo da un conto corrente");
  110.     }
  111.   }
  112.  
  113.   class ContoDeposito : Conto
  114.   {
  115.     private double interesseAnnuo = 0;
  116.     public override double InteresseAnnuo
  117.     {
  118.       get => interesseAnnuo;
  119.       set
  120.       {
  121.         //logica che lo determina in base al tipo di cliente,
  122.         //operatività prevista sul conto e altre variabili
  123.       }
  124.     }
  125.  
  126.     public override void Preleva(decimal value)
  127.     {
  128.       Console.WriteLine("Prelievo da un conto deposito");
  129.     }
  130.   }
  131.  
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement