Advertisement
Guest User

Problem 6. *Animals - refactored

a guest
Mar 17th, 2017
816
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Problem_06.STAR_Animals
  8. {
  9.     interface IProduceSound
  10.     {
  11.         string ProduceSound();
  12.     }
  13.  
  14.     abstract class Animal
  15.     {
  16.         private string name;
  17.         private int age;
  18.         private string gender;
  19.  
  20.         public Animal(string name, int age, string gender)
  21.         {
  22.             this.Name = name;
  23.             this.Age = age;
  24.             this.Gender = gender;
  25.         }
  26.  
  27.         protected virtual string Gender
  28.         {
  29.             get { return gender; }
  30.             set
  31.             {
  32.                 if (string.IsNullOrWhiteSpace(value))
  33.                 {
  34.                     throw new ArgumentException("Invalid input!");
  35.                 }
  36.                 gender = value;
  37.             }
  38.         }
  39.  
  40.         protected int Age
  41.         {
  42.             get { return age; }
  43.             set
  44.             {
  45.                 if (string.IsNullOrWhiteSpace(value.ToString()) || value < 0)
  46.                 {
  47.                     throw new ArgumentException("Invalid input!");
  48.                 }
  49.                 age = value;
  50.             }
  51.         }
  52.  
  53.         protected virtual string Name
  54.         {
  55.             get { return name; }
  56.             set
  57.             {
  58.                 if (string.IsNullOrWhiteSpace(value))
  59.                 {
  60.                     throw new ArgumentException("Invalid input!");
  61.                 }
  62.                 name = value;
  63.             }
  64.         }
  65.  
  66.         public virtual string GetResult()
  67.         {
  68.             StringBuilder stringBuilder = new StringBuilder();
  69.  
  70.             stringBuilder.Append($"{this.Name} {this.Age} {this.Gender}{Environment.NewLine}");
  71.             return stringBuilder.ToString();
  72.         }
  73.  
  74.     }
  75.  
  76.     class Dog : Animal, IProduceSound
  77.     {
  78.         public Dog(string name, int age, string gender) : base(name, age, gender)
  79.         {
  80.             base.Name = name;
  81.         }
  82.  
  83.         public string ProduceSound()
  84.         {
  85.             return "BauBau";
  86.         }
  87.  
  88.         public override string GetResult()
  89.         {
  90.             return base.GetResult() + ProduceSound();
  91.         }
  92.     }
  93.  
  94.     class Frog : Animal, IProduceSound
  95.     {
  96.         public Frog(string name, int age, string gender) : base(name, age, gender)
  97.         {
  98.             base.Name = name;
  99.         }
  100.  
  101.         public string ProduceSound()
  102.         {
  103.             return "Frogggg";
  104.         }
  105.  
  106.         public override string GetResult()
  107.         {
  108.             return base.GetResult() + ProduceSound();
  109.         }
  110.     }
  111.  
  112.     class Cat : Animal, IProduceSound
  113.     {
  114.         public Cat(string name, int age, string gender) : base(name, age, gender)
  115.         {
  116.         }
  117.  
  118.         public string ProduceSound()
  119.         {
  120.             return "MiauMiau";
  121.         }
  122.         public override string GetResult()
  123.         {
  124.             return base.GetResult() + ProduceSound();
  125.         }
  126.     }
  127.  
  128.     class Kitten : Animal, IProduceSound
  129.     {
  130.         public Kitten(string name, int age) : base(name, age, "Female")
  131.         {
  132.         }
  133.  
  134.  
  135.         public string ProduceSound()
  136.         {
  137.             return "Miau";
  138.         }
  139.  
  140.         public override string GetResult()
  141.         {
  142.             return base.GetResult() + ProduceSound();
  143.         }
  144.     }
  145.  
  146.     class Tomcat : Animal, IProduceSound
  147.     {
  148.         public Tomcat(string name, int age) : base(name, age, "Male")
  149.         {
  150.         }
  151.  
  152.         public string ProduceSound()
  153.         {
  154.             return "Give me one million b***h";
  155.         }
  156.  
  157.         public override string GetResult()
  158.         {
  159.             return base.GetResult() + ProduceSound();
  160.         }
  161.     }
  162.  
  163.     class Program
  164.     {
  165.         static void Main(string[] args)
  166.         {
  167.             string input = Console.ReadLine();
  168.  
  169.             while (input != "Beast!")
  170.             {
  171.                 try
  172.                 {
  173.                     string[] dataDog = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToArray();
  174.                     string name = dataDog[0];
  175.                     int age;
  176.                     if (!int.TryParse(dataDog[1], out age))
  177.                     {
  178.                         throw new ArgumentException("Invalid input!");
  179.                     }
  180.  
  181.                     string gender = dataDog[2];
  182.  
  183.  
  184.                     switch (input)
  185.                     {
  186.                         case "Dog":
  187.                             Dog dog = new Dog(name, age, gender);
  188.                             Console.WriteLine("Dog");
  189.                             Console.WriteLine(dog.GetResult());
  190.                             break;
  191.                         case "Cat":
  192.                             Cat cat = new Cat(name, age, gender);
  193.                             Console.WriteLine("Cat");
  194.                             Console.WriteLine(cat.GetResult());
  195.                             break;
  196.                         case "Frog":
  197.                             Frog frog = new Frog(name, age, gender);
  198.                             Console.WriteLine("Frog");
  199.                             Console.WriteLine(frog.GetResult());
  200.                             break;
  201.                         case "Kitten":
  202.                             Kitten kitten = new Kitten(name, age);
  203.                             Console.WriteLine("Kitten");
  204.                             Console.WriteLine(kitten.GetResult());
  205.                             break;
  206.                         case "Tomcat":
  207.                             Tomcat tomcat = new Tomcat(name, age);
  208.                             Console.WriteLine("Tomcat");
  209.                             Console.WriteLine(tomcat.GetResult());
  210.                             break;
  211.                         default:
  212.                             throw new ArgumentException("Invalid input!");
  213.                     }
  214.                 }
  215.                 catch (ArgumentException ae)
  216.                 {
  217.                     Console.WriteLine(ae.Message);
  218.                 }
  219.                 input = Console.ReadLine();
  220.             }
  221.         }
  222.     }
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement