43 lines
1.9 KiB
C++
43 lines
1.9 KiB
C++
/*
|
||
* 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_ */
|