Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Animals
- {
- public abstract class Animal
- {
- private string name;
- private int age;
- private string gender;
- public Animal(string name, int age, string gender)
- {
- this.Name = name;
- this.Age = age;
- this.Gender = gender;
- }
- public string Name
- {
- get
- {
- return this.name;
- }
- private set
- {
- if (string.IsNullOrWhiteSpace(value)) // по условие се иска само да не е празно
- {
- throw new ArgumentException("Invalid input!");
- }
- this.name = value;
- }
- }
- public int Age
- {
- get
- {
- return this.age;
- }
- private set
- {
- if (value <= 0) // по условие се иска само да не е празно
- {
- throw new ArgumentException("Invalid input!");
- }
- this.age = value;
- }
- }
- public string Gender
- {
- get
- {
- return this.gender;
- }
- private set
- {
- if (value != "Male" && value != "Female")
- {
- throw new ArgumentException("Invalid input!");
- }
- this.gender = value;
- }
- }
- public abstract void ProduceSound();
- }
- public class Dog : Animal
- {
- public Dog(string name, int age, string gender) :
- base(name, age, gender)
- {
- }
- public override void ProduceSound()
- {
- Console.WriteLine("Woof!");
- }
- }
- public class Frog : Animal
- {
- public Frog(string name, int age, string gender) :
- base(name, age, gender)
- {
- }
- public override void ProduceSound()
- {
- Console.WriteLine("Ribbit");
- }
- }
- public class Cat : Animal
- {
- public Cat(string name, int age, string gender) :
- base(name, age, gender)
- {
- }
- public override void ProduceSound()
- {
- Console.WriteLine("Meow meow");
- }
- }
- public class Kitten : Cat
- {
- private const string GENDER = "Female";
- public Kitten(string name, int age) :
- base(name, age, GENDER)
- {
- }
- public override void ProduceSound()
- {
- Console.WriteLine("Meow");
- }
- }
- public class Tomcat : Cat
- {
- private const string GENDER = "Male";
- public Tomcat(string name, int age) :
- base(name, age, GENDER)
- {
- }
- public override void ProduceSound()
- {
- Console.WriteLine("MEOW");
- }
- }
- public class StartUp
- {
- public static void Main()
- {
- List<Animal> animals = new List<Animal>();
- while (true)
- {
- string firstLine = Console.ReadLine();
- if (firstLine == "Beast!")
- {
- Print(animals);
- break;
- }
- string[] secondLineTokens = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);
- // Spravka tuk: https://softuni.bg/forum/15928/problem-s-06-animals-ot-oop-basics-inheritance
- try
- {
- switch (firstLine)
- {
- case "Dog":
- var dog = new Dog(secondLineTokens[0], int.Parse(secondLineTokens[1]), secondLineTokens[2]);
- animals.Add(dog);
- break;
- case "Frog":
- var frog = new Frog(secondLineTokens[0], int.Parse(secondLineTokens[1]), secondLineTokens[2]);
- animals.Add(frog);
- break;
- case "Cat":
- var cat = new Cat(secondLineTokens[0], int.Parse(secondLineTokens[1]), secondLineTokens[2]);
- animals.Add(cat);
- break;
- case "Kitten":
- var kitten = new Kitten(secondLineTokens[0], int.Parse(secondLineTokens[1]));
- animals.Add(kitten);
- break;
- case "Tomcat":
- var tomcat = new Tomcat(secondLineTokens[0], int.Parse(secondLineTokens[1]));
- animals.Add(tomcat);
- break;
- default:
- throw new ArgumentException("Invalid input!");
- }
- }
- catch (ArgumentException ex)
- {
- Console.WriteLine(ex.Message);
- }
- }
- }
- private static void Print(List<Animal> animals)
- {
- foreach (var animal in animals)
- {
- Console.WriteLine(animal.GetType().Name);
- Console.WriteLine($"{animal.Name} {animal.Age} {animal.Gender}");
- animal.ProduceSound();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement