/* * ReversCounter.hh * * Created on: 19 мая 2021 г. * Author: sozonov */ #ifndef UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_ #define UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_ /*!Класс реализует логику работы реверсивного счётчика: *В зависимости от настройки direction, при вызове метода счёта, счетчик либо увеличивает, либо уменьшает свое значение *Модуль счёта module отвечает за значение сброса счётчика *При вызове метода сброса, счётчик принимает значение по сбросу reset_value */ class ReversCounter { public: //todo: В конструктор необходимо передавать енум. Решение о преобразовании - на вызывающем коде. enum Direction{ Increment , Decrement }; ReversCounter(unsigned int _dir, unsigned int _mod, unsigned int _r_v); //!Дискретный шаг счёта. void count(); //!Сброс значения счетчика. void reset(); //!Получение значения счётчика. unsigned int getCount() const{return counter;} protected: //Данные, задающиеся в настройках Direction direction; //!<направление счета const unsigned int module; //!<модуль счёта const unsigned int reset_value; //!<значение по сбросу unsigned int counter; //!<значение счётчика //!метод при пересечении через границы счётчика virtual void border_crossing(); }; #endif /* UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_ */