色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用MATLAB進行面向對象編程

冬至子 ? 來源:鳴鳴鑼的小屋 ? 作者:Maxwell Luo ? 2023-07-21 17:28 ? 次閱讀

01

定義類

1.1 一個最簡單的類

使用classdef ... end語句塊來標識一段類的定義,這一點和MATLAB其他代碼塊的語法風格是類似的,如定義函數的function ... end、定義循環的for ... end等等。要注意類定義文件的文件名要保持和類名一致,否則MATLAB在運行時會按照類定義文件名作為可被識別的標識符。

如下面這個示例中,定義了Student類,以及它的屬性和方法。這個實例展示了定義類的最簡單的方法,MATLAB還提供了很多高級的類特性定義方法,接下來的章節會逐一介紹。

圖片

1.2 類文件組織

對于一個簡單類來說,所有的方法實現可以放在同一個類文件中。但是隨著類實現的功能逐漸龐大,就可以把某一個類方法的實現單獨放在一個類方法文件中,和類定義文件一起放在以<@類名>的類文件夾下。同時,通過把類文件或者普通函數文件放在以<+包名>的包文件夾下,可以讓類有獨立的名稱空間。使用包文件夾中的類或者函數時,必須加入包名和點操作符修飾(包括包內的類在使用包中其他類時也要使用包名修飾,不會因為在同一個包內就能搜索到)。

圖片

圖片

02

類屬性

2.1 屬性特性

通過屬性特性來約束屬性的行為,語法是在屬性關鍵字之后添加小括號括起的鍵值對。常用的屬性特性有Access、Constant、GetAccess、SetAccess等。當用戶不指定屬性特性時,它們有各自的默認值,如Access默認就是public

圖片

圖片

2.2 屬性驗證

MATLAB是一種弱類型的語言,一般情況下MATLAB會做自動類型推斷。MATLAB提供了很多方式來驗證屬性滿足用戶的某種需求,如必須是string類型、必須滿足一定的維度要求、必須大于某一數值等。這些都是通過類的屬性驗證語法來實現的。

圖片

圖片

這里額外提一下屬性驗證函數,除了自帶的一些屬性驗證函數(如mustBePositive、mustBeGreaterThan、mustBeNumeric)等,還允許用戶自定義屬性驗證函數,這些屬性驗證函數放在和類定義的語句之后。

圖片

03

類方法

3.1 方法調用

C++不同的是,MATLAB沒有傳遞給類方法的隱藏類對象,如this指針,必須將類的對象顯式傳遞給方法。對于普通方法,通常第一個參數用于傳遞類對象,也通常寫作obj。這一點和python的__init__(self, ...)很像。調用方法時,可以使用函數式或者點操作符,這里我認為函數式調用方法是MATLAB的特色。函數式調用方法時,會涉及到對象匹配的優先級判定,因為不同的對象可能會存在同名的方法,由MATLAB的內部機制決定執行哪個類對象的方法。

圖片

圖片

** 3.2 方法特性**

和屬性特性一樣,也可以對方法指定不同的特性。常用的特性參數如Access、Static。這里特別提一下Static參數,當Static = true時,方法為靜態方法,不需要使用類對象的任何屬性參數。靜態方法通常作為實現類的功能函數存在。類似的函數還有類相關函數,即放在同文件下,類定義之后的局部函數。

圖片

注意這里grow方法返回了對象本身,這是因為如果修改了類對象的屬性,需要返回對象本身才能體現修改。猜測這是因為MATLAB的函數是按值傳遞的特性造成的,因此修改對象后必須返回對象的副本。如果對象繼承自handle類,那么可以避免這一步,handle類是按引用傳遞的。

3.3 函數重載

重載 MATLAB 函數的方法是定義一個與要重載的函數同名的類方法。在類實例中調用該函數時,MATLAB 會調度該類方法。還可以通過用適當的名稱定義類方法來重載 MATLAB 算術、邏輯、關系和索引運算符。這些運算符有對應的特殊函數名,如運算符 + 對應的內建函數就是plus。

圖片

3.4 構造函數

構造函數是一種特殊的類方法,和類同名,且必須放在類定義文件中,不可以放在單獨的文件中。可以在構造函數中使用其他函數一起完成構造。

圖片

3.5 創造對象數組

MATLAB類對象支持定義數組特性。在C++中,需要定義一個對象數組來保存各個對象的指針,但是MATLAB類對象本身就支持多維特性。通過在構造時指定對象的維度,可以返回多維的對象數組。

圖片

這里需要注意的是,使用obj(m, n) = obj的語法時,已經改變了對象的維度屬性,因此必須返回新的obj對象,哪怕繼承了handle類。這一點在構造函數使用了其他輔助函數時特別容易忽視和犯錯。

圖片

04

總結

