これから始めることができます:
//Template Method pattern is used here to describe Port interface
class Port{
public:
void behavior(){
architecture_behavior();
}
void setD(bool input)(){
doSetD(input);
}
void setCLK(bool clk){
doSetCLK(clk);
}
bool state(){
return doState();
}
protected:
virtual void architecture_behavior();
virtual void doSetD(bool input);
virtual void doSetCLK(bool clk);
virtual void doState();
};
class Dflipflop : public Port{
public:
Dflipflop(bool clk, bool d){
CLK=clk;
D=d;
}
private:
void architecture_behavior(){
if(CLK=true){
Q=D;
QN=!Q;
}
}
void doSetD(bool d){
D=d;
}
void doSetCLK(bool clk){
CLK=clk;
}
bool doState(){
return Q;
}
};
これはあなたが望むものにさらに近いかもしれません:
class Dflipflop2 : public Port{
public:
Dflipflop2(bool clk, bool d){
CLK=clk;
D=d;
}
void architecture_behavior(bool d, bool clk){ // set state
D=d;
if(CLK=true && clk==false){ //set Q only if clock switches from 1 to 0
Q=D;
QN=!Q;
}
CLK=clk;
}
private:
bool doState(){
return Q;
}
};