Beispiel #1
0
        public void Test_CalcoloPerimetro()
        {
            Rettangolo r         = new Rettangolo(5, 4);
            double     perimetro = r.CalcoloPerimetro();

            Assert.AreEqual(18, perimetro);
        }
Beispiel #2
0
        public void Test_CalcoloArea()
        {
            Rettangolo r    = new Rettangolo(5, 4);
            double     area = r.CalcoloArea();

            Assert.AreEqual(20, area);
        }
Beispiel #3
0
        public static void FormeGeometriche()
        {
            Triangolo triangolo = new Triangolo()
            {
                Base    = 12,
                Altezza = 4
            };

            Cerchio cerchio = new Cerchio()
            {
                Raggio = 8,
                X      = 3,
                Y      = 5
            };

            Rettangolo rettangolo = new Rettangolo()
            {
                Larghezza = 7,
                Altezza   = 3
            };

            cerchio.DisegnaForma();
            rettangolo.DisegnaForma();
            triangolo.DisegnaForma();
        }
Beispiel #4
0
        public QueryInRettangoloResult Get(Rettangolo rettangolo, string[] classiMezzo)
        {
            var geoWithinFilter = Builders <MessaggioPosizione_DTO> .Filter
                                  .GeoWithinBox(m => m.Localizzazione,
                                                lowerLeftX : rettangolo.TopLeft.Lon,
                                                lowerLeftY : rettangolo.BottomRight.Lat,
                                                upperRightX : rettangolo.BottomRight.Lon,
                                                upperRightY : rettangolo.TopLeft.Lat);

            var recentMessagesFilter = Builders <MessaggioPosizione_DTO> .Filter
                                       .Gt(m => m.IstanteAcquisizione, DateTime.Now.AddHours(-24));

            FilterDefinition <MessaggioPosizione_DTO> classiMezzoFilter = null;

            if ((classiMezzo != null) && (classiMezzo.Length > 0))
            {
                classiMezzoFilter = Builders <MessaggioPosizione_DTO> .Filter
                                    .AnyIn(m => m.ClassiMezzo, classiMezzo);
            }

            var messaggiPosizioneAggregate = this.messaggiPosizioneCollection.Aggregate()
                                             .SortBy(m => m.CodiceMezzo)
                                             .ThenByDescending(m => m.IstanteAcquisizione)
                                             .Match(geoWithinFilter)
                                             .Match(recentMessagesFilter);

            if (classiMezzoFilter != null)
            {
                messaggiPosizioneAggregate = messaggiPosizioneAggregate
                                             .Match(classiMezzoFilter);
            }

            var sw = new Stopwatch();

            sw.Start();

            var messaggiPosizione = messaggiPosizioneAggregate
                                    .Group(BsonDocument.Parse(@"{ _id: '$codiceMezzo', messaggio: { $first: '$$ROOT' } }"))
                                    .Project(BsonDocument.Parse(@"{ _id: 0, messaggio: 1 }"))
                                    .ReplaceRoot <MessaggioPosizione_DTO>("$messaggio")
                                    .ToEnumerable()
                                    .Select(dto => dto.ConvertToDomain());

            var arrayMessaggiPosizione = messaggiPosizione.ToArray();

            sw.Stop();

            return(new QueryInRettangoloResult()
            {
                IstanteQuery = DateTime.Now.ToUniversalTime(),
                DurataQuery_msec = sw.ElapsedMilliseconds,
                ClassiMezzo = classiMezzo,
                NumeroMezzi = arrayMessaggiPosizione.Length,
                Rettangolo = rettangolo,
                Risultati = arrayMessaggiPosizione
            });
        }
        public static void Esercitazioni()
        {
            //Esercitazione 1
            Cerchio cerchio = new Cerchio()
            {
                Nome   = "Cerchio",
                X      = 0,
                Y      = 0,
                Raggio = 5d
            };

            cerchio.DisegnaForma();

            Rettangolo rettangolo = new Rettangolo()
            {
                Nome      = "Rettangolo",
                Larghezza = 5d,
                Altezza   = 10d
            };

            rettangolo.DisegnaForma();

            Triangolo triangolo = new Triangolo()
            {
                Nome    = "Triangolo",
                Base    = 8d,
                Altezza = 10d
            };

            triangolo.DisegnaForma();

            //Esercitazione 2 (interfaccia fileSeriaizable)
            cerchio.SaveToFile("CerchioFile");
            Cerchio nuovoCerchio = new Cerchio();

            nuovoCerchio.FromFile("CerchioFile");
            nuovoCerchio.DisegnaForma();
            nuovoCerchio.Nome = "Cerchio modificato";
            nuovoCerchio.SaveToFile("CerchioFile");

            rettangolo.SaveToFile("RettangoloFile");
            Rettangolo nuovoRettangolo = new Rettangolo();

            nuovoRettangolo.FromFile("RettangoloFile");
            nuovoRettangolo.DisegnaForma();
            nuovoRettangolo.Nome = "Rettangolo modificato";
            nuovoRettangolo.SaveToFile("RettangoloFile");

            triangolo.SaveToFile("TriangoloFile");
            Triangolo nuovoTriangolo = new Triangolo();

            nuovoTriangolo.FromFile("TriangoloFile");
            nuovoTriangolo.DisegnaForma();
            nuovoTriangolo.Nome = "Tringolo modificato";
            nuovoTriangolo.SaveToFile("TriangoloFile");
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            Rettangolo r1 = new Rettangolo(1, 2, 10, 10);
            Rettangolo r2 = new Rettangolo(1, 2, 3, 4);

            Console.WriteLine(r1.CalcolaArea());
            Console.WriteLine(r2.CalcolaArea());
            Console.WriteLine(r1.Contiene(r2));
            Console.WriteLine(r2.Contiene(r1));
        }
        static void Main(string[] args)
        {
            FiguraGeometrica f1 = new Rettangolo(5, 3);
            FiguraGeometrica f2 = new Rombo(4, 2, 3);
            FiguraGeometrica f3 = new Triangolo(3, 4, 5, 4);

            Console.WriteLine("Rettangolo");
            Console.WriteLine(f1.CalcolaPerimetro() + "\n" + f1.CalcolaArea());
            Console.WriteLine("Rombo");
            Console.WriteLine(f2.CalcolaPerimetro() + "\n" + f2.CalcolaArea());
            Console.WriteLine("Triangolo");
            Console.WriteLine(f3.CalcolaPerimetro() + "\n" + f3.CalcolaArea());
        }
Beispiel #8
0
        static void Main(string[] args)
        {
            //scegliere forma geometrica
            Console.WriteLine("Che tipo di forma geometrica vuoi creare ? 1 = rettangolo , 2 = rombo, 3 = triangolo");
            int t = int.Parse(Console.ReadLine());

            if (t == 1)
            {
                Rettangolo rettangolo = new Rettangolo(Quadrilatero.N_LATI_QUADRILATERO, 10, 12);
                Console.WriteLine("Vuoi calcolare area(1), perimetro(2) o entrambi(3)?");

                //scegli cosa calcolare
                int r = int.Parse(Console.ReadLine());
                if (r == 1)
                {
                    Console.WriteLine(rettangolo.CalcolaArea());
                }
                if (r == 2)
                {
                    Console.WriteLine(rettangolo.CalcolaPerimetro());
                }
                if (r == 3)
                {
                    Console.WriteLine(rettangolo.CalcolaArea());
                    Console.WriteLine(rettangolo.CalcolaPerimetro());
                }
            }
            if (t == 2)
            {
                Rombo rombo = new Rombo(Quadrilatero.N_LATI_QUADRILATERO, 10, 5, 5);

                //scegli cosa calcolare
                int r = int.Parse(Console.ReadLine());
                if (r == 1)
                {
                    Console.WriteLine(rombo.CalcolaArea());
                }
                if (r == 2)
                {
                    Console.WriteLine(rombo.CalcolaPerimetro());
                }
                if (r == 3)
                {
                    Console.WriteLine(rombo.CalcolaArea());
                    Console.WriteLine(rombo.CalcolaPerimetro());
                }
            }

            Console.ReadLine();
        }