MATLAB面向對象編程為組織大型工程提供了基礎,同時它的OOP特性和其他語言也有所不同

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MATLAB仿真
    +關注

    關注

    4

    文章

    176

    瀏覽量

    19922
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    6989
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627
收藏 人收藏

    評論

    相關推薦

    Python的面向對象編程詳解

    一般編程可分為面向過程編程,和面向對象編程。Python的
    發表于 09-04 16:35 ?559次閱讀
    Python的<b class='flag-5'>面向</b><b class='flag-5'>對象</b><b class='flag-5'>編程</b>詳解

    labview面向對象編程

    點擊學習>>《龍哥手把手教你學LabVIEW視覺設計》視頻教程使用LabVIEW面向對象編程方法,對于大型測試應用程序來講,面向對象相對于
    發表于 11-24 11:01

    labview面向對象編程

    有沒有大神在labview中用面向對象編程的?請教一下怎樣做?書上的對這方面的知識很少,無從下手,急急急急急急!
    發表于 08-08 14:26

    請問一下PLC支持面向對象編程嗎?

    傳統PLC編程方式是什么?PLC支持面向對象編程嗎?如何進行面向
    發表于 07-02 07:29

    面向對象編程及其三大特性 精選資料分享

    Oriented)是一種以過程為中心的編程思想。這些都是以什么正在發生為 目標進行編程,不同于面向對象的是誰在受影響。與
    發表于 07-21 08:38

    基于面向對象的LabVIEW編程有哪些優勢

    基于面向對象的LabVIEW編程有哪些優勢?如何去學習基于面向對象的LabVIEW編程
    發表于 08-24 07:22

    談談面向對象編程

    在工業自動化領域,梯形圖邏輯仍然是最常用的編程語言之一,但對于更加復雜的控制對象面向對象編程不失為一種高效率的方式。下面先來談談
    發表于 09-08 07:47

    面向對象編程語言的特點

    在工業自動化領域,梯形圖邏輯仍然是最常用的編程語言之一,但對于更加復雜的控制對象面向對象編程不失為一種高效率的方式。下面先來談談
    發表于 09-08 07:44

    請問一下如何進行面向對象編程

    請問一下如何進行面向對象編程
    發表于 09-18 06:16

    基于結構體的面向對象編程技巧是什么?

    基于結構體的面向對象編程技巧是什么?
    發表于 09-29 08:08

    面向對象編程介紹

    目錄一、面向對象編程介紹1.面向過程編程2.函數式編程3.
    發表于 12-13 07:22

    面向對象編程練習

    實驗 3 面向對象編程練習 一、實驗目的     通過編程和上機實驗理解 Java 語言是如何體現面向
    發表于 09-23 18:57 ?3043次閱讀

    plc面向對象編程架構與實現

    面向對象編程是計算機高級語言的一種先進的編程模式,在工業控制系統的PLC程序中也可以采用這種設計思想,雖然我們無法實現面向
    發表于 01-31 15:00 ?4254次閱讀
    plc<b class='flag-5'>面向</b><b class='flag-5'>對象</b><b class='flag-5'>編程</b>架構與實現

    西門子PLC面向對象編程

    面向對象編程是計算機高級語言的一種高級編程模式,這種設計思想也可以應用于工業控制系統的plc程序中。雖然我們 無法實現面向
    發表于 04-17 11:41 ?7次下載
    西門子PLC<b class='flag-5'>面向</b><b class='flag-5'>對象</b><b class='flag-5'>編程</b>

    什么是面向對象編程(OOP)?面向對象的程序設計

    編程領域,面向對象編程 (OOP) 是一種強大的范例,使開發人員能夠構建復雜且可擴展的應用程序。
    的頭像 發表于 07-19 14:57 ?1203次閱讀
    主站蜘蛛池模板: 久久精品热在线观看85| 亚洲精品久久久久AV无码林星阑 | 豆奶视频在线高清观看| 欧美另类videosbest| 孕妇泬出白浆18P| 接吻吃胸摸下面啪啪教程| 亚洲一区精品在线| 久久青草在线视频精品| 毛片在线全部免费观看| 精品国产在天天线在线麻豆| 国产成人无码区免费内射一片色欲| 97免费视频在线| 用震蛋调教女性下面视频| 亚洲 欧美 国产 综合久久| 秋霞影院福利电影| 青柠在线观看视频在线高清| 快播可乐网| 久久是热频国产在线| 久久99国产精品一区二区| 精品成人在线视频| 国产在线精品视亚洲不卡| 国产剧情在线精品视频不卡| 国产成人久久精品AV| 国产AV果冻传奇麻豆| 动漫美女喷水| 高清欧美性猛交xxxx黑人猛交| yellow在线观看免费高清的日本| gayxxxxgay呻吟受日本| av影音先锋影院男人站| 被窝伦理电影午夜| 国产 日韩 欧美 高清 亚洲| 观赏女性排尿| 国精产品一区一区三区有限公司| 古代荡乳尤物H妓女调教| 香蕉久久一区二区三区啪啪 | 成人免费视频在| 国产成人啪精视频精东传媒网站 | 拍戏被CAO翻了H| 午夜理论片日本中文在线| 亚洲乱码一区二区三区香蕉| 131美女爱做视频午夜剧场|