markovood

Untitled

Mar 22nd, 2020
228
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Animals
  5. {
  6.     public abstract class Animal
  7.     {
  8.         private string name;
  9.         private int age;
  10.         private string gender;
  11.  
  12.         public Animal(string name, int age, string gender)
  13.         {
  14.             this.Name = name;
  15.             this.Age = age;
  16.             this.Gender = gender;
  17.         }
  18.  
  19.         public string Name
  20.         {
  21.             get
  22.             {
  23.                 return this.name;
  24.             }
  25.  
  26.             private set
  27.             {
  28.                 if (string.IsNullOrWhiteSpace(value))    // по условие се иска само да не е празно
  29.                 {
  30.                     throw new ArgumentException("Invalid input!");
  31.                 }
  32.  
  33.                 this.name = value;
  34.             }
  35.         }
  36.  
  37.         public int Age
  38.         {
  39.             get
  40.             {
  41.                 return this.age;
  42.             }
  43.  
  44.             private set
  45.             {
  46.                 if (value <= 0) // по условие се иска само да не е празно
  47.                 {
  48.                     throw new ArgumentException("Invalid input!");
  49.                 }
  50.  
  51.                 this.age = value;
  52.             }
  53.         }
  54.  
  55.         public string Gender
  56.         {
  57.             get
  58.             {
  59.                 return this.gender;
  60.             }
  61.  
  62.             private set
  63.             {
  64.                 if (value != "Male" && value != "Female")
  65.                 {
  66.                     throw new ArgumentException("Invalid input!");
  67.                 }
  68.  
  69.                 this.gender = value;
  70.             }
  71.         }
  72.  
  73.         public abstract void ProduceSound();
  74.     }
  75.  
  76.     public class Dog : Animal
  77.     {
  78.         public Dog(string name, int age, string gender) :
  79.             base(name, age, gender)
  80.         {
  81.         }
  82.  
  83.         public override void ProduceSound()
  84.         {
  85.             Console.WriteLine("Woof!");
  86.         }
  87.     }
  88.  
  89.     public class Frog : Animal
  90.     {
  91.         public Frog(string name, int age, string gender) :
  92.             base(name, age, gender)
  93.         {
  94.         }
  95.  
  96.         public override void ProduceSound()
  97.         {
  98.             Console.WriteLine("Ribbit");
  99.         }
  100.     }
  101.  
  102.     public class Cat : Animal
  103.     {
  104.         public Cat(string name, int age, string gender) :
  105.             base(name, age, gender)
  106.         {
  107.         }
  108.  
  109.         public override void ProduceSound()
  110.         {
  111.             Console.WriteLine("Meow meow");
  112.         }
  113.     }
  114.  
  115.     public class Kitten : Cat
  116.     {
  117.         private const string GENDER = "Female";
  118.  
  119.         public Kitten(string name, int age) :
  120.             base(name, age, GENDER)
  121.         {
  122.         }
  123.  
  124.         public override void ProduceSound()
  125.         {
  126.             Console.WriteLine("Meow");
  127.         }
  128.     }
  129.  
  130.     public class Tomcat : Cat
  131.     {
  132.         private const string GENDER = "Male";
  133.  
  134.         public Tomcat(string name, int age) :
  135.             base(name, age, GENDER)
  136.         {
  137.         }
  138.  
  139.         public override void ProduceSound()
  140.         {
  141.             Console.WriteLine("MEOW");
  142.         }
  143.     }
  144.  
  145.     public class StartUp
  146.     {
  147.         public static void Main()
  148.         {
  149.             List<Animal> animals = new List<Animal>();
  150.             while (true)
  151.             {
  152.                 string firstLine = Console.ReadLine();
  153.  
  154.                 if (firstLine == "Beast!")
  155.                 {
  156.                     Print(animals);
  157.                     break;
  158.                 }
  159.  
  160.                 string[] secondLineTokens = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);
  161.                 // Spravka tuk: https://softuni.bg/forum/15928/problem-s-06-animals-ot-oop-basics-inheritance
  162.                 try
  163.                 {
  164.                     switch (firstLine)
  165.                     {
  166.                         case "Dog":
  167.                             var dog = new Dog(secondLineTokens[0], int.Parse(secondLineTokens[1]), secondLineTokens[2]);
  168.                             animals.Add(dog);
  169.                             break;
  170.                         case "Frog":
  171.                             var frog = new Frog(secondLineTokens[0], int.Parse(secondLineTokens[1]), secondLineTokens[2]);
  172.                             animals.Add(frog);
  173.                             break;
  174.                         case "Cat":
  175.                             var cat = new Cat(secondLineTokens[0], int.Parse(secondLineTokens[1]), secondLineTokens[2]);
  176.                             animals.Add(cat);
  177.                             break;
  178.                         case "Kitten":
  179.                             var kitten = new Kitten(secondLineTokens[0], int.Parse(secondLineTokens[1]));
  180.                             animals.Add(kitten);
  181.                             break;
  182.                         case "Tomcat":
  183.                             var tomcat = new Tomcat(secondLineTokens[0], int.Parse(secondLineTokens[1]));
  184.                             animals.Add(tomcat);
  185.                             break;
  186.                         default:
  187.                             throw new ArgumentException("Invalid input!");
  188.                     }
  189.                 }
  190.                 catch (ArgumentException ex)
  191.                 {
  192.                     Console.WriteLine(ex.Message);
  193.                 }
  194.             }
  195.         }
  196.  
  197.         private static void Print(List<Animal> animals)
  198.         {
  199.             foreach (var animal in animals)
  200.             {
  201.                 Console.WriteLine(animal.GetType().Name);
  202.                 Console.WriteLine($"{animal.Name} {animal.Age} {animal.Gender}");
  203.                 animal.ProduceSound();
  204.             }
  205.         }
  206.     }
  207. }
RAW Paste Data