Matlab AppDesigner程式設計教程第1章——物件導向程式設計

zjzl91發表於2020-12-25

Matlab AppDesigner程式設計教程第1章——物件導向程式設計


前言

首先為什麼我們學習Matlab AppDesigner要先學物件導向程式設計呢?

1直接原因:Matlab appdesigner是物件導向程式設計的,所有控制元件都是物件,如果不瞭解物件導向程式設計,編起來就會比較懵逼;

2重要原因:物件導向程式設計好處多多,可以讓程式變得簡潔易讀易擴充套件易改等等,所以程式一大,物件導向程式設計就是必然的選擇;


一、什麼是物件導向程式設計

我們一開始寫程式一般都是程式導向程式設計,我們把需要計算機做的事情一步一步按照過程叫計算機完成,這就叫程式導向程式設計;與之相對的就是物件導向程式設計。

那麼到底什麼是物件導向程式設計呢?

說白了就是把我們的程式要乾的事情抽象出一個一個的類出來,類裡面的個體就是物件;比如說我們程式設計與人有關那麼,那麼人就是類,人的個體比如小紅、小明就是物件,各個物件作為人這個 “類“有他們共有的屬性,比如身高體重等,作為物件個體他們又有屬性上的差異,比如身高差異,體重差異等等;類還有另一個重要特點就是還具有方法或者叫操作,作為人這個“類”,他可以有很多方法比如會吃飯睡覺等等,根據程式設計需要我們可以任意新增。

講到這裡你可能還是不明白,這些在程式裡怎麼體現呢?下面用一個著名的五子棋例子來說明,你就能明白麵向物件的精妙所在。

五子棋程式設計例子

  1. 程式導向怎麼寫呢?
    1) 畫出棋盤2)黑子下2)畫出棋子3)白子下4)畫出棋子5)判斷輸贏6)重複步驟7)輸出輸贏結果
  2. 物件導向寫法
    先抽象類,縱觀整個下棋過程可以抽象出3類:
    第一類:人;人類包括兩個物件黑和白,這兩個物件其實是完全一樣的
    第二類:畫圖系統
    第三類:判定系統
    整個程式只需要幾個物件之間傳遞資料就行。

這樣寫程式是不是很簡潔明瞭,還有其他很多優點比如這個程式可以分工合作來寫,一個人寫第一類;一個人寫第二類;一個人寫第三類,最後只需提供輸入輸出的介面就行,類裡面就是一個黑匣子不用管裡面是什麼;還有比如說畫圖系統的美術風格變了,那麼物件導向程式設計只需要在類裡面改就行了,甚至還可以提供幾個風格供使用者選擇,實現這個功能在物件導向裡就非常方便,如果是面向對過程程式設計,畫圖系統分佈於整個程式不同位置,改起來就很麻煩。

到這裡為止,你應該對物件導向程式設計有個大概直觀的瞭解了,那麼接下來我們看看matlab如何建立類、物件以及如何物件導向程式設計。

首先建議大家使用最新版Matlab,因為Matlab一直在對AppDesigner更新,,2020相比2019就加了好多東西,所以我建議使用最新版本。那麼我們開始吧

二、使用步驟

1.新建類

在這裡插入圖片描述

2.程式碼說明

classdef untitled
    %UNTITLED 此處顯示有關此類的摘要
    %   此處顯示詳細說明
    
    properties
        Property1
    end
    
    methods
        function obj = untitled(inputArg1,inputArg2)
            %UNTITLED 構造此類的例項
            %   此處顯示詳細說明
            obj.Property1 = inputArg1 + inputArg2;
        end
        
        function outputArg = method1(obj,inputArg)
            %METHOD1 此處顯示有關此方法的摘要
            %   此處顯示詳細說明
            outputArg = obj.Property1 + inputArg;
        end
    end
end

上圖就是一個空白類,untitled就是類的名字;properties就是類的屬性;methods就是類的方法

3.建立點類

下面通過一個簡單的例子來講解類

構造一個點類,屬性有x,y,類方法裡的第一個函式為建構函式,規則則為下面程式碼所示;注:類的屬性和方法都可以用點來呼叫和賦值,和結構體類似

classdef point
    properties
        x
        y
        l
    end
    
    methods
        function obj = point(x,y)
            obj.x = x;
            obj.y = y;
        end
        function obj=get_l(obj)
            obj.l = sqrt(obj.x^2+obj.y^2);
        end
    end
end

這樣一個簡單的2維點類就構造完畢,現在我們可以構建兩個點p1和p2,p1,p2即為物件:p1=(1,1),p2=(1,2)

p1=point(1,1)
p2=point(1,2)

構造完類就可以新增方法了,比如我想知道點到原點的距離,我們就可以新增一個屬性l來表示,並在方法里加個函式,取名get_l,如下:

classdef point
    properties
        x
        y
        l
    end
    
    methods
        function obj = point(x,y)
            obj.x = x;
            obj.y = y;
        end
        function obj=get_l(obj)
            obj.l = sqrt(obj.x^2+obj.y^2);
        end
    end
end

這樣我們要知道p1到原點的距離可以這樣呼叫:

p1=point(1,1)
p1.get_l

當然我們還可以繼續新增屬性和方法根據我們需要,到這裡為止,構造類,建立物件,呼叫方法的基本方法我們已經會了,當然物件導向程式設計還有許多進階技巧,這些就需要大家自己在實踐中自己掌握了。


總結

以上就是Matlab構建類的方法,當然這是最基礎的概念,由於Matlab Appdesigner是用物件導向程式設計的方式寫的,所以掌握類的概念十分重要,下一章通過具體的例子來進一步說明類的使用。

本人專業光學設計工作者,業餘Matlab愛好者,感興趣的可以關注我的微信公眾號“靠譜光學”,分享靠譜知識。
在這裡插入圖片描述

相關文章