【LabVIEW技巧】LabVIEW OOP怎么學


前言

有很多人對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 創建型模式
這些設計模式提供了一種在創建對象的同時隱藏創建邏輯的方式,而不是使用新的運算符直接實例化對象。這使得程序在判斷針對某個給定實例需要創建哪些對象時更加靈活。
  • 工廠模式(Factory Pattern)
  • 抽象工廠模式(Abstract Factory Pattern)
  • 單例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)
2 結構型模式
這些設計模式關注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。
  • 適配器模式(Adapter Pattern)
  • 橋接模式(Bridge Pattern)
  • 過濾器模式(Filter、Criteria Pattern)
  • 組合模式(Composite Pattern)
  • 裝飾器模式(Decorator Pattern)
  • 外觀模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)
3 行為型模式
這些設計模式特別關注對象之間的通信。
  • 責任鏈模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解釋器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 備忘錄模式(Memento Pattern)
  • 觀察者模式(Observer Pattern)
  • 狀態模式(State Pattern)
  • 空對象模式(Null Object Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 訪問者模式(Visitor Pattern)
4 J2EE 模式
這些設計模式特別關注表示層。這些模式是由 Sun Java Center 鑒定的。
  • MVC 模式(MVC Pattern)
  • 業務代表模式(Business Delegate Pattern)
  • 組合實體模式(Composite Entity Pattern)
  • 數據訪問對象模式(Data Access Object Pattern)
  • 前端控制器模式(Front Controller Pattern)
  • 攔截過濾器模式(Intercepting Filter Pattern)
  • 服務定位器模式(Service Locator Pattern)
  • 傳輸對象模式(Transfer Object Pattern)
下圖是各個設計模式之間的關系,可見軟件工程理論體系的豐富。

設計模式的學習書籍

如果你有意提高自己的設計思想,推薦兩本設計模式學習比較好的書籍:
第一本是Head first設計模式,這本書使用java語言,使用簡單易懂的語言,講解設計模式。這本書對面向對象初學者非常關鍵,是面向對象思考的入門書籍
第二本是四人幫寫的設計模式
這本書相對復雜,提煉了24中常用設計模式,是設計模式類書籍的鼻祖,相比第一本而言,這本書就晦澀難懂,如果啃明白這本書,軟件思想將會上一個境界。
如果你有網絡,可以去菜鳥教程中學習軟件工程中的設計模式

第四階段學習

這里說明一下,第三階段和第四階段不一定非要分開學習,可以針對特定的模式進行第三和第四階段並行學習,以達到掌握使用的程度。
第三階段映射到第四階段中,由於LabVIEW by Value傳遞數據,無法滿足一些設計模式,GOOP和G#做了一些努力實現了大部分的設計模式,其工具包可以在VIPM或者NI官網上下載



在LabVIEW中,為了便於OOP編程,NI推出了ActorFramework,使用ActorFramework可以有序的使用面向對象編程,而且同樣采樣By Value實現,屬於官方工具包
 
在NI Community有很多學習資料來講解整個架構的設計思想和編程方法
 
后記
如果想要學習細節性的內容,或者有想要重點關注的內容,可以后台留言,小黑有時間會進一步深入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM