前言
有很多人对LabVIEW OOP存在比较极端的看法,大致分为两类:
1. 绝对否定派认为LabVIEW OOP只不过是LabVIEW为了追求时髦,在面向过程的基础上用簇做了一些特性,实际上完全不必学习
2. 绝对肯定派认为LabVIEW OOP非常好,能解决所有项目中遇到的问题,如代码很难维护,拓展性非常不好等
上面两种观点都有所偏颇,实际上,能在在特定情境下解决特定问题就是好的,工程问题,讲究的是:不管黑猫白猫,能抓老鼠的就是好猫。
既然LabVIEW OOP出现且发展多年有越来越多的人去学习,就说明在特定情景下,LabVIEW OOP更能解决一些问题。那么如何学习LabVIEW OOP呢,从哪里开始,又从哪里结束?
LabVIEW OOP学习阶段
LabVIEW OOP学习不是一蹴而就的,大致学习分为以下几个阶段:
第一阶段:LabVIEW 基础
LabVIVEW OOP的学习前提是你要有至少1-3年的LabVIEW编程经验,能用LabVIEW解决常见的项目问题,毕竟LabVIEW是面向过程的图形化编程语言,如果工具用不好,学习内功心法见效会很慢,甚至连程序都不会写。
第二阶段:LabVIEW OOP基础
如果你学习了LabVIEW,并且可以解决大部分遇到的问题,你可以尝试接触LabVIEW OOP基础知识,这些知识相对来说比较多,如GSDzone中有面向对象的课程,NI官网也可以搜索相关的NI Week视频,NI Community也有一些面向对象的资料。相信能进入第二阶段查找学习资料应该不是问题。
在之前的文章中,我引出LabVIEW OOP的封装特性,这就属于LabVIEWOOP 基础阶段。除去封装特性,还有继承和多态未讲到。
第三阶段:OOP 设计模式
需要注意的是,了解了LabVIEW OOP的编程方法并不代表你会设计OOP程序或者做一个高内聚低耦合的代码。解决问题的钥匙并不在LabVIEW,如果想要在设计思想上进一步,你应当去学习OOP设计模式,从其他语言中找寻设计的灵感,从而规范LabVIEW程序设计。(OOP是面向对象编程,如果想要设计的更好,可以进一步学习OOD,即面向对象设计)
第四阶段:LabVIEW OOP设计
由于LabVIEW并非成熟的OOP编程语言,一些OOP设计模式和用法在移植到LabVIEW中时,会存在各种各样的问题,这时候就需要对LabVIEW中应用OOP有所思考,所幸NI和众多的工程师已经为我们走出了很长一段,GOOP和ActorFramework都为推动LabVIEW OOP设计走出了不同的路线。
本文重点
本文越过了第一和第二阶段,重点给一些想深入学习OOP的一些童鞋一些建议,如果对第二阶段学习有需求的,可以留言,我再补一个文章重点介绍。
对于第三阶段中,我们重点需要学习的是OOP设计中的设计模式,也就是已经形成理论体系的软件工程方法。
第三阶段学习
什么是设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。
需要注意的是,设计模式和设计框架不是同一个概念
设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现
而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体
虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。
为什么要学习设计模式
在LabVIWE开发程序中,通常会遇到以下的一些问题:
1.项目是一次性的,完成项目后,你将不想再打开以前写过的VI,因为项目渐进明细,代码也越来越混乱,直到最后作者都不想看自己的代码
2.你接手了别人的项目,但是每个人的风格全部不统一,一人一种设计方法,整个程序混乱到无法维护
3.你想要整理一下以前写的比较好的模块,但是模块在不同的项目中应用方法不一样,提取出来的可服用资产只能在工具包层级,而到不了设计层面。
在IT软件设计之初,大家也面临着这样的问题,写出来的面向过程语言各有风格,多人合作时,代码越来越庞大,接口越来越混乱,最终导致程序难以维护,这就是面向过程程序设计中产生的软件危机。
这种无法有序组织大型程序的解决源于OOP编程的产生,OOP设计通过封装、继承、多态等特性,采用系统的代码设计,避免了杂乱设计给软件项目带来的高失败率。
一些好的OOP设计经验被前人给总结,形成了一套设计模式,在设计思想和软件风格上给出了良好的建议。通过对设计模式的学习,则可以让你借鉴别人的设计模式,快速解决特定情境下的问题,从而使代码可维护性和可拓展性得以提高。
设计模式有哪些
百度搜索设计模式会有很多的资料,如果你对感兴趣,可以自己阅读一下,下面是一些常见的设计模式
序号 | 模式 & 描述 | 包括 |
---|---|---|
1 |
创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 |
|
2 |
结构型模式 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 |
|
3 |
行为型模式 这些设计模式特别关注对象之间的通信。 |
|
4 |
J2EE 模式 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。 |
|
下图是各个设计模式之间的关系,可见软件工程理论体系的丰富。
设计模式的学习书籍
如果你有意提高自己的设计思想,推荐两本设计模式学习比较好的书籍:
第一本是Head first设计模式,这本书使用java语言,使用简单易懂的语言,讲解设计模式。这本书对面向对象初学者非常关键,是面向对象思考的入门书籍
第二本是*写的设计模式
这本书相对复杂,提炼了24中常用设计模式,是设计模式类书籍的鼻祖,相比第一本而言,这本书就晦涩难懂,如果啃明白这本书,软件思想将会上一个境界。
如果你有网络,可以去菜鸟教程中学习软件工程中的设计模式
第四阶段学习
这里说明一下,第三阶段和第四阶段不一定非要分开学习,可以针对特定的模式进行第三和第四阶段并行学习,以达到掌握使用的程度。
第三阶段映射到第四阶段中,由于LabVIEW by Value传递数据,无法满足一些设计模式,GOOP和G#做了一些努力实现了大部分的设计模式,其工具包可以在VIPM或者NI官网上下载
在LabVIEW中,为了便于OOP编程,NI推出了ActorFramework,使用ActorFramework可以有序的使用面向对象编程,而且同样采样By Value实现,属于官方工具包
在NI Community有很多学习资料来讲解整个架构的设计思想和编程方法
后记
如果想要学习细节性的内容,或者有想要重点关注的内容,可以后台留言,小黑有时间会进一步深入。