[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/C3i6B6oA) :sectnums: :nofooter: :toc: left :icons: font :data-uri: :source-highlighter: highlightjs :stem: latexmath = Inh.02 -- Pets & Fleas We are keeping cats & dogs as pets. Sometimes those are infested by fleas, who bite them. == Specification .Class Diagram [plantuml] ---- @startuml hide empty methods class Cat { -bool _isOnTree +int TreesClimbed [private set] +Cat() +bool ClimbOnTree() +bool ClimbDown() +string ToString() [override] } class DateTimeProvider { -DateTime? _overrideDateTime +DateTime Now } class Dog { {static} -TimeSpan huntingWaitInterval [readonly] -DateTimeProvider _dateTimeProvider [readonly] -DateTime? _lastHuntedTime +int HuntedAnimals [private set] +Dog(DateTimeProvider) +bool HuntAnimal() +string ToString() [override] } class Flea { +Pet? CurrentPet [private set] +int TotalBites [private set] +void JumpOnPet(Pet?) +int BitePet(int) +string ToString() [override] } abstract class Pet { {static} +int NextPetId [private set] +int PetId [readonly] +int RemainingBites [private set] #Pet() +int GetBitten(int) {static} #void PrintCtorInfo(string) } Pet <|-- Cat Pet <|-- Dog Dog *-- DateTimeProvider Flea o-l- Pet @enduml ---- === Pet * Every animal kept as a pet is... a pet * Each pet has a unique id ** This is assigned upon creation ** The next id is the previous +1 * A pet can be bitten at most 100 times (then it is out of blood 🧛) === Cat * A cat is a pet * It can climb on trees ** It cannot climb two trees at the same time * And it can climb down from a tree ** If it was up on a tree * It represents itself as `I'm a cat` === Dog * A dog is a pet * It can go on the hunt for animals ** Between hunts, it has to rest for at least one minute * It represents itself as `I'm a dog` === Flea * A flea is _not_ a pet * It can jump on pets and bite them * It can switch to other pets or even none * It represents itself as `I'm a flea` == Tasks . Implement the necessary classes and logic to fulfill the requirements ** Extensive unit tests have been provided to guide you *** Make sure to use the correct names for classes, methods and properties to ensure that those will work with your implementation ** Mind the class diagram and specification above . Create full XMLDoc for your code . Ensure that the provided `Program` produces the following output .Sample Run image::pics/sample_run.png[Sample Run] WARNING: Unit tests & `Program` logic are commented to ensure the solution compiles -- enable them as needed while your implementation extends