예제 #1
0
파일: Program.cs 프로젝트: agraphe/origin
    static void Main(string[] args)
    {
        // Testen der Objektzähler
        Console.WriteLine("TEST DER OBJEKTZÄHLER");
        Console.WriteLine("----------------------------------");
        Rectangle rect1 = new Rectangle();
        Rectangle rect2 = new Rectangle();
        Rectangle rect3 = new Rectangle();
        Circle kreis1 = new Circle();
        Circle kreis2 = new Circle();
        rect1.Dispose();
        rect2.Dispose();
        kreis1.Dispose();
        Circle kreis3 = new Circle();
        Console.WriteLine("Alle Objekte: {0}", GeometricObject.CountGeometricObjects);
        Console.WriteLine("Alle Rectangle: {0}", Rectangle.CountRectangles);
        Console.WriteLine("Alle kreise: {0}", Circle.CountCircles);

        Console.WriteLine("\nTEST DER METHODE ARRAY.SORT");
        Console.WriteLine("----------------------------------");
        GeometricObject[] liste = new GeometricObject[5];
        liste[0] = new Circle(88);
        liste[1] = new Rectangle(12, 90);
        liste[2] = new GraphicCircle(50);
        liste[3] = new Rectangle(10, 96);
        liste[4] = new GraphicRectangle(3, 6);

        Array.Sort(liste);
        foreach (GeometricObject item in liste)
            Console.WriteLine(item.ToString());
      Console.ReadLine();
    }
예제 #2
0
 // Klassenmethode
 public static int Bigger(GeometricObject object1, GeometricObject object2)
 {
     if (object1 == null || object2 == null) return 0;
     if (object1 == null) return -1;
     if (object2 == null) return 1;
     if (object1.GetArea() > object2.GetArea()) return 1;
     if (object1.GetArea() < object2.GetArea()) return -1;
     return 0;
 }
예제 #3
0
 public virtual int Bigger(GeometricObject @object)
 {
     if (@object == null || GetArea() > @object.GetArea())
     {
         return(1);
     }
     if (GetArea() < @object.GetArea())
     {
         return(-1);
     }
     return(0);
 }
 public virtual int Bigger(GeometricObject obj)
 {
     if (obj == null || GetArea() > obj.GetArea())
     {
         return(1);
     }
     if (GetArea() < obj.GetArea())
     {
         return(-1);
     }
     return(0);
 }
        public int Compare(object x, object y)
        {
            GeometricObject geo1 = x as GeometricObject;
            GeometricObject geo2 = y as GeometricObject;

            if (geo1 != null && geo2 != null)
            {
                return(geo1.CompareTo(geo2));
            }
            else
            {
                throw new InvalidCastException();
            }
        }
예제 #6
0
 public static int Bigger(GeometricObject rect1, GeometricObject rect2)
 {
     if (rect1.GetArea() > rect2.GetArea())
     {
         return(1);
     }
     else if (rect1.GetArea() == rect2.GetArea())
     {
         return(0);
     }
     else
     {
         return(-1);
     }
 }
예제 #7
0
 public virtual int Bigger(GeometricObject rect)
 {
     if (GetArea() > rect.GetArea())
     {
         return(1);
     }
     else if (GetArea() == rect.GetArea())
     {
         return(0);
     }
     else
     {
         return(-1);
     }
 }
예제 #8
0
        public virtual int CompareTo(Object @object)
        {
            GeometricObject geoObject = @object as GeometricObject;

            if (geoObject != null)
            {
                if (GetArea() < geoObject.GetArea())
                {
                    return(-1);
                }
                if (GetArea() == geoObject.GetArea())
                {
                    return(0);
                }
                return(1);
            }
            throw new ArgumentException("Ungültige Objektübergabe. Es wird der Typ 'GeometricObject' erwartet.");
        }
        public virtual int CompareTo(object obj)
        {
            GeometricObject geoObject = obj as GeometricObject;

            if (geoObject != null)
            {
                if (GetArea() < geoObject.GetArea())
                {
                    return(-1);
                }
                if (GetArea() == geoObject.GetArea())
                {
                    return(0);
                }
                return(1);
            }
            throw new ArgumentException("Es wird der Typ GeometricObject erwartet.");
        }
예제 #10
0
 public static int Bigger(GeometricObject object1, GeometricObject object2)
 {
     if (object1 == null && object2 == null)
     {
         return(0);
     }
     if (object1 == null)
     {
         return(-1);
     }
     if (object2 == null)
     {
         return(1);
     }
     if (object1.GetArea() > object2.GetArea())
     {
         return(1);
     }
     if (object1.GetArea() < object2.GetArea())
     {
         return(-1);
     }
     return(0);
 }
예제 #11
0
        static void Main(string[] args)
        {
            // Testen der Objektzähler
            Console.WriteLine("TEST DER OBJEKTZÄHLER");
            Console.WriteLine("----------------------------------");
            Rectangle rect1  = new Rectangle();
            Rectangle rect2  = new Rectangle();
            Rectangle rect3  = new Rectangle();
            Circle    kreis1 = new Circle();
            Circle    kreis2 = new Circle();

            rect1.Dispose();
            rect2.Dispose();
            kreis1.Dispose();
            Circle kreis3 = new Circle();

            Console.WriteLine("Alle Objekte: {0}", GeometricObject.CountGeometricObjects);
            Console.WriteLine("Alle Rectangle: {0}", Rectangle.CountRectangles);
            Console.WriteLine("Alle kreise: {0}", Circle.CountCircles);

            Console.WriteLine("\nTEST DER METHODE ARRAY.SORT");
            Console.WriteLine("----------------------------------");
            GeometricObject[] liste = new GeometricObject[5];
            liste[0] = new Circle(88);
            liste[1] = new Rectangle(12, 90);
            liste[2] = new GraphicCircle(50);
            liste[3] = new Rectangle(10, 96);
            liste[4] = new GraphicRectangle(3, 6);

            Array.Sort(liste);
            foreach (GeometricObject item in liste)
            {
                Console.WriteLine(item.ToString());
            }
            Console.ReadLine();
        }
예제 #12
0
 // Klassenmethode
 public static int Bigger(GeometricObject geoObj1, GeometricObject geoObj2)
 {
     return(geoObj1.Bigger(geoObj2));
 }
예제 #13
0
 // Instanzmethoden
 public virtual int Bigger(GeometricObject rect)
 {
     return(Math.Sign(GetArea() - rect.GetArea()));
 }
예제 #14
0
        static void Main(string[] args)
        {
            //     Document doc = new Document();
            //     doc.Copy();
            //     ICopy copy = doc;
            //     copy.Copy();
            //     IAdress adress = doc;
            //     adress.Copy();
            //
            //
            //
            //     Rectangle viereck = new Rectangle();
            //     Rectangle viereck1 = new Rectangle();
            //     Rectangle viereck2 = new Rectangle(21,11);
            //     Rectangle viereck3 = new Rectangle();
            //
            //
            //     Console.WriteLine($"Anzahl der Objekte ist: {GeometricObject.CountGeometricObjects}");
            //
            //     Circle kreis = new Circle(21);
            //     Circle kreis1 = new Circle(16);
            //     Circle kreis2 = new Circle(15);
            //
            //     Console.WriteLine($"Anzahl der Objekte ist; {GeometricObject.CountGeometricObjects}");
            //
            //     IDraw[] arr = new IDraw[6];
            //     arr[0] = new GraphicCircle();
            //     arr[1] = new GraphicRectangle();
            //     arr[2] = new Auto();
            //     arr[3] = new GraphicCircle();
            //     arr[4] = new GraphicRectangle();
            //     arr[5] = new Auto();
            //     foreach (IDraw item in arr)
            //     {
            //         item.Draw();
            //     }
            //
            GeometricObject[] arr = new GeometricObject[4];
            arr[0] = new Circle(20);
            arr[1] = new Rectangle(15, 15);
            arr[2] = new Circle(22);
            arr[3] = new GraphicRectangle(1, 1);
            Array.Sort(arr, new GeometricObjectComparer());
            foreach (GeometricObject item in arr)
            {
                Console.WriteLine(item.ToString());
            }


            Console.ReadLine();


            //         if (kreis1.Bigger(kreis2) == -1)
            //             Console.WriteLine("kreis1 < kreis 2");
            //         else
            //             Console.WriteLine("kreis1 > kreis2");
            //         Console.ReadLine();
            //
            //         kreis.XCoordinate = -100;
            //         kreis.YCoordinate = 90;
            //         kreis.Move(120, -200);
            //
            //
            //
            //         Console.WriteLine("Geben sie den Radius an");
            //         kreis.Radius = Convert.ToDouble(Console.ReadLine());
            //
            //
            //
            //
            //         Console.WriteLine($"Die Fläche beträgt {kreis.GetArea()}" );
            //         Console.WriteLine($"Der Umfang beträgt {kreis.GetPerimeter()}");
            //
            //         Console.ReadLine();
            //
            //         Console.WriteLine($"Geben sie die Länge des Vierecks an");
            //         viereck.Length = Convert.ToDouble(Console.ReadLine());
            //         Console.WriteLine($"Geben sie die Breite des Vierecks an");
            //         viereck.With = Convert.ToDouble(Console.ReadLine());
            //
            //         Console.WriteLine($"Der Umfang beträgt: {viereck.GetPerimeter()}");
            //         Console.WriteLine($"Die Fläche beträgt: {viereck.GetArea()}");
            //
            //         Console.ReadLine();
            //
            //        if (kreis != null)
            //        {
            //            Console.WriteLine("Das Objekt existiert nicht");
            //            kreis = new Circle();
            //        }
            //        else
            //        {
            //            Console.WriteLine("Das Objekt existiert");
            //            Console.ReadLine();
            //        }
        }
예제 #15
0
        static void Main(string[] args)
        {
            Circle kreis1 = new Circle(10);
            Circle kreis2 = new Circle(15, -140, 440);

            // Allgemeine Daten ausgeben
            Console.WriteLine("Allgemeine Daten:");
            Console.WriteLine(new string('=', 17)); // zeichnet Linie
            Console.WriteLine("kreis1 - Radius:      {0}", kreis1.Radius);
            Console.WriteLine("       - XKoordinate: {0}", kreis1.XCoordinate);
            Console.WriteLine("       - YKoordinate: {0}", kreis1.YCoordinate);
            Console.WriteLine();
            Console.WriteLine("kreis2 - Radius:      {0}", kreis2.Radius);
            Console.WriteLine("       - XKoordinate: {0}", kreis2.XCoordinate);
            Console.WriteLine("       - YKoordinate: {0}", kreis2.YCoordinate);
            Console.WriteLine();

            // Anzahl der Circle-Objekte ausgeben
            Console.WriteLine("Anzahl 'Circle'-Objekte: {0}", Circle.CountCircles);
            Console.WriteLine();

            // Test: Fläche und Umfang
            Console.WriteLine("Fläche und Umfang des Objekts 'kreis1'");
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("Fläche kreis1: {0}", kreis1.GetArea());
            Console.WriteLine("Umfang kreis1: {0}", kreis1.GetCircumference());
            Console.WriteLine();

            // Test: Fläche und Umfang ==  kreis2
            Console.WriteLine("Fläche und Umfang des Objekts 'kreis2'");
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("Fläche kreis2: {0}", kreis2.GetArea());
            Console.WriteLine("Umfang kreis2: {0}", kreis2.GetCircumference());
            Console.WriteLine();


            // Test: Verschiebung kreis1
            Console.WriteLine("Verschiebung des Objekts 'kreis1' um dx=150 / dy=400");
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("X (alt): {0} / Y (alt): {1}", kreis1.XCoordinate, kreis1.YCoordinate);
            kreis1.Move(150, 400);
            Console.WriteLine("X (neu): {0} / Y (neu): {1}", kreis1.XCoordinate, kreis1.YCoordinate);
            Console.WriteLine();

            // Test: Verschiebung kreis1 zum 2. Mal
            Console.WriteLine("Verschiebung des Objekts 'kreis1' zzum 2. Mal um dx=350 / dy=600");
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("X (alt): {0} / Y (alt): {1}", kreis1.XCoordinate, kreis1.YCoordinate);
            kreis1.Move(350, 600);
            Console.WriteLine("X (neu): {0} / Y (neu): {1}", kreis1.XCoordinate, kreis1.YCoordinate);
            Console.WriteLine();


            // Test: Größenvergleich
            if (kreis1.Bigger(kreis2) == 1)
            {
                Console.WriteLine("Objekt 'kreis1' ist größer als Objekt 'kreis2'");
            }
            else if (kreis1.Bigger(kreis2) == 0)
            {
                Console.WriteLine("Objekt 'kreis1' ist gleich Objekt 'kreis2'");
            }
            else
            {
                Console.WriteLine("Objekt 'kreis1' ist kleiner Objekt 'kreis2'");
            }

            Console.WriteLine();

            // Test Anzahl Kreisobjekte (Listung 4.3)
            GraphicCircle gc = new GraphicCircle();

            Console.WriteLine("Anzahl 'Circle'-Objekte mit zusätzlich GraphicCircle: {0}", Circle.CountCircles);
            Console.WriteLine();
            Console.WriteLine();


            Console.WriteLine("============ Rectangles ===============================");
            Console.WriteLine();

            Rectangle rect1 = new Rectangle(10, 200);
            Rectangle rect2 = new Rectangle(50, 400, 5, -100);

            // Daten von Rect1
            Console.WriteLine("Allgemeine Daten Rectangles:");
            Console.WriteLine(new string('-', 28)); // zeichnet Linie
            Console.WriteLine("Rect1 - Length:       {0}", rect1.Length);
            Console.WriteLine("..... - Width:        {0}", rect1.Width);
            Console.WriteLine("      - XKoordinate: {0}", rect1.XCoordinate);
            Console.WriteLine("      - YKoordinate: {0}", rect1.YCoordinate);
            Console.WriteLine();

            // Test: Fläche und Umfang
            Console.WriteLine("Fläche und Umfang des Objekts 'rect1'");
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("Fläche rect1: {0}", rect1.GetArea());
            Console.WriteLine("Umfang rect1: {0}", rect1.GetCircumference());
            Console.WriteLine();


            // Daten von Rect2
            Console.WriteLine("Rect2 - Length and Width:       {0} and {1}", rect2.Length, rect2.Width);
            Console.WriteLine("      - XKoordinate and YKoordinate:  {0}, {1}", rect2.XCoordinate, rect2.YCoordinate);
            Console.WriteLine();

            // Test: Fläche und Umfang
            Console.WriteLine("Fläche und Umfang des Objekts 'rect2'");
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("Fläche rect2: {0}", rect2.GetArea());
            Console.WriteLine("Umfang rect2: {0}", rect2.GetCircumference());
            Console.WriteLine();

            // Test: Verschiebung Rect1
            Console.WriteLine("Verschiebung des Objekts 'Rect1' um dx=150 / dy=400");
            Console.WriteLine(new string('-', 51));
            Console.WriteLine("X (alt): {0} / Y (alt): {1}", rect1.XCoordinate, rect1.YCoordinate);
            rect1.Move(150, 400);
            Console.WriteLine("X (neu): {0} / Y (neu): {1}", rect1.XCoordinate, rect1.YCoordinate);
            Console.WriteLine();

            // Anzahl der Rectangle-Objekte ausgeben
            Console.WriteLine("Anzahl 'Rectangle-'-Objekte: {0}", Rectangle.CountRectangles);
            Console.WriteLine();


// ======== Rectangles und Kreise der Größe nach vergleichen

            Console.WriteLine("Vergleich kreis1, rect1 ergibt:  {0}", GeometricObject.Bigger2(kreis1, rect1));
            Console.WriteLine();
            Console.WriteLine("Vergleich kreis2, kreis1 ergibt: {0}", GeometricObject.Bigger2(kreis2, kreis1));

            //
            Console.ReadLine();
        }
예제 #16
0
 // Instanzmethoden
 // Die virtuelle Methode ist allgemein formuliert und gilt daher
 // sowohl für die Klasse <Circle> wie <Rectangle>
 public virtual int Bigger(GeometricObject @object)
 {
     if (@object == null || GetArea() > @object.GetArea()) return 1;
     if (GetArea() < @object.GetArea()) return -1;
     return 0;
 }