Exemple #1
0
        static void Main(string[] args)
        {
            Pelican  pelle   = new Pelican("Pelle", 20, 5, 100, 20);
            Horse    hubert  = new Horse("Hubert", 800, 10, 2);
            Dog      bert    = new Dog("Bert", 50, 2, true);
            Dog      charlie = new Dog("Charlie", 60, 8, false);
            Worm     macke   = new Worm("Macke", 0.01, 1, 9);
            Hedgehog sune    = new Hedgehog("Sune", 5, 3, 96);
            Swan     pippi   = new Swan("Pippi", 20, 6, 120, true);
            Flamingo snorken = new Flamingo("Snorken", 17, 9, 51, 44);

            List <Animal> Animals = new List <Animal>
            {
                pelle,
                hubert,
                bert,
                macke,
                charlie,
                sune,
                pippi,
                snorken
            };

            foreach (var animal in Animals)
            {
                Console.WriteLine(animal.Name);
            }

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

            //dogs.Add(hubert);


            foreach (var animal in Animals)
            {
                Console.WriteLine(animal.Stats());
                if (animal is Dog)
                {
                    Console.WriteLine(animal.GoodBoy());
                }
            }
            // ARV
            // 3.2 8 Birds-klassen
            // 3.2 9 Animals-klassen


            // POLYMORFISM
            // 3.3.7 De tillhör olika subklasser

            // 3.3.8 Animal, den högtsa klassen som innehåller båda två

            // 3.3.11 Programmet hämtar listan på alla djur i listan 'Animals'. Sen tar den varje djur och använder den abstrakta metoden 'Stats()'
            // Varje subklass har en override som körs och hämtar alla properties och sammanfogar dem i en string

            // 3.3.15 För att komma åt den måste man använda 'Dog'subklassen. Hade man lagt den i 'Animal' så kunde alla komma åt den men det går inte åt andra hållet.

            // 3.3.16 La till en virtual i 'Animals' som returnerar null i de andra subklasserna och en override i 'Dog'. La också till en if som kollar om det är en 'Dog' innan
            // den gör den Console.WriteLine
        }
Exemple #2
0
        static void Main(string[] args)
        {
            Worm worm = new Worm("worm 1", 0.1, 5, false);

            Console.WriteLine(worm.DoSound());

            Animal horse = new Horse("Horse 1", 100, 30, 175);

            Console.WriteLine(horse.DoSound());

            Pelican pelican = new Pelican("pel 1", 5, 2, 50, 20);

            Console.WriteLine(pelican.DoSound());

            WolfMan wolfMan = new WolfMan("Wolverine", 100, 50, "black");

            Console.WriteLine(wolfMan.Talk());

            // Fråga 3.2.13: I Bird classen
            // Fråga 3.2.14: I Animal classen

            List <Animal> animals = new List <Animal>
            {
                new Wolf("Wolfy", 40, 25, "Brown"),
                new Swan("Swane", 2, 50, 30, 10),
                new WolfMan("Wolverine", 100, 50, "black"),
                new Horse("Horse nr 1", 100, 30, 175),
                new Worm("Poisonous worm", 2.3, 3, true),
                new Dog("Vovve", 10, 2, "Chiwawa"),
                new Dog("Spraky", 45.2, 11, "Bulldog")
            };

            foreach (var animal in animals)
            {
                Console.WriteLine(animal.Stats());
                Console.WriteLine(animal.DoSound());
                if (animal is IPerson)
                {
                    IPerson animalPerson = animal as IPerson;
                    Console.WriteLine(animalPerson.Talk());
                }
                if (animal is Dog)
                {
                    Dog aDog = animal as Dog;
                    aDog.ReturnString();
                    Animal anim = aDog as Animal;
                }
            }

            List <Dog> dogs = new List <Dog>
            {
                new Dog("Vovve", 10, 2, "Chiwawa"),

                // new Horse("Horse nr 1", 100, 30, 175) går ej
                new Dog("Spraky", 45.2, 11, "Bulldog")
            };

            // Fråga 3.3.9: För att en lista av hundar kan bara innehålla hundar eller dess subklasser och en häst är inte samma objekt och ärver inte från hund heller
            // Fråga 3.3.10: Av typer Animal för att alla objekt har ärvt från Animal
            // Fråga 3.3.13: Subklasserna hanteras som instanser av basklasserna och den mest specialiserade formen appliceras
            // Fråga 3.3.16-17: Nej, kommer åt bara för Dog, eftersom Dog ärver Animal och inte tvärtom

            foreach (var dog in animals)
            {
                if (dog is Dog)
                {
                    Console.WriteLine(dog.Stats());
                }
            }

            Console.ReadLine();
        }