Advertisement
fcamuso

Untitled

Aug 12th, 2020
561
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.63 KB | None | 0 0
  1. using System;
  2.  
  3. namespace OOP_4_Costruttori_1
  4. {
  5.   class Data
  6.   {// membri interni
  7.  
  8.     //field
  9.     private int g;
  10.     private int m;
  11.     private int a;
  12.  
  13.     public Data(int _g, int _m, int _a) {
  14.  
  15.       G = _g; M = _m; A = _a;
  16.     }
  17.    
  18.    
  19.     public Data() { }
  20.  
  21.     public Data(string laData)
  22.     {
  23.       //accettiamo giorni e mesi a una o due cifre, anno a due o 4 cifre
  24.       int posTrattino = laData.IndexOf('-');
  25.       if (posTrattino == -1) throw new InvalidOperationException("Formato data non valido");
  26.  
  27.       string g = laData.Substring(0, posTrattino); //"1O-10-19"
  28.       G = int.Parse(g);
  29.  
  30.       posTrattino = laData.IndexOf('-', posTrattino+1);
  31.       if (posTrattino == -1) throw new InvalidOperationException("Formato data non valido");
  32.  
  33.       string m = laData.Substring(g.Length+1, posTrattino-g.Length-1); //"10-10-19"
  34.       M = int.Parse(m);
  35.  
  36.       string a = laData.Substring(posTrattino+1, laData.Length - posTrattino - 1); //"10-10-19"
  37.       A = int.Parse(a);
  38.     }
  39.    
  40.     public int G
  41.     {
  42.       get => g;
  43.       set
  44.       {
  45.         if (value > GiorniMese() || value < 1)
  46.           throw new InvalidOperationException("Valore giorno non valido");
  47.         else g = value;
  48.       }
  49.     }
  50.  
  51.     public int M
  52.     {
  53.       get => m;
  54.       set
  55.       {
  56.         if (value > 12 || value < 1)
  57.           throw new InvalidOperationException("Valore mese non valido");
  58.         else m = value;
  59.       }
  60.     }
  61.  
  62.     public int A
  63.     {
  64.       get => a;
  65.       set
  66.       {
  67.         if (value < 1)
  68.           throw new InvalidOperationException("L'anno non può essere minore di 1");
  69.         else a = value;
  70.       }
  71.     }
  72.  
  73.  
  74.     //metodi
  75.  
  76.     int GiorniMese() //parametri formali
  77.     {
  78.       switch (m)
  79.       {
  80.         case 4:
  81.         case 6:
  82.         case 9:
  83.         case 11:
  84.           return 30;
  85.  
  86.         case 2:
  87.           return 28 + (a % 400 == 0 || (a % 4 == 0 && a % 100 != 0) ? 1 : 0);
  88.  
  89.         default:
  90.           return 31;
  91.       }
  92.     }
  93.  
  94.     public void SettaData(int gg, int mm, int aa )
  95.     {
  96.       G = gg; M = mm; A = aa;
  97.     }
  98.  
  99.     override public string ToString()
  100.     {
  101.       return $"{G}-{M}-{A}";
  102.     }
  103.  
  104.   }
  105.   class Program
  106.   {
  107.     static void Main(string[] args)
  108.     {
  109.       Data d = new Data(15,10,10);
  110.  
  111.      Data d2 = new Data("1-7-2020");
  112.      //Data d3 = new Data(15, "Ottobre", 20);
  113.  
  114.       //d.SettaData(15, 10, 10);
  115.  
  116.  
  117.       //Console.WriteLine(d);
  118.  
  119.       //Cerchio c = new Cerchio(???);
  120.       //Console.WriteLine(c.Area()/Perimetro())
  121.  
  122.       //GeneratorePassword g = new GeneratorePassword(???)
  123.       //string psw = g.Genera(???);
  124.     }
  125.   }
  126. }
  127.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement