设备驱动程序和图形的类设计

Class design for device driver and graphics

本文关键字:图形 设备驱动程序      更新时间:2023-10-16

我的头撞在墙上,试图组织一些类之间的一组简单关系。基本上,试图以一种合理的方式将3个类联系在一起。

具有3个类别的简化场景:

1-LCD设备驱动程序2-简单图形库3-计数器显示类

到目前为止,我在伪代码中得到了什么:

class Driver : public Graphics 
{
public:
    void loadImage(int * image){
        // load image into device memory
    }
};

class Graphics
{
public:
    int image[10];
    void displayImage(int * image){
        // create/ manipulate image here and...
        loadImage(image); //send to device
    }

    virtual void loadImage(int * image){}
};

class Counter
{
public:
    int counterImage[10];
    void makeCounter(int * counterImage){
        //make a clock counter graphic and…
        displayImage(counterImage); 
    }
};

显然,我还没有弄清楚如何将displayImage(counterImage)函数集成到Counter类中。我可以在Counter类中virtualdisplayImage()的一个版本,但我认为这将意味着Graphics必须始终继承Counter,而我并不热衷于此。有没有更好的方法允许Counter访问Graphics类函数(最终传递到LCD驱动程序),同时与之保持分离?

为什么要使用继承?

根据对你的类的描述,我看不出它们之间有任何专业化/某种关系,这意味着你应该在这种情况下使用组合:

  • 图形Driver需要能够显示一些Image(您的示例中没有这种类型)
  • Graphics图像加载库需要加载Image的能力
  • Counter显示器应该同时使用DriverGraphics,两者都在其构造函数中给定,并与它们一起显示计数器

这个概念被称为组合而非继承,你可以用谷歌获得更多关于它的好文章。(基本上:OOP和使用类并不意味着所有东西都必须使用继承)