コード例 #1
0
ファイル: Program.cs プロジェクト: ppedvAG/CSharp181002VIE
        static void Main(string[] args)
        {
            // Übung:

            // 3 Klassen

            // 1) Grafik
            // Features:
            // string Farbe als Autoproperty
            // Methode Zeichnen()  ---> cw("Eine Grafik mit der Farbe {Farbe} wird gezeichnet")

            // 2) Kreis, erbt von der Grafik
            // Features:
            // int Radius als Autoproperty

            // 3) Rechteck, erbt von der Grafik
            // Features:
            // int Höhe, int Breite als Autopropertyp

            // Im Main()
            // Erstellts 1 Grafik, 1 Kreis und 1 Rechteck
            // Von jedem Objekt 1 mal Zeichnen() ausführen...

            Grafik g1 = new Grafik();

            g1.Farbe = "Rot";

            Kreis k1 = new Kreis();

            k1.Radius = 12;
            k1.Farbe  = "Gelb";

            Rechteck r1 = new Rechteck();

            r1.Höhe   = 33;
            r1.Breite = 44;
            r1.Farbe  = "Grün";

            g1.Zeichnen();
            k1.Zeichnen();
            r1.Zeichnen();

            Console.WriteLine("------------------- Überschreiben -------------------");

            // Polymorphie:
            // Ein Objekt der Subklasse kann wie ein Objekt der Basisklasse verwendet werden

            Grafik g2 = new Kreis();

            g2.Farbe = "Lila";
            g2.Zeichnen();

            Kreis k2 = (Kreis)g2; // in wirklichkeit ist ja ein Kreis drinnen

            k2.Farbe = "Gelb";
            g2.Zeichnen();

            Console.WriteLine("------------------- Verstecken -------------------");

            Grafik g3 = new Rechteck();

            g3.Farbe = "Orange";
            g3.Zeichnen();

            Rechteck r2 = (Rechteck)g3;

            r2.Zeichnen();

            Console.WriteLine("------------------- Anwendungsbeispiel ----------------------");

            Grafik[] alleGrafiken = new Grafik[5];
            alleGrafiken[0] = g1;
            alleGrafiken[1] = k1;
            alleGrafiken[2] = r1;
            alleGrafiken[3] = k2;
            alleGrafiken[4] = new Rechteck();

            foreach (var item in alleGrafiken)
            {
                //if(item.GetType() == typeof(Rechteck))
                if (item is Rechteck)
                {
                    Console.WriteLine("Ich bin in wirklichkeit ein Rechteck");
                    Rechteck temp = (Rechteck)item;
                    temp.Zeichnen();
                }
                else
                {
                    item.Zeichnen();
                }
            }

            Console.WriteLine("---ENDE---");
            Console.ReadKey();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            Lottozahlengenerator lg = new Lottozahlengenerator();

            lg.Generate(6, 1, 45); // Österreich
            lg.Generate(6, 1, 49); // Deutschland

            Grafik g1 = new Grafik();

            g1.Farbe = "Rot";

            Kreis k1 = new Kreis();

            k1.Farbe  = "Gelb";
            k1.Radius = 10;

            Rechteck r1 = new Rechteck();

            r1.Farbe  = "Grün";
            r1.Höhe   = 12;
            r1.Breite = 30;

            g1.Zeichnen();
            k1.Zeichnen();
            r1.Zeichnen();

            // Polymorphie -> Vielgestaltigkeit von Objekten
            // Polymorphie bedeutet, dass Objekte der Subklasse wie Objekte der Basisklasse verwendet werden können
            Console.WriteLine("---------------------- Überschreiben --------------------");

            Grafik g2 = new Kreis();

            g2.Farbe = "Violett";
            g2.Zeichnen();

            // Casten
            Kreis k2 = (Kreis)g2;

            k2.Radius = 50;
            g2.Zeichnen();

            Console.WriteLine("---------------------- Verstecken --------------------");

            Grafik g3 = new Rechteck();

            g3.Farbe = "Orange";
            g3.Zeichnen();

            Console.WriteLine("---------------------- Anwendungsfall --------------------");

            #region Arrays

            //int zahl1 = 42;
            //int[] eindimensionalesArray = new int[10]; // 0,1,2,3...9
            //eindimensionalesArray[0] = 21;
            //eindimensionalesArray[1] = 3;
            //eindimensionalesArray[2] = 99;

            //// Alternative Schreibweisen:
            //string[,] mehrdimensional = new string[10, 5];
            //mehrdimensional[0, 0] = "Hallo";
            //mehrdimensional[0, 1] = "Welt";

            //int[] zahlen = new int[] { 12, 5, 8, 4, 2, 54, 7, 9 };
            //int[] zahlen2 = { 12, 5, 8, 4, 2, 54, 7, 9 };

            //Console.WriteLine(eindimensionalesArray[1]);
            #endregion

            Grafik[] alleGrafiken = new Grafik[5]; // Liste/Array der Basisklasse kann auch elemente der Subklasse beinhalten
            alleGrafiken[0] = k1;
            alleGrafiken[1] = r1;
            alleGrafiken[2] = g1;
            alleGrafiken[3] = k2;
            alleGrafiken[4] = g2;
            //for (int i = 0; i < alleGrafiken.Length; i++)
            //{
            //    alleGrafiken[i].Zeichnen();
            //}
            foreach (Grafik item in alleGrafiken)
            {
                item.Zeichnen();
            }

            Console.WriteLine("---ENDE---");
            Console.ReadKey();
        }
