public SmallFishBowl AddSmallFishbowl() { SmallFishBowl fishbowl = new SmallFishBowl(); AllContainers.Add(fishbowl); return(fishbowl); }
static void Main(string[] args) { //create animal containers. Aviary Aviary = new Aviary(); Burrows Burrows = new Burrows(); CreepyCrawlyBox CreepyCrawlyBox = new CreepyCrawlyBox(); Tank Tank = new Tank(); Terrarium Terrarium = new Terrarium(); //collection of individual fishbowls: FishbowlCollection FishbowlCollection = new FishbowlCollection(); Aviary.Occupants.Add(new Finch()); Aviary.Occupants.Add(new Parakeet()); Aviary.Occupants.Add(new Finch()); Aviary.Occupants.Add(new Parakeet()); Aviary.Occupants.Add(new Finch()); Aviary.Occupants.Add(new Parakeet()); //Bettas are territorial, so only one per fishbowl in the collection. for (int fishbowls = 1; fishbowls <= 8; fishbowls += 1) { SmallFishBowl fishbowl = FishbowlCollection.AddSmallFishbowl(); if (fishbowls <= 5) { fishbowl.SingleOccupant = new BettaFish(); } else { fishbowl.SingleOccupant = new DwarfPufferFish(); } } //lots of ants for (int ants = 1; ants <= 306000; ants += 1) { CreepyCrawlyBox.Occupants.Add(new Ant()); } //and one queen CreepyCrawlyBox.Occupants.Add(new AntQueen()); for (int worms = 1; worms <= 20; worms += 1) { CreepyCrawlyBox.Occupants.Add(new Earthworm()); } //Tank for Amphibious reptiles. Tank.Occupants.Add(new CopperheadSnake()); Tank.Occupants.Add(new Terrapin()); Tank.Occupants.Add(new Terrapin()); Burrows.Occupants.Add(new Gerbil()); Burrows.Occupants.Add(new Gerbil()); Burrows.Occupants.Add(new Mouse()); Burrows.Occupants.Add(new Mouse()); Terrarium.Occupants.Add(new TimberRattlesnake()); //list all animals in container, then list each type and how many of each. Console.WriteLine($"The Aviary has {Aviary.Occupants.Count} animals:"); IEnumerable <IAnimal> UniqueFlyers = Aviary.Occupants.Distinct(new AnimalComparer()); foreach (IAnimal Animal in UniqueFlyers) { Console.WriteLine($"{Aviary.Occupants.Where(occupant => occupant.Name() == Animal.Name()).ToList().Count} {Animal.Name()}(s)."); } Console.WriteLine("====================="); Console.WriteLine($"The Burrows has {Burrows.Occupants.Count} animals:"); IEnumerable <IAnimal> UniqueBurrowers = Burrows.Occupants.Distinct(new AnimalComparer()); foreach (IAnimal Animal in UniqueBurrowers) { Console.WriteLine($"{Burrows.Occupants.Where(occupant => occupant.Name() == Animal.Name()).ToList().Count} {Animal.Name()}(s)."); } Console.WriteLine("====================="); Console.WriteLine($"The Creepy Crawly Box has {CreepyCrawlyBox.Occupants.Count} animals:"); IEnumerable <IAnimal> UniqueCrawlies = CreepyCrawlyBox.Occupants.Distinct(new AnimalComparer()); foreach (IAnimal Animal in UniqueCrawlies) { Console.WriteLine($"{CreepyCrawlyBox.Occupants.Where(occupant => occupant.Name() == Animal.Name()).ToList().Count} {Animal.Name()}(s)."); } Console.WriteLine("====================="); Console.WriteLine($"The Tank has {Tank.Occupants.Count} animals:"); IEnumerable <IAnimal> UniqueAmphibious = Tank.Occupants.Distinct(new AnimalComparer()); foreach (IAnimal Animal in UniqueAmphibious) { Console.WriteLine($"{Tank.Occupants.Where(occupant => occupant.Name() == Animal.Name()).ToList().Count} {Animal.Name()}(s)."); } Console.WriteLine("====================="); Console.WriteLine($"The Terrarium has {Terrarium.Occupants.Count} animals:"); IEnumerable <IAnimal> UniqueTerrestrials = Terrarium.Occupants.Distinct(new AnimalComparer()); foreach (IAnimal Animal in UniqueTerrestrials) { Console.WriteLine($"{Terrarium.Occupants.Where(occupant => occupant.Name() == Animal.Name()).ToList().Count} {Animal.Name()}(s)."); } Console.WriteLine("====================="); //number of containers, occupants of each container IEnumerable <ISolitary> SolitaryFish = FishbowlCollection.AllContainers.Select(container => container.SingleOccupant); Console.WriteLine($"There are {FishbowlCollection.AllContainers.Count} individual fishbowls, each containing one of:"); IEnumerable <IAnimal> UniqueSolitaryFish = SolitaryFish.Distinct(new AnimalComparer()); foreach (IAnimal Animal in UniqueSolitaryFish) { Console.WriteLine($"{SolitaryFish.Where(occupant => occupant.Name() == Animal.Name()).ToList().Count} {Animal.Name()}(s)."); } }