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(); }
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()); } }