Beispiel #9
0
        public static void FormeGeometriche2()
        {
            //Cosa può fare              //Cos'è
            IFileSerializable cerchio = new Cerchio()
            {
                Nome   = "Cerchio",
                Raggio = 2,
                X      = 3,
                Y      = 6
            };

            IFileSerializable rettangolo = new Rettangolo()
            {
                Nome      = "Rettangolo",
                Larghezza = 10,
                Altezza   = 3
            };

            IFileSerializable triangolo = new Triangolo()
            {
                Nome    = "Triangolo",
                Altezza = 8,
                Base    = 4
            };

            cerchio.SaveToFile("Test");
            Cerchio newCerchio = new Cerchio();

            newCerchio.LoadFromFile("Test");
            newCerchio.DisegnaForma();
            newCerchio.Nome = "Cerchio modificato";
            newCerchio.SaveToFile("Test");

            triangolo.SaveToFile("TestTriangolo");
            Triangolo newTriangolo = new Triangolo();

            newTriangolo.LoadFromFile("TestTriangolo");
            newTriangolo.DisegnaForma();
            newTriangolo.Nome = "Triangolo modificato";
            newTriangolo.SaveToFile("TestTriangolo");

            rettangolo.SaveToFile("TestRettangolo");
            Rettangolo newRettangolo = new Rettangolo();

            newRettangolo.LoadFromFile("TestRettangolo");
            newRettangolo.DisegnaForma();
            newRettangolo.Nome = "Rettangolo modificato";
            newRettangolo.SaveToFile("TestRettangolo");
        }
Beispiel #10
0
        public static void Esercitazione()
        {
            Console.WriteLine("___________Esercitazione 1______________");

            //istanza di Cerchio ma di tipo FormeGeometriche quindi non ha le proprietà del cerchio.
            FormeGeometriche forme = new Cerchio();


            Cerchio c = new Cerchio()
            {
                Nome   = "Cerchio",
                X      = 3,
                Y      = 4,
                Raggio = 6
            };
            Triangolo t = new Triangolo()
            {
                Nome    = "Triangolo",
                Base    = 4,
                Altezza = 3
            };
            Rettangolo r = new Rettangolo()
            {
                Nome      = "Rettangolo",
                Altezza   = 2,
                Larghezza = 4
            };

            Console.WriteLine(c.CalcoloArea());
            Console.WriteLine(c.DisegnoForma());
            Console.WriteLine(t.CalcoloArea());
            Console.WriteLine(t.DisegnoForma());
            Console.WriteLine(r.CalcoloArea());
            Console.WriteLine(r.DisegnoForma());

            Console.WriteLine("___________Esercitazione 2______________");
            c.SaveToFile("Test");
            Cerchio circle = new Cerchio();

            circle.LoadFromFile("Test");

            IFileSerializable[] file = { c };
            foreach (var item in file)
            {
                item.SaveToFile("C");
                item.LoadFromFile("C");
            }
        }
Beispiel #11
0
        public QueryInRettangoloResult Get(
            double lat1,
            double lon1,
            double lat2,
            double lon2,
            [FromUri] string[] classiMezzo)
        {
            var rettangolo = new Rettangolo();

            rettangolo.TopLeft.Lat     = lat1;
            rettangolo.TopLeft.Lon     = lon1;
            rettangolo.BottomRight.Lat = lat2;
            rettangolo.BottomRight.Lon = lon2;

            return(this.getMezziInRettangolo.Get(rettangolo, classiMezzo));
        }
