using System; using System.Collections.ObjectModel; public class AnimalFarm: Collection{ // Auto insert animal of opposite sex protected override void InsertItem(int i, Animal a){ if(a.Sex == Sex.Male){ base.InsertItem(i,a); base.InsertItem(i, new Animal(a.Name, a.Group, Sex.Female)); } else { base.InsertItem(i,a); base.InsertItem(i,new Animal(a.Name, a.Group, Sex.Male)); } } // Prevent removal protected override void RemoveItem(int i){ Console.WriteLine("[Removal denied]"); } // Prevent clearing protected override void ClearItems(){ Console.WriteLine("[Clearing denied]"); } // Return all male animals in a given group public AnimalFarm GetGroup(AnimalGroup g){ AnimalFarm res = new AnimalFarm(); foreach(Animal a in this) if (a.Group == g && a.Sex == Sex.Male) res.Add(a); return res; } }