Example #1
0
        static void Main(string[] args)
        {
            //Person person = new Person();
            //person.Age = 30;
            //person.FName = "hej";
            //person.LName = "svejs";
            //person.Height = 180;
            //person.Weight = 50;
            //Console.WriteLine("Person properties: " + person + "\n\n");
            Console.WriteLine("\n\n\n\nPERSON-exercise");
            PersonHandler personHandler = new PersonHandler();
            var           person1       = personHandler.CreatePerson(0, "person1", string.Empty, 0, 0);

            var person2 = personHandler.CreatePerson(0, "person2", string.Empty, 0, 0);

            var person3 = personHandler.CreatePerson(0, "person3", string.Empty, 0, 0);

            Console.WriteLine("personHandler.CreatePerson(): " + person1);
            Console.WriteLine("personHandler.CreatePerson(): " + person2);
            Console.WriteLine("personHandler.CreatePerson(): " + person3);
            Console.WriteLine();

            personHandler.SetAge(person1, 20);
            Console.WriteLine("PersonHandler.SetAge(20) person1: " + person1 + "\n");

            personHandler.SetFName(person2, "p2!!");
            Console.WriteLine("PersonHandler.SetFName(\"p2!!\") person2: " + person2 + "\n");

            personHandler.SetLName(person3, "bar");
            Console.WriteLine("PersonHandler.SetLName(\"bar\") person3:" + person3 + "\n");

            personHandler.SetHeight(person1, 180);
            Console.WriteLine("PersonHandler.Setheight(180) person1:" + person1 + "\n");

            personHandler.SetWeight(person2, 90);
            Console.WriteLine("PersonHandler.Setweight(90) person2:" + person2 + "\n");

            Console.WriteLine("person1: " + person1);
            Console.WriteLine("person2: " + person2);
            Console.WriteLine("person3: " + person3);

            Console.WriteLine("Hit any key to continue");
            Console.ReadKey();

            var animals = new List <Animal>() /*new Bird("birdy", 1, 8),*/ new
            {
                Dog("doggy", 2, 7), new Flamingo("flamingy", 3, 6), new Hedgehog("hedgy", 4, 5), new Horse("horsy", 5, 4), new Pelican("pelicany", 6, 3), new Swan("swany", 7, 2), new Worm("wormy", 8, 1)
            };

            Console.WriteLine("\n\n\n\nANIMALS-exercise");
            foreach (var animal in animals)
            {
                //11.F: Förklara vad det är som händer. 
                //Svar: genom att Stats metoden har överridits så körs subklassens metod.
                Console.WriteLine(animal.Stats());
            }

            Console.WriteLine("Hit any key to continue");
            Console.ReadKey();

            var dogs = new List <Dog>()
            {
                new Dog("doggy1", 1, 3) /*, new Horse("horsy", 5, 4)*/, new Dog("doggy2", 2, 2), new Dog("doggy3", 3, 1)
            };

            //8. F: Vilken typ måste listan vara för att alla klasser skall kunna lagras tillsammans?
            //Svar: Animal

            animals.AddRange(dogs);
            Console.WriteLine("\n\n\n\nANIMALS filtered on DOGS only");
            foreach (var animal in animals)
            {
                if (animal is Dog)
                {
                    var dog = animal as Dog;
                    Console.WriteLine(animal.Stats() + " what the dog says?:" + dog.UniqMethodForDog());

                    //14. Kommer du åt den metoden från ​Animals listan?
                    //15. F: Varför inte? 
                    //Svar: Nej animal har inte metoden UniqMethodForDog(), den är endast definierad i subklass Dog.
                }
            }

            Console.WriteLine("Hit any key to continue");
            Console.ReadKey();

            /*
             * 11. F: Varför är polymorfism viktigt att behärska? 
             * Svar: Vanligt förekommande i .Net framework.
             * 12. F: Hur kan polymorfism förändra och förbättra kod via en bra struktur? 
             * Svar: Gör det lättare att utöka funktionalitet med tex. en ny typ av klass i en polymorfisk arkitektur
             * och där klasserna själva ansvarar för implementationen.
             * -mindre risk att introducera buggar i redan befintlig funktionalitet.
             * 13. F: Vad är det för en skillnad på en Abstrakt klass och ett Interface? 
             * Svar: Ett Interface har ingen implementation men abstract class kan ha metoder som redan är imlementerade.
             * (En klass kan ärva från flera interface men bara en klass.)
             */
            Console.WriteLine("\n\n\n\nUserError-exercise");
            var userErrors = new List <UserError>()
            {
                new NumericInputError(), new TextInputError(), new TextInputError(), new NumericInputError(), new DateTimeInputError(), new BooleanInputError(), new TooLongInputError()
            };

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

            Console.WriteLine("Hit any key to continue");
            Console.ReadKey();
        }
Example #2
0
        static void Main(string[] args)
        {
            try
            {
                PersonHandler ph      = new PersonHandler();
                Person        APerson = ph.Createperson(31, "Conny", "Söderström", 184, 115);
                Console.WriteLine(APerson.Age);

                ph.SetAge(APerson, 32);
                Console.WriteLine(APerson.Age);
                Person AnotherPerson = ph.Createperson(1, "Con", "Söderströmeris", 184, 115);

                ////Test för ingen ålder
                //ph.SetAge(APerson, 0);
                //Console.WriteLine(APerson.Age);

                ////Test för kort namn
                //ph.SetFName(APerson, "Co");
                //Console.WriteLine(APerson.FName);

                ////Test för kort efternamn
                //ph.SetLName(APerson, "Sö");
                //Console.WriteLine(APerson.LName);

                ////Test för långt efternamn
                //ph.SetLName(APerson, "Söderströmerister");
                //Console.WriteLine(APerson.LName);

                List <Animal> ListofAnimals = new List <Animal>();
                List <Dog>    ListofDogs    = new List <Dog>();

                ListofAnimals.Add(new Dog("Hunden", 20, 14, 4, "labradoodle"));
                ListofAnimals.Add(new Wolf("Vargen", 60, 18, 4, "Ensam Varg"));
                ListofAnimals.Add(new Wolfman("Vargmannen", 95, 39, 2, "lite full av månsken"));
                ListofAnimals.Add(new Swan("Svanen", 2, 4, 2, "Migrerar", "Vacker men argsint"));

                ListofDogs.Add(new Dog("Hunden", 20, 14, 4, "labradoodle"));
                ListofDogs.Add(new Dog("Hundan", 15, 21, 4, "Pudel"));
                ListofDogs.Add(new Dog("Hundini", 17, 5, 4, "labradiddle"));
                ListofDogs.Add(new Dog("Vovven", 8, 3, 4, "Donnini"));

                foreach (var Animal in ListofAnimals)
                {
                    Animal.DoSound();
                    Console.WriteLine(Animal.Stats());
                    if (Animal is IPerson)
                    {
                        //Lägg "var is klass" på minnet
                        var person = (IPerson)Animal;
                        person.Talk();
                    }
                }
                //3.3 punkt 8
                Console.WriteLine("\n");
                foreach (var dog in ListofDogs)
                {
                    Console.WriteLine(dog.Stats());
                }
                //3.3 punkt 14
                foreach (var dog in ListofAnimals)
                {
                    if (dog is Dog)
                    {
                        var doggie = (Dog)dog;
                        //3.3 punkt 16
                        //dog.Piss();
                        //3.3 punkt 17
                        //Kommer inte åt den för att Animal objektet
                        //inte har referens till Dog's unika metoder och egenskaper

                        //3.3 punkt 18
                        //Static Piss() method
                        //Dog.Piss();
                        doggie.Piss();
                        Console.WriteLine(doggie.Stats());
                    }
                }
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }

            List <UserError> ListofErrors = new List <UserError>()
            {
                new NumericInputError(),
                new TextInputError(),
                new LostInputError(),
                new BreakintheLawInputError(),
                new GRatedInputError()
            };

            foreach (var Error in ListofErrors)
            {
                Console.WriteLine(Error.UEMessage());
            }
        }