Beispiel #12
0
        public QueryInRettangoloResult Get(Rettangolo rettangolo, string[] classiMezzo, int attSec)
        {
            var geoWithinFilter = Builders <MessaggioPosizione> .Filter
                                  .GeoWithinBox(
                field : m => m.Localizzazione,
                lowerLeftX : rettangolo.TopLeft.Lon,
                lowerLeftY : rettangolo.BottomRight.Lat,
                upperRightX : rettangolo.BottomRight.Lon,
                upperRightY : rettangolo.TopLeft.Lat);

            var lastMessageFilter = Builders <MessaggioPosizione> .Filter
                                    .Eq(m => m.Ultimo, true);

            var recentMessagesFilter = Builders <MessaggioPosizione> .Filter
                                       .Gte(m => m.IstanteAcquisizione, DateTime.UtcNow.AddSeconds(-attSec));

            var filter = geoWithinFilter & lastMessageFilter & recentMessagesFilter;

            if ((classiMezzo != null) && (classiMezzo.Length > 0))
            {
                var classFilter = Builders <MessaggioPosizione> .Filter
                                  .AnyIn(m => m.ClassiMezzo, classiMezzo);

                filter &= classFilter;
            }

            var sw = new Stopwatch();

            sw.Start();

            var messaggiPosizione = this.messaggiPosizioneCollection.Find(filter)
                                    .SortBy(m => m.CodiceMezzo)
                                    .ToEnumerable()
                                    .ToArray();

            sw.Stop();

            return(new QueryInRettangoloResult()
            {
                IstanteQuery = DateTime.UtcNow,
                DurataQuery_msec = sw.ElapsedMilliseconds,
                ClassiMezzo = classiMezzo,
                NumeroMezzi = messaggiPosizione.Length,
                Rettangolo = rettangolo,
                Risultati = messaggiPosizione
            });
        }
Beispiel #13
0
        static void Main(string[] args)
        {
            try
            {
                #region TestUsageOfOperatorOverload
                Rettangolo A = new Rettangolo(3, 4);
                Rettangolo B = new Rettangolo(5, 5);
                Rettangolo C = A + B;
                Console.WriteLine("Area rettangolo A ({0}x{1}): {2}\nArea rettangolo B ({3}x{4}): {5}\nArea A+B ({6}x{7}): {8}", A.L, A.H, A.GetArea(), B.L, B.H, B.GetArea(), C.L, C.H, C.GetArea());
                #endregion

                #region TestOfUsageOfDelegateFunction
                Utility.Separatore();
                Console.WriteLine("Test di utilizzo di una funzione delegata:");
                NumberChanger NC1 = new NumberChanger(TestDelegate.AddNum);
                NumberChanger NC2 = new NumberChanger(TestDelegate.MultNum);
                Console.WriteLine("- valore iniziale: {0}", TestDelegate.GetNum());
                int plus = 25;
                NC1(plus);
                Console.WriteLine("- dopo aggiunta di {0}: {1}", plus, TestDelegate.GetNum());
                int multi = 5;
                NC2(multi);
                Console.WriteLine("- dopo moltiplicazione per {0}: {1}", multi, TestDelegate.GetNum());
                /* resetto il numero */
                NC2(0);
                Console.WriteLine("- dopo aver resettato il numero: {0}", TestDelegate.GetNum());
                NumberChanger NC;
                NC = NC1 + NC2;
                NC(5);
                Console.WriteLine("- dopo multicasting (NC = NC1 + NC2): {0}", TestDelegate.GetNum());
                Console.WriteLine();
                Console.WriteLine("Altro test di utilizzo di un delegato:");
                string      SDel = "Logga questo";
                PrintString PSO  = new PrintString(TestDelegateLog.VideoOutput);
                PrintString PSF  = new PrintString(TestDelegateLog.FileOutput);
                PrintString Log  = PSO + PSF;
                Log(SDel);
                Console.WriteLine("(la stringa qui sopra è stata mostrata a video e loggata in un file simultaneamente attraverso l'utilizzo di un delegato multicast)");
                NumberPrinter NP = delegate(int n)
                {
                    Console.WriteLine("Altro test: il numero {0} è stato scritto con un delegato anonimo!", n);
                };
                NP(0);
                NP(1);
                NP(2);
                #endregion

                #region TestOfUsageOfEvents
                Utility.Separatore();
                Console.WriteLine("Test di utilizzo di eventi (con delegati):");
                EventTest EV = new EventTest();
                EV.OnPrint += EventTest_OnPrint;
                EV.Print("Uallabalooza");
                #endregion

                #region TestOfUsageOfGenerics
                Utility.Separatore();
                GenericArray <string> SArr = new GenericArray <string>(5);
                Console.WriteLine("Test di utilizzo dei GENERICS di tipo \"{0}\":", SArr.TypeOf());
                SArr.Add(0, "Ualla");
                SArr.Add(1, "Balooza");
                SArr.Add(2, "In");
                SArr.Add(3, "The");
                SArr.Add(4, "Sky");
                for (var i = 0; i < SArr.Size; i++)
                {
                    Console.WriteLine("- indice {0}: \"{1}\"", i, SArr.Get(i));
                }
                #endregion

                #region TestOfUsageOfUnsafeCode

                /* i puntatori vanno usati solo nei blocchi di codice "unsafe";
                 * puoi dichiarare unsafe anche una funzione o un metodo, se deve usare puntatori;
                 * occorre permettere la compilazione di codice unsafe dalle impostazioni del progetto */
                unsafe
                {
                    Utility.Separatore();
                    Console.WriteLine("Test di utilizzo di puntatori in codice UNSAFE:");
                    int  SUns  = 12345;
                    int *pSUns = &SUns;
                    Console.WriteLine("- valore: {0}", SUns);
                    Console.WriteLine("- valore da puntatore: {0}", pSUns->ToString());
                    Console.WriteLine("- indirizzo della variabile: {0}", (int)pSUns);
                    Console.WriteLine();
                    int  SUns2  = 54321;
                    int *pSUns2 = &SUns2;
                    Console.WriteLine("Prima dello SWAP dei due puntatori: {0} - {1}", SUns, SUns2);
                    Swap(pSUns, pSUns2);
                    Console.WriteLine("Dopo lo SWAP dei due puntatori: {0} - {1}", SUns, SUns2);
                    Console.WriteLine();
                    Console.WriteLine("Test di accesso array con puntatori:");
                    int[] Arr = new int[] { 10, 20, 30 };
                    fixed(int *pArr = Arr)
                    for (int i = 0; i < Arr.Length; i++)
                    {
                        Console.WriteLine("- Indirizzo di Arr[{0}]: {1}; Valore di Arr[{0}]: {2}", i, (int)(pArr + i), *(pArr + i));
                    }
                }
                #endregion

                #region TestOfUsageOfThreads
                Utility.Separatore();
                Console.WriteLine("Test di utilizzo dei THREAD");
                Thread TH = Thread.CurrentThread;
                TH.Name = "ThreadMain";
                Console.WriteLine("Nome del thread corrente: {0}", TH.Name);
                ThreadStart TS = new ThreadStart(ThreadSingolo);
                Console.WriteLine("Creazione in corso di un thread figlio...");
                Thread Child = new Thread(TS);
                Child.Start();
                int SleepTime = 5000;
                Console.WriteLine("Metto in pausa per {0} secondi...", SleepTime / 1000);
                Thread.Sleep(SleepTime);
                Console.WriteLine("Riprendo l'esecuzione!");

                /*Console.WriteLine("Esco dall'esecuzione del thread (metodo Abort())...");
                 * Child.Abort();*/ /* non usare Child.Abort! usa Child.Interrupt quando è in stato di sleep-wait-join */
                #endregion
            }
            #region catch

            /*catch(ThreadAbortException e)
             * {
             *  Console.WriteLine("Thread distrutto! (metodo Abort())");
             * }*/
            catch (Exception e)
            {
                Utility.MostraEccezione <Exception>(e);
            }
            #endregion

            Console.ReadKey();
        }
        private void BtnCalcola_Click(object sender, EventArgs e)
        {
            {
                switch (flag)
                {
                case 0:
                    double raggio = G3D.GetDouble(txtRaggio.Text);
                    if (rbtnCerchio.Checked && txtRaggio.Text == "" || G3D.IsNegative(raggio))
                    {
                        MessageBox.Show("Inserisci un RAGGIO valido prima di continuare.");
                    }
                    else
                    {
                        Cerchio       c     = new Cerchio(raggio);
                        FormRisultato cForm = new FormRisultato(c.ToString(), c.CalcoloArea());
                        cForm.Show();
                    }
                    break;

                case 1:
                    double qLato = G3D.GetDouble(txtLato.Text);
                    if (rbtnQuadrato.Checked && txtLato.Text == "" || G3D.IsNegative(qLato))
                    {
                        MessageBox.Show("Inserisci un LATO valido prima di continuare.");
                    }
                    else
                    {
                        Quadrato      q     = new Quadrato(qLato);
                        FormRisultato qForm = new FormRisultato(q.ToString(), q.CalcoloArea());
                        qForm.Show();
                    }
                    break;

                case 3:
                    double tBase    = G3D.GetDouble(txtBase.Text);
                    double tAltezza = G3D.GetDouble(txtAltezza.Text);
                    if (rbtnTriangolo.Checked && txtBase.Text == "" || txtAltezza.Text == "" || G3D.IsNegative(tAltezza, tBase))
                    {
                        MessageBox.Show("Inserisci BASE e ALTEZZA validi prima di continuare.");
                    }
                    else
                    {
                        TriangoloIso  t     = new TriangoloIso(tBase, tAltezza);
                        FormRisultato tForm = new FormRisultato(t.ToString(), t.CalcoloArea());
                        tForm.Show();
                    }
                    break;

                case 4:
                    double rBase     = G3D.GetDouble(txtBase.Text);
                    double rAltezzaa = G3D.GetDouble(txtAltezza.Text);
                    if (rbtnRettangolo.Checked && txtBase.Text == "" || txtAltezza.Text == "" || G3D.IsNegative(rBase, rAltezzaa))
                    {
                        MessageBox.Show("Inserisci BASE e ALTEZZA validi prima di continuare.");
                    }
                    else
                    {
                        Rettangolo    r     = new Rettangolo(rBase, rAltezzaa);
                        FormRisultato rForm = new FormRisultato(r.ToString(), r.CalcoloArea());
                        rForm.Show();
                    }
                    break;

                case 5:
                    double pLato = G3D.GetDouble(txtLato.Text);
                    if (rbtnPentagono.Checked && txtLato.Text == "" || G3D.IsNegative(pLato))
                    {
                        MessageBox.Show("Inserisci un LATO valido prima di continuare.");
                    }
                    else
                    {
                        Pentagono     p     = new Pentagono(pLato);
                        FormRisultato pForm = new FormRisultato(p.ToString(), p.CalcoloArea());
                        pForm.Show();
                    }
                    break;

                case 6:
                    double esLato = G3D.GetDouble(txtLato.Text);
                    if (rbtnEsagono.Checked && txtLato.Text == "" || G3D.IsNegative(esLato))
                    {
                        MessageBox.Show("Inserisci un LATO valido prima di continuare.");
                    }
                    else
                    {
                        Esagono       es     = new Esagono(esLato);
                        FormRisultato esForm = new FormRisultato(es.ToString(), es.CalcoloArea());
                        esForm.Show();
                    }
                    break;

                default:
                    MessageBox.Show("Errore!");
                    break;
                }
            }
        }