コード例 #3
0
        static void Main(string[] args)
        {
            Grafik g1 = new Grafik();

            g1.Farbe = "Rot";
            Kreis k1 = new Kreis(20);

            k1.Farbe = "Gelb";
            Rechteck r1 = new Rechteck(20, 10);

            r1.Farbe = "Grün";

            g1.Zeichnen();
            k1.Zeichnen();
            r1.Zeichnen();

            // Polymorphie: Ein Objekt der Subklasse kann wie ein Objekt der Basisklasse verwendet werden

            Grafik g2 = new Kreis(50);

            g2.Farbe = "Orange";
            g2.Zeichnen();

            // Casten
            Kreis k2 = (Kreis)g2; // ich weiß das in wirklichkeit ein kreis drinnen ist

            k2.Zeichnen();

            // as - Operator
            Kreis k3 = g2 as Kreis;

            k3.Zeichnen();

            // Unterschied:
            // Wenn der Cast fehlschlägt: InvalidCastException
            // as: null

            // Lösung: is - Operator
            if (g2 is Kreis)
            {
                // .... mach daraus einen Kreis
            }

            Console.WriteLine("---Verstecken---");


            Grafik g4 = new Rechteck(50, 100);

            g4.Farbe = "Violett";
            g4.Zeichnen();

            Rechteck r4 = (Rechteck)g4;

            r4.Zeichnen();

            Console.WriteLine("----------------Anwendungsfall----------------");
            #region Variante ohne Polymorphie
            //Grafik[] meineGrafiken = new Grafik[3];
            //meineGrafiken[0] = new Grafik() { Farbe = "Türkis" };
            //meineGrafiken[1] = g1;
            //meineGrafiken[2] = new Grafik() { Farbe = "Weiß" };

            //Kreis[] meineKreise = new Kreis[3];
            //meineKreise[0] = new Kreis(9) { Farbe = "Schwarz" };
            //meineKreise[1] = k1;
            //meineKreise[2] = new Kreis(123) { Farbe = "Grau" };

            //Rechteck[] meineRechtecke = new Rechteck[3];
            //meineRechtecke[0] = new Rechteck(10,10) { Farbe = "Kaffemilchbeige" };
            //meineRechtecke[1] = r1;
            //meineRechtecke[2] = new Rechteck(50,49) { Farbe = "Ocker" };

            //foreach (Grafik item in meineGrafiken)
            //{
            //    item.Zeichnen();
            //}

            //foreach (Kreis item in meineKreise)
            //{
            //    item.Zeichnen();
            //}

            //foreach (Rechteck item in meineRechtecke)
            //{
            //    item.Zeichnen();
            //}
            #endregion


            Grafik[] meineGrafiken = new Grafik[9];
            meineGrafiken[0] = new Grafik()
            {
                Farbe = "Türkis"
            };
            meineGrafiken[1] = g1;
            meineGrafiken[2] = new Grafik()
            {
                Farbe = "Weiß"
            };
            meineGrafiken[3] = new Kreis(9)
            {
                Farbe = "Schwarz"
            };
            meineGrafiken[4] = k1;
            meineGrafiken[5] = new Kreis(123)
            {
                Farbe = "Grau"
            };
            meineGrafiken[6] = new Rechteck(10, 10)
            {
                Farbe = "Kaffemilchbeige"
            };
            meineGrafiken[7] = r1;
            meineGrafiken[8] = new Rechteck(50, 49)
            {
                Farbe = "Ocker"
            };

            foreach (var item in meineGrafiken)
            {
                //if(item is Rechteck)
                //{
                //    var rechteck = (Rechteck)item;
                //    rechteck.Zeichnen();
                //}
                if (item is Rechteck r) // Seit C#7
                {
                    r.Zeichnen();
                }
                else
                {
                    item.Zeichnen();
                }
            }

            Console.WriteLine("---ENDE---");
            Console.ReadKey();
        }