From bde0e681e6944e7858cce48a10e2d5a580261cd6 Mon Sep 17 00:00:00 2001 From: "mijo.cikes" Date: Wed, 14 Nov 2018 23:50:12 +0100 Subject: [PATCH] exercise done --- exercise/01/animal.cpp | 65 +++++++++++++++++++++++++++++++++++++ exercise/01/animal.h | 61 ++++++++++++++++++++++++++++++++++ exercise/01/animals.vcxproj | 6 ++-- 3 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 exercise/01/animal.cpp create mode 100644 exercise/01/animal.h diff --git a/exercise/01/animal.cpp b/exercise/01/animal.cpp new file mode 100644 index 0000000..b4dac84 --- /dev/null +++ b/exercise/01/animal.cpp @@ -0,0 +1,65 @@ +#include "animal.h" +unsigned insect::legs() +{ + return 6u; +} + +unsigned bird::legs() +{ + return 2u; +} + +unsigned spider::legs() +{ + return 8u; +} + +std::wstring cockroach::species() +{ + return L"cockroach"; +} + +std::wstring sparrow::species() +{ + return L"sparrow"; +} + +std::wstring tarantula::species() +{ + return L"tarantula"; +} + +unsigned leg_counter::legs() +{ + unsigned int sum=0; + std::list::iterator itr = animals_.begin(); + for (itr = animals_.begin(); itr != animals_.end(); ++itr) + { + sum += (*itr)->legs(); + } + return sum; +} + +std::wstring leg_counter::add_animal(animal* animal) +{ + + animals_.push_back(animal); + return animal->species(); +} + +animal* animal_factory(int animal) +{ + switch (animal) + { + case animal_type::cockroach: + return new cockroach{}; + case animal_type::tarantula: + return new tarantula{}; + case animal_type::sparrow: + return new sparrow{}; + } +} + + + + diff --git a/exercise/01/animal.h b/exercise/01/animal.h new file mode 100644 index 0000000..12225d2 --- /dev/null +++ b/exercise/01/animal.h @@ -0,0 +1,61 @@ +#pragma once +#include +#include + +class animal +{ +public: + virtual std::wstring species() = 0; + virtual unsigned int legs() = 0; + +}; + +class insect : public animal +{ + unsigned int legs() override; +}; + +class cockroach : public insect +{ + std::wstring species() override; +}; + +class bird : public animal +{ + unsigned int legs() override; +}; + +class sparrow : public bird +{ + std::wstring species() override; +}; + +class spider : public animal +{ + unsigned int legs() override; +}; + +class tarantula :public spider +{ + std::wstring species() override; +}; + +class leg_counter +{ + std::list animals_; +public: + std::wstring add_animal(animal * animal); + unsigned int legs(); +}; + +namespace animal_type +{ + enum { + cockroach = 1, + sparrow, + tarantula + }; +} + +animal* animal_factory(int animal); + diff --git a/exercise/01/animals.vcxproj b/exercise/01/animals.vcxproj index 0c14cbf..42f52e7 100644 --- a/exercise/01/animals.vcxproj +++ b/exercise/01/animals.vcxproj @@ -82,13 +82,13 @@ $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) - - - + + +