MFC面向对象编程基本方式

来源:互联网 发布:网络之混元法师txt下载 编辑:程序博客网 时间:2024/06/01 09:38

不多说 直接上代码

#pragma onceclass Shape{public:Shape(void){}virtual ~Shape(void){}virtual void Draw(CDC *pDC) = 0;void SetRect(int left, int top, int right, int bottom){m_rc.SetRect(left, top, right, bottom);}void offest(int x, int y){m_rc.OffsetRect(x, y);}protected:CRect m_rc;};class CCircle :public Shape{public:CCircle(void){}~CCircle(void){}virtual void Draw(CDC *pDC){pDC->Ellipse(m_rc);}};class CSquare :public Shape{public:CSquare(void){}~CSquare(void){}virtual void Draw(CDC *pDC){pDC->Rectangle(m_rc);}};class CRoundSquare :public Shape{public:CRoundSquare(void){}~CRoundSquare(void){}virtual void Draw(CDC *pDC){POINT pt = { 10, 10 };pDC->RoundRect(m_rc, pt);}};

画什么 

怎么画  

画在哪里



在这个例子里面 用到了

protected:CArray<Shape*, Shape*> m_Shape;
用指针的好处就是 可以进行如下的操作

m_Shape.Add(new CCircle());m_Shape.Add(new CSquare());m_Shape.Add(new CRoundSquare());
上面这种方式可以借鉴 用到我们会有很多继承自同一个类的不同类的对象



在一个类没有被实例化之前 一切的操作都是抽象的 都是对自己(数据)可能的操作  有一些可能的方法 比如说能够画一个矩形 移动它 等等 就等于是这个类能够做的事   他可以借用任何想用的类来实现自己的目的 类的数据其实是细节 

当获得一个对象时,可以对它进行操作,就是在一个最原始的类对象的基础上发展,调用成员函数,使这个对象丰满,这其中会获得很多本地的参数,作为类函数的实参

这就好像动物一样,分很多科目,还有遗传特性,具体到每一个动物时,我们就会详细去了解它的特性

世界是复杂的 当我们为了达到我们的目的动用我们所有的资源时,我们的目的实现了,我们以为就是一切了

其实,我们这个类很可能就是其他类达到目的途径上的一个卒子

各个类之间的相互引用 构成了一个完整的程序 

世界上所有人的互动 构成了这个社会

在程序中 应该存在最上面的那个类和实例 如MFC中APP类

后面接着就是程序管理系统 电脑 然后就是人类

但是人类肯定不是最终的目的 或者说存在某一个比人类更高的类别

他们才不关心我们人类 也就是我们人类只不过是它眼中的一个小卒子

哈哈 想太多…………



原创粉丝点击