public void Beschleunige_PKW_ueber_MaxGeschwindigkeit()
        {
            PKW pkw1 = new PKW("BMW", 260, 30000, 3);

            pkw1.StarteMotor();

            pkw1.Beschleunige(300);

            //Dies ASSERT-Klasse enthält diverse Vergleichsmethoden, welche in Unit-Tests verwendet werden können. Pro Test-Methode
            ///muss es mindesten einen Assert-Aufruf geben
            Assert.AreEqual(pkw1.MaxGeschwindigkeit, pkw1.AktGeschwindigkeit);
        }
        public void Teste_Beschleunigung()
        {
            //Initialisierungphase
            PKW pkw = new PKW("BMW", 190, 26000);

            //Vorbereitungsphase
            pkw.StarteMotor();
            pkw.Beschleunige(200);

            //Testphase

            //Die ASSERT-Klasse enthält diverse Vergleichsmethoden, welche in Unit-Tests verwendet werden können. Pro Test-Methode
            ///muss es mindesten einen Assert-Aufruf geben
            Assert.AreEqual(pkw.MaxGeschwindigkeit, pkw.AktGeschwindigkeit);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Transportmittel transport = new Transportmittel("BMW", 4365.345, 200);

            // Bemerkung zu statischen Methoden / Memebers
            // transport.kmToMilesAndOtherWayBack(4.33, "miles"); // nicht möglich über Instanzverweis, weil Methode static
            double km = Transportmittel.kmToMilesAndOtherWayBack(4.33, "miles");

            PKW audiPKW = new PKW("Audi", 20000.30, 240, 5, 3000);

            // Bemerkung zu 'virtual & override' Methoden und Methoden mit 'new'
            Console.WriteLine(@$ "
BeschreibeMich von Transportmittel transport:
{transport.BeschreibeMich()}
");
            Console.WriteLine(@$ "

BeschreibeMich von PKW audiPKW:
{audiPKW.BeschreibeMich()}
");

            Console.WriteLine(@$ "

StarteMotor von Transportmittel transport:
");
            transport.StarteMotor();

            Console.WriteLine(@$ "

StarteMotor von PKW audiPKW:
");
            audiPKW.StarteMotor();

            Transportmittel audiTransportmittel = new PKW("Audi", 20000.30, 240, 5, 3000);

            Console.WriteLine(@$ "

StarteMotor von Transportmittel audiTransportmittel (mit Konstruktor von PKW):
");
            audiTransportmittel.StarteMotor();


            Console.WriteLine(@$ "
BeschreibeMich von Transportmittel audiTransportmittel (mit Konstruktor von PKW):
{audiTransportmittel.BeschreibeMich()}
");

            Flugzeug        flugzeug   = new Flugzeug("Boeing", 2_000_000.34, 400, 11, 34_999);
            Transportmittel transport1 = new Transportmittel("Auto", 100_000.00, 230);

            // ================================================
            Console.WriteLine("\n\nMethode die Prüft, ob Beladen möglich ist");
            Console.WriteLine("BeladeWennMöglich(flugzeug, t1): {0}", BeladeWennMöglich(flugzeug, transport1));


            bool BeladeWennMöglich(Transportmittel t1, Transportmittel t2)
            {
                if (t1 is Flugzeug && t2 is PKW)
                {
                    // Belade() ist nicht bei Transportmittel dabei
                    // Casting notwendig
                    // ((Flugzeug)t1).Belade(new Transportmittel[] { t2 });
                    // oder den Typ anpassen
                    (t1 as Flugzeug).Belade(new Transportmittel[] { t2 });
                    return(true);
                }
                else if (t1 is PKW && t2 is Flugzeug)
                {
                    (t2 as Flugzeug).Belade(new Transportmittel[] { t1 });
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            Console.ReadLine();
        }