Advertisement
fcamuso

Untitled

Aug 27th, 2020
463
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.04 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3.  
  4. namespace OOP6_Struct
  5. {
  6.   struct Punto
  7.   {
  8.     //private int n = 9; NO: field e property non possono avere inizializzatori
  9.  
  10.     public  double X { get; set; }
  11.     public  double Y { get; set; }
  12.  
  13.     //public string Nome { get; set; } NO! non mischiare value type con reference type; SOLO value type
  14.  
  15.     //public Punto() { } //VIETATO
  16.     public Punto(double x, double y) { X = x; Y = x; } // Nome = "topolino"; }
  17.     //public void f() { X = 12; }
  18.   }
  19.  
  20.   class Cerchio
  21.   {
  22.     public Punto Centro { get; set; } = new Punto(0,0);
  23.     public int Colore { get; set; } = 0; //default = nero
  24.     public int Spessore { get; set; } = 1;
  25.  
  26.     private double raggio = 1;
  27.     public double Raggio
  28.     {
  29.       get => raggio;
  30.       set
  31.       {
  32.         if (value > 0)
  33.           raggio = value;
  34.         else
  35.           throw new ArgumentOutOfRangeException("Il raggio deve essere maggiore di zero");
  36.       }
  37.     }
  38.  
  39.     public Cerchio(double x, double y, double r)
  40.     {
  41.       Centro = new Punto(x, y);
  42.       Raggio = r;
  43.     }
  44.  
  45.     public Cerchio() { raggio = 500; }
  46.  
  47.     public Cerchio(Punto p, double r) //: this(p.X, p.Y, r) {}
  48.     {
  49.    
  50.       Centro = p;
  51.  
  52.       p = new Punto(-34, p.Y);
  53.       //p.X = -34;
  54.       //Centro.X = -34;
  55.  
  56.  
  57.       p = new Punto(777, 777);
  58.     }
  59.  
  60.     public double Perimetro() { return 2 * Math.PI * raggio; }
  61.     public double Area() { return Math.PI * raggio * raggio; } // o * Math.Pow(raggio,2)
  62.  
  63.   }
  64.   class Program
  65.   {
  66.     static void Main(string[] args)
  67.     {
  68.       Point pp = new Point(3, 4);
  69.       pp.X = 89;
  70.      
  71.       Punto p = new Punto(3, 4);
  72.       Cerchio c = new Cerchio(p, 6);
  73.      
  74.       //la modifica al punto nel costruttore del cerchio NON
  75.       //modifica il punto esterno
  76.       Console.WriteLine(p.X); //3 e non 777
  77.  
  78.       //il cerchio ha ora una sua copia del punto esterno
  79.       //e modificare quest`ultimo non sporca il cerchio
  80.       p = new Punto(-10, -10);
  81.       Console.WriteLine(c.Centro.X); //sempre 3 e non -10
  82.  
  83.     }
  84.   }
  85. }
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement