概念

大多数做单片机的用户都接触不到面向对象(OOP)的开发方式,因此在界面设计上对这种模式都不是很理解,本章节重点讲解一下界面开发为什么要使用面向对象的方式开发

首先,我们把代码分成两种,页面代码和控件代码

首先我们理解一个页面可以放多个同一种控件,也就是说控件代码在页面上是可以复用的;

由于控件代码可以复用,那么在写控件的代码时就不能写该控件以外的代码,比如对页面上其他控件操作的代码,因此面向对象的开发思想要求在页面中继承控件相应的方法来完成这种分层结构:

以我们常用的按钮为例:

上是按钮的控件代码,在控件代码中,红框构建了一个onclick()的事件(可以理解为控件内的函数),但是可以看到onclick()后面立即跟有{},表示这个事件(函数)没有代码,也就是说调用这个事件将直接返回,那么为什么要设计这个空函数呢?

我们再来看页面的代码:

可以看到页面代码中,x1被定义成xk_button的class变量,因此在页面代码中我们继承x1控件的onclick()方法

而在运行的时候,控件内部的onclick调用调用的并不是控件内部的onclick空函数,而是页面上继承的x1.onclick事件,因此按钮1按下后,l1的text就会发生变化;

因此:控件方法的继承主要用于在页面代码中对页面中其他的控件属性的修改

属于控件内方法继承出来到页面,就可以对其他的控件做操作;


另一种灵活用法:临时性差异的变革

红框内是一个LABEL控件,但是个别情况下我们希望该文字下面有条横线,按照正常的情况可以写一个带横线的LABEL控件,但是这样个别的变化都需要写控件的话,控件的品种就太多了,因此我们可以用继承的方式来:

页面代码中,按下书写:

class l1=loadcom(label);

void l1.show()  //继承l1 label的show()方法
{
    super.show(); //调用控件内的show方法
    boxf(l1.x1+5,l1.y1+43,l1.x2-5,l1.y1+48,51); //用画实心方框的方法画一个粗线
}

于是,这个只用一次的临时性差异的控件就完成了;在这里要提一下 super保留字,表示控件内的原始函数,就是非继承的页面函数;