Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Holiday
- {
- public abstract class Animal
- {
- public abstract int NailLength { get; set; }
- public bool IsAlive { get; private set; }
- public abstract void Move();
- public virtual void Eat(Animal animal)
- {
- if (animal != null)
- {
- if (animal.GetType() != GetType())
- {
- animal.Die();
- }
- }
- }
- public virtual void Die()
- {
- Console.WriteLine("Ой-ой");
- }
- }
- public class Swimming : Animal
- {
- public override int NailLength { get; set; }
- public override void Move()
- {
- Console.WriteLine("Буль-буль");
- }
- }
- public class Walking : Animal
- {
- public override int NailLength { get; set; }
- public override void Move()
- {
- throw new NotImplementedException();
- }
- public override void Eat(Animal animal)
- {
- if (animal != null)
- {
- var walking = animal as Walking;
- if (walking != null && walking.NailLength <= NailLength || walking == null)
- {
- animal.Die();
- }
- }
- }
- }
- public class God
- {
- public God()
- {
- Animals = new List<Animal>();
- }
- public List<Animal> Animals { get; private set; }
- public void KillAll()
- {
- foreach (Animal animal in Animals.Where(a => a.IsAlive))
- {
- animal.Die();
- }
- }
- }
- public class Factory
- {
- public God God { get; private set; }
- public Factory()
- {
- God = new God();
- }
- public IEnumerable<Animal> Load(string path)
- {
- for (int i = 0; i < 5; i++)
- {
- var animal = new Swimming();
- God.Animals.Add(animal);
- yield return animal;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment