美文网首页
GUI开发必须使用面向对象编程语言

GUI开发必须使用面向对象编程语言

作者: moriv4 | 来源:发表于2020-05-28 14:16 被阅读0次

最近看到网上有不少用C语言开发的GUI项目,关注收藏的人还比较多。但我想说C语言不适合开发GUI应用程序,强行使用多半是在造垃圾。我要说明一个观点:GUI开发必须使用面向对象编程语言。

GUI开发一个很重要的内容是对各个概念建立模型。比如说按钮、输入框、窗口、多选框、滚动条等等控件,你要知道它长什么样子、有哪些特点、有什么功能。有了模型之后,就可以根据它创建实例,生成各种各样的控件。在面向对象思想中,这叫做“类和对象”。对象是类的实例,类是对象的模板。对象是对客观事物的抽象,类是对对象的抽象。

如果用C语言编写GUI程序,代码可读性极差。指针结构体满天飞,手动调用构造函数、析构函数、拷贝函数来实现面向对象的特点,函数名特别长,不看文档不知道它是干什么的。手动调用容易忘记,函数名太长记不下来,也容易忘记。

控件的设计是复杂的,好在面向对象里有“封装”的概念。它隐藏了控件内部复杂的业务逻辑,对外提供简单友好的接口。使用者无需知道实现细节,只需要知道类中公开的成员变量、成员函数就可以使用它了。类的声明定义和它的实现分离,类的数据和它的功能结合,是高类聚、低耦合的优秀设计。就算没有文档,开发者看一看类的声明定义就大概可以知道它的功能。

如果用C语言操作控件,内部结构随意修改,大大降低了安全性。编程的时候代码智能补全也不好用,开发效率非常低。字符串的操作甚至停留在char*级别,处理中文还要解析编码类型,一点也不方便。

模型之间的关系非常复杂。有的模型高度相似,普通按钮、单选按钮、多选按钮都是点击后触发效果的控件;文本输入框、数字输入框、日期输入框都是输入类的控件;滚动条有水平的、垂直的两种类型。如果给每一个模型单独写一套代码,费时费力不说,还不容易维护。为了提高代码的复用程度,可以使用面向对象思想里“继承、派生、父子”这些概念。

如果用C语言编写GUI框架,代码特别长。因为不同控件的微小差异就要写几套差不多的代码。在原有控件的基础上开发自定义控件也不方便,破坏了代码的封装性,一不小心就出错了。

有些功能高度相关,可以复用相同的接口。比如要向字符串末尾添加字符、字符串、字节数组。这三种功能可以使用相同的函数名。设置控件内文本这个功能,成员函数名都是setText。“函数重载、多态性”在这里体现得非常明显,进一步提高了代码复用程度。

如果用C语言写这些功能,不同的功能要对应不同的函数。随着功能越来越多,函数名就会越来越长。对象之间往往存在一对一、一对多、多对一的复杂关系,连C++都不好处理,C语言怎么好做?

相关文章

  • GUI开发必须使用面向对象编程语言

    最近看到网上有不少用C语言开发的GUI项目,关注收藏的人还比较多。但我想说C语言不适合开发GUI应用程序,强行使用...

  • 2018-07-28

    面向对象: 一种编程思想,和具体的语言无关;所有支持面向对象程序设计开发的编程语言的面向对象开发的思想都是一致的!...

  • C#面向对象设计技巧

    面向对象编程学习必须清楚: 学好面向对象编程语言就是要学好面向对象编程的各种原则、方法、技巧、经验、模式等。不懂这...

  • 面向对象编程,类和对象

    面向对象编程 Java是面向对象的一门编程语言,所以余姚使用者具备面向对象编程的思想。 那么,什么是面向对象编程呢...

  • OC——52个有效方法:6.理解“属性”概念

    使用OC等面向对象语言编程时,“对象(object)”就是“基本结构单元(building block)”。开发者...

  • java文艺复兴

    JAVA 语言基础 理解面向对象OO 常用类 集合 IO 多线程 GUI(??) 网络编程 JAVA WEB (...

  • 面向对象

    //JS是编程语言-->编程语言都是基于"面向对象的思想"进行开发设计的-->面向对象里面需要我们掌握的:类的继承...

  • 一文了解Dart语法

    前言 Flutter应用程序使用Dart语言开发,Dart是面向对象编程语言,由Google于2011年推出,目前...

  • 第二章 Flutter开发 - Dart语言

    前言 Flutter应用程序使用Dart语言开发,Dart是面向对象编程语言,由Google于2011年推出,为了...

  • 终于我用JOL打破了你对java对象的所有想象

    简介 使用面向对象的编程语言的好处就是,虽然没有女朋友,但是仍然可以new对象出来。Java是面向对象的编程语言,...

网友评论

      本文标题:GUI开发必须使用面向对象编程语言

      本文链接:https://www.haomeiwen.com/subject/fpgoahtx.html