示例#1
0
        static void Main(string[] args)
        {
            //List<Person> persons = new List<Person>();
            //Person p = new Person();
            PersonHandler personHandler = new PersonHandler();


            try
            {
                var p1 = personHandler.CreatePerson(31, "Mohamed", "Hlabba", 178, 82);
                var p2 = personHandler.CreatePerson(25, "Amine", "Berkk", 180, 90);
                var p3 = personHandler.CreatePerson(63, "Sihem", "Darine", 190, 90);
                var p4 = personHandler.CreatePerson(70, "Mary", "kevinn", 166, 75);

                var p5 = personHandler.CreatePerson(20, "George", "Magnum", 192, 99);
                personHandler.SetAge(p5, 28);
                personHandler.SavePerson(p1);
                personHandler.SavePerson(p2);
                personHandler.SavePerson(p3);
                personHandler.SavePerson(p4);
                personHandler.SavePerson(p5);


                personHandler.DeletePerson(p2);
            }

            catch (Exception exception)
            {
                Console.WriteLine("Message:" + exception.Message, Color.Red);
                Console.WriteLine("Stack Trace" + exception.StackTrace);
            }


            finally
            {
                foreach (String resultat in personHandler.GetAllPersons())
                {
                    Console.WriteLine(resultat, Color.YellowGreen);
                    Console.WriteLine("***************************************************************");
                }

                foreach (String res in personHandler.FetchByLastName("Darine"))
                {
                    Console.WriteLine(res);
                    Console.WriteLine("***************************************************************");
                }
            }

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

            List <Animal> animals = new List <Animal>();

            Bird bird = new Bird(" grå wingspan", "Canarrii", 1, 0.004);


            Flamingo flamingo = new Flamingo("South Africa", "Yellow", "flamingoos", 1, 5);



            Wolf wolf = new Wolf("Big", "Lobbo", 3, 70);


            Dog dog1 = new Dog("Labrador", "Layka", 2, 35);
            Dog dog2 = new Dog("Chiwawa", "Luna", 1, 3);
            Dog dog3 = new Dog("Husky", "Beau", 3, 28);


            animals.Add(dog1);
            animals.Add(dog2);
            animals.Add(dog3);
            animals.Add(wolf);
            animals.Add(flamingo);
            animals.Add(bird);


            WolfMan wolfman = new WolfMan("Big", "The wolfman", 5, 100);

            animals.Add(wolfman);

            foreach (Animal animal in animals)
            {
                string b = animal.Stats();
                Console.WriteLine(b, Color.Cyan);

                animal.DoSound();
                Console.WriteLine("************************************************************");


                //7
                if (animal is IPerson)
                {
                    IPerson man = (IPerson)animal;
                    Console.WriteLine(man.Talk());
                }
            }

            List <Dog> dogs  = new List <Dog>();
            Horse      horse = new Horse("Beige", "Bouras", 5, 300);


            ///9.F Det funkar inte eftersom dog och horse are inte på samma typ.
            ///10.F För att lösa det här måste listan vara av typ Animal så på så sätt kan vi lagra alla sorter av  djur
            //dogs.Add(horse);



            //foreach (Animal a in animals)

            //{
            //    if (a is Dog)

            //    Console.WriteLine(a.Stats(),Color.Red);

            //    ////16.Jag kommer inte åt Eat()metoden 17.eftersom den är specifik bara för dogs klass
            //    //********** Console.WriteLine(a.eat);************

            //}

            ///18.Ett säkert sätt är att casta animal till dog
            foreach (Animal a in animals)
            {
                if (a is Dog)
                {
                    Dog dog = (Dog)a;
                    Console.WriteLine(dog.Stats(), Color.Red);

                    Console.WriteLine(dog.Eat());
                }
            }



            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


            List <UserError> userErrors = new List <UserError>();

            NumericInputError numericInputError = new NumericInputError();
            TextInputError    textInputError    = new TextInputError();

            MyfirstClass  class1 = new MyfirstClass();
            MySecondClass class2 = new MySecondClass();
            MyThirdClass  class3 = new MyThirdClass();


            userErrors.Add(numericInputError);
            userErrors.Add(textInputError);


            userErrors.Add(class1);
            userErrors.Add(class2);
            userErrors.Add(class3);


            foreach (UserError ue in userErrors)
            {
                Console.WriteLine(ue.UEMessage(), Color.RosyBrown);
            }


            //11.F polymorfism.
            //Polymorfism anses vara en av de viktigaste funktionerna i Objektorienterad programmering.


            //12.F Polymorfism hjälper programmerare att återanvända koden och klasserna när de skrivits, testats och implementerats. De kan återanvändas på många sätt.
            //Sparar mycket tid. Enstaka variabler kan användas för att lagra flera datatyper. Lätt att felsöka koder.

            //13.F Abstrakt Klass innehåller konstruktor , Den kan innehålla olika typer av access modifier som public, privata, protected.En klass kan bara använda en abstrakt klass.Abstrakt klass kan innehålla metoder, fält, konstanter etc.
            //Medan Interface innehåller inte konstruktor,den innehåller endast modifierare för allmän åtkomst (Public)  eftersom allt i gränssnittet är offentligt (Public),en klass kan använda flera gränssnitt.Gränssnittet kan bara innehålla metoder



            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        }
示例#2
0
        static void Main(string[] args)
        {
            //Kommer inte direkt åt variablerna, utan måste använda dess properties
            //   Person p = new Person();

            PersonHandler ph = new PersonHandler();
            Person        p1 = ph.CreatePerson(24, "Anders", "Andersson", 179.5, 75.4);
            Person        p2 = ph.CreatePerson(39, "Anna", "Svensson", 161.5, 64.2);
            Person        p3 = ph.CreatePerson(25, "Johan", "Gustavsson", 182.2, 79.9);

            ph.SetAge(p1, 35);
            ph.SetFName(p2, "Emma");
            ph.SetLName(p3, "Johansson");
            ph.SetHeight(p1, 172.2);
            ph.SetWeight(p2, 66.8);

            List <Animal> animals = new List <Animal>();

            animals.Add(new Bird("Anders", 65, 15, 3));
            animals.Add(new Horse("Elsa", 252, 18, 45));
            animals.Add(new Swan("Sven", 10, 7, 4, "Vit"));
            animals.Add(new Dog("Saga", 21, 2, "Pudel"));
            animals.Add(new Pelican("Emma", 8, 4, 1, 250));

            foreach (Animal animal in animals)
            {
                Console.WriteLine(animal);
            }

            List <Dog> dogs = new List <Dog>();

            // dogs.Add(new Horse("Pelle", 185, 19, 55));
            //7 Svar : Fungerar inte eftersom Horse inte är en subklass till Dog
            //8 Listan måste vara av typen Object för att kunna lagra vilken typ av objekt som helst

            //11 svar: Går igenom djuren och skriver ut dess stats() metod. Eftersom den är virtual så går programmet igenom och kollar subklasserna på den aktuella animal variabeln ifall den har en egen implementation av stats()
            //Är exempelvis animal variabeln av typen dog så anropas dog-klassens stats() metod ifall det finns någon annars går det uppåt i arvskedjan och kollar dess basklass o.s.v. tills den hittar en stats() metod som programmet anropar
            foreach (Animal animal in animals)
            {
                Console.WriteLine(animal.Stats());
            }

            foreach (Animal animal in animals)
            {
                if (animal.GetType().Name == "Dog")
                {
                    Console.WriteLine(animal.Stats());
                }
            }

            //kommer inte åt eat metoden i Dog-klassen för Listan med Animals
            //Eftersom animal helt enkelt inte har någon eat metod
            //Vi måste casta animal till en dog, dock behöver vi vara säkra på att det verkligen är en dog annars får vi invalidcastexception
            //Det gör vi på samma sätt som if-satsen ovan
            foreach (Animal animal in animals)
            {
                Console.WriteLine(animal.Stats());
                if (animal.GetType().Name == "Dog")
                {
                    Dog dog = (Dog)animal;
                    Console.WriteLine(dog.eat());
                }
            }

            List <UserError> usererrors = new List <UserError>();

            usererrors.Add(new NumericInputError());
            usererrors.Add(new TextInputError());
            usererrors.Add(new NullPointerError());
            usererrors.Add(new StackOverflowError());
            usererrors.Add(new InvalidArgumentError());
            foreach (UserError userError in usererrors)
            {
                Console.WriteLine(userError.UEMessage());
            }

            //11 svar: Det ger en bra flexibilitet till sin kod. Att man till exempel kan skapa en lista med animal och läggs alla animals objekt i listan
            //12 svar: det förbättrar koden genom att man till exempel skriver en rad kod som anropar en metod men som i själva verket anropar olika metoder beroende på vilken subklass det är.
            //Lättare att återanvända kod så att man behöver skriva mindre och tydligare kod helt enkelt.
            //13 svar: I ett interface saknar alla metoder implementation medan i en abstract klass kan det finnas metoder både med och utan implementation
            //Man kan i en klass implementera hur många interface som helst i en klass medan vid arv kan man bara ärva en klass
            //Fördelen med interface är att klasser inte behöver ingå i en arvshierarki och ha en is a relation vilket ger större flexibilitet
        }