Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            //1 - nej de är inkapslade
            PersonHandler ph     = new PersonHandler();
            Person        anderz = ph.CreatePerson(37, "Anderz", "Lindberg", 180, 65);

            ph.PrintPerson(anderz);

            //3.2.8: Bird
            //3.2.9: Animal

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

            Animals.Add(new Swan(10, "anderz1", 3.1415, "pirates lang", "att angöra en brygga"));
            Animals.Add(new Dog(100, "anderz2", 0.001, "inföding"));
            Animals.Add(new Worm(1, "kalle", 2, false));

            /*
             *  3.3.11: Listan skapas tom, varpå objekt adderas mha varje klass konstruktorer (och de anropade bas-konstruktorerna i dem) varefter följande loop stegar igenom listan med en iterator
             *  (och skriver ut statsen för varje instans):
             */

            foreach (Animal animal_iterator in Animals)
            {
                Console.WriteLine(animal_iterator.Stats());
            }

            foreach (Animal animal_iterator in Animals)
            {
                if (animal_iterator is Dog)
                {
                    Console.WriteLine(animal_iterator.Stats());
                }
                //animal_iterator.SayObama(); 3.3.15: därför att typen är Animal.. En Animal är INTE en Dog men en Dog är en Animal.
            }

            foreach (Animal animal_iterator in Animals)
            {
                if (animal_iterator is Dog)
                {
                    Dog d = (Dog)animal_iterator;
                    Console.WriteLine(d.Stats() + d.SayObama());
                }
            }


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

            UserErrors.Add(new TextInputError());
            UserErrors.Add(new NumericInputError());

            UserErrors.Add(new ShitBehindKeyboardError());
            UserErrors.Add(new WeatherError());
            UserErrors.Add(new MomError());

            foreach (UserError u in UserErrors)
            {
                Console.WriteLine(u.UEMessage());
            }


            /*
             * 3.4.11, svar: För att kunna skapa ett gemensamt gränssnitt för flera klasser som ärver av samma basklass. Det innebär
             *              att man kan skriva olika implementationer för olika subklasser av samma metoder - som därmed kan användas
             *              på samma sätt, oavsett implementation.
             *
             * 3.4.12, svar: Se föreg. svar .. samt undvika att skriva dubbelt eftersom enbart enskilda implementationsdetaljer behöver
             *              ..ja, implementeras.. och i den anropande koden behöver man inte fundera så mycket på hur den ska användas
             *              just eftersom gränssnittet implicerar vissa beteenden. Exempel en panel på en bandspelare har alltid en play-
             *              knapp och man behöver inte veta så mycket mer om det underliggande annat än att det är på play man ska trycka.
             *              Instanser av subklasserna kan också hanteras som vore de instanser av basklassen - med flera fördelar; exempelvis
             *              blir det möjligt att skapa samlingar av olika typer genom att sätta datatypen till superklassen.
             *
             * 3.4.13, svar: C# tillåter arv från EN basklass enbart, vilket går att komma runt med interface. Interface tillåter inga definitioner
             *              eller privata medlemmar.
             *
             *
             *
             *
             */
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            /*PERSON*/
            //Person person = new Person();
            List <Person> persons       = new List <Person>();
            PersonHandler personHandler = new PersonHandler();
            Person        person1       = personHandler.CreatePerson(20, "Anna", "A", 170, 60);
            Person        person2       = personHandler.CreatePerson(25, "John", "J", 180, 80);

            persons.Add(person1);
            persons.Add(person2);

            Console.WriteLine("*************************PERSONS INFO*************************");
            WritePersonsInfoToConsole(persons);

            personHandler.SetAge(person1, 70);
            personHandler.SetAge(person2, 75);

            Console.WriteLine("\nAfter calling SetAge Method:");
            WritePersonsInfoToConsole(persons);

            /*ANIMAL*/
            List <Animal> animals  = new List <Animal>();
            Horse         horse    = new Horse(true, "Horsii", 100, 8);
            Dog           dog      = new Dog(true, "Doggii", 20, 5);
            Hedgehog      hedgehog = new Hedgehog(120, "Hedgehogii", 2, 1.5);
            Bird          bird     = new Bird(40, "Birdii", 3, 4);
            Pelican       pelican  = new Pelican(true, 60, "Pelicanii", 6, 2.5);
            Flamingo      flamingo = new Flamingo("White", 65, "Flamingoii", 5, 6);
            Swan          swan     = new Swan("Yellow", 50, "Swanii", 2.5, 1);

            animals.Add(horse);
            animals.Add(dog);
            animals.Add(hedgehog);
            animals.Add(bird);
            animals.Add(pelican);
            animals.Add(flamingo);
            animals.Add(swan);

            Console.WriteLine("\n*************************ANIMALS NAMES*************************");
            WriteAnimalsNameToConsole(animals);

            Console.WriteLine("\n\n*************************ANIMALS INFO*************************");
            WriteAnimalsInfoToConsole(animals);

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

            // below commented code does not work because of not appropriate type
            // dogs.Add(horse);

            Console.WriteLine("\n*************************DOG SPEAKS*************************");
            WriteDogsSpeakToConsole(animals);

            Console.WriteLine("\n*************************USER ERROR*************************");
            var userErrors = new List <UserError>();
            NumericInputError numericInputError = new NumericInputError();
            TextInputError    textInputError    = new TextInputError();

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

            foreach (UserError userError in userErrors)
            {
                Console.WriteLine(userError.UEMessage());
            }
        }