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