このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @ @ @ @ @
クラスで定義されたプロパティとメソッドは,クラスのユーザーがそのクラスのオブジェクトどのようにやり取りするかを決めるインターフェイスを形成します。関連するクラスのグループを作成する場合には,インターフェイスでこれらのクラスすべてに共通のインターフェイスを定義します。@ @ @ @ @ @ @ @ @ @ @ @ @ @。
さまざまな種類のグラフを表すために設計されたクラスのセットを考えます。すべてのクラスで,グラフの作成に使用するデ,タを含む数据
プロパティを実装しなければなりません。ただし,デ,タの形式は,グラフの種類によって大きく異なります。それぞれのクラスに,異なる方法で数据
プロパティを実装できます。
同様の違いはメソッドに適用されます。すべてのクラスはグラフを作成する画
メソッドをもことができますが,このメソッドの実装はグラフの種類によって異なります。
インターフェイスクラスの基本的な考え方は,各サブクラスが実際の実装を定義せずに実装すべきプロパティとメソッドを指定することです。このようにすると,関連するオブジェクトのグルプで使用するンタフェスが統一されます。後でクラスを追加しても,。
グラフを実装する▪▪ンタ▪▪フェ▪▪スクラス
この例では,特化したグラフを表すために使用するクラスの@ @ @フェ@ @ @ @ @ @ @このインターフェイスは,サブクラスで実装する必要のあるプロパティとメソッドを定義する抽象クラスです。
ただし,これらのコンポ,ネントをどのように実装するかは指定しません。このため,統一のインターフェイスを使用しても,特化したサブクラスごとに異なる機能を実装できる柔軟性が提供されます。
この例では,次のようなパッケージフォルダーにインターフェイス,派生したサブクラス,ユーティリティ関数が含まれます。
+图形/ GraphInterface.m%抽象接口类+图形/ LineGraph.m%混凝土子类
@ @ @ @ @ @ @ @ @ @ @ @ @ @
图
クラスは次のプロパティを指定します。これらのプロパティは,サブクラスで定義しなければなりません。
原始的
-特化したグラフの実装に使用されるグラフィックスオブジェクトのハンドル。クラスのユーザーは、これらのオブジェクトに直接アクセスする必要がないので、このプロパティのSetAccess
属性とGetAccess
属性は受保护的
です。AxesHandle
-グラフに使用する座標軸のハンドル。特化した图
オブジェクトでは,坐标轴オブジェクトのプロパティを設定できます。このプロパティには受保护的
SetAccess
とGetAccess
があります。数据
- - - - - -GraphInterface
クラスのすべてのサブクラスはデ,タを保存しなければなりません。デ,タの種類が異なるので,各サブクラスでデ,タのストレ,ジ方法を定義します。サブクラスのユザは,このプロパティがパブリックのアクセス権をもようにデタ値を変更できます。
GraphInterface
クラスは,サブクラスで実装しなければならない3の抽象メソッドの名前を指定します。また,GraphInterface
クラスのコメントには,各サブクラスのコンストラクターが,プロットするデータと,すべてのクラスプロパティの名前と値のペアを受け入れなければならないということが示唆されています。
サブクラスコンストラクター——データと,プロパティ/値のペアを受け入れ,オブジェクトを返します。
画
——サブクラスが実装するグラフのタイプに従って,基本のレンダリングを作成し,データをグラフ表示するために使用します。变焦
-坐标轴のCameraViewAngle
プロパティを変更することによるzoomメソッドの実装。この▪▪ンタ▪フェ▪▪スは,サブクラス間の整合のために関数camzoom
を使用するように表示します。addButtons
静的メソッドで作成されたズ,ムボタンは,このメソッドをコ,ルバックとして使用します。updateGraph
- - - - - -数据
プロパティが変更されるたびに,プロットされるデ,タを更新するために集。数据
メソッドによって呼び出されるメソッド。
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
GraphInterface
抽象クラスから派生するクラスのパッケ,ジは,以下の動作を実装します。
プロットをレンダリングせずに特化した
GraphInterface
オブジェクト(サブクラスオブジェクト)のesc escンスタンスを作成する特化した
GraphInterface
オブジェクトを作成するときに,オブジェクトのプロパティをまったく指定しないか,任意のプロパティを指定する現在表示されたプロットを自動的に更新するオブジェクトプロパティを変更する
特化した
GraphInterface
オブジェクトのそれぞれで,必要に応じて追加のプロパティを実装可能にし,クラスのユーザーがこれらの特性を制御できるようにする
@ @ @ @ @ @ @ @ @ @ @ @ @ @
GraphInterface
クラスは,サブクラスが使用するメソッドとプロパティを定義する抽象クラスです。抽象クラスのコメントは,目的とする実装を説明します。
classdefGraphInterface < handle用于创建数据图的抽象类子类构造函数应该接受%要绘制的数据和%属性名/属性值对属性(SetAccess = protected, GetAccess = protected)原始AxesHandle结束属性数据结束方法(抽象)画(obj)使用直线,曲面,%或补丁图形原语变焦(obj因素)改变CameraViewAngle%用于2D和3D视图使用camzoom来保持一致性updateGraph (obj)更新Data属性和%更新绘图原语结束方法函数set.Data (obj newdata) obj。Data = newdata;updateGraph (obj)结束函数addButtons(gobj) hfig = get(gobj.)AxesHandle,“父”);uicontrol (hfig“风格”,“按钮”,“字符串”,“缩小”,...“回调”@ (src evnt)变焦(gobj。5));uicontrol (hfig“风格”,“按钮”,“字符串”,“放大”,...“回调”@ (src evnt)变焦(gobj, 2),...“位置”,[100 20 60 20]);结束结束结束
GraphInterface
クラスは,プロパティの集メソッド(集。数据
)を実装し,数据
プロパティに対する変更をモニタ,します。代わりの方法として,数据
プロパティを摘要
と定義することで,サブクラスは,このプロパティに设置アクセスメソッドを実装するかどうか決めることができます。GraphInterface
クラスで抽象メソッド(各サブクラスで実装しなければならないupdateGraph
メソッド)を呼び出すsetアクセスメソッドを定義します。GraphInterface
インターフェイスによりクラスのパッケージ全体に特定のデザインが組み込まれますが,自由度が制限されることはありません。
すべてのサブクラスで使用できるメソッド
addButtons
メソッドによって,各サブクラスで実装しなければならない变焦
メソッドにプッシュボタンを追加できます。通常の関数の代わりにメソッドを使用すると,addButtons
で,クラスの保護されたデ,タ(座標軸ハンドル)にアクセスできるようになります。オブジェクトの变焦
メソッドをプッシュボタンコ,ルバックとして使用します。
函数addButtons(gobj) hfig = get(gobj.)AxesHandle,“父”);uicontrol (hfig“风格”,“按钮”,...“字符串”,“缩小”,...“回调”@ (src evnt)变焦(gobj。5));uicontrol (hfig“风格”,“按钮”,...“字符串”,“放大”,...“回调”@ (src evnt)变焦(gobj, 2),...“位置”,[100 20 60 20]);结束
具象クラスの派生-线形图
この例では,簡単な線グラフを表示するために使用するサブクラスを1だけ定義します。このサブクラスは,GraphInterface
から派生しますが,抽象メソッド画
、变焦
、updateGraph
,およびサブクラス自身のコンストラクタ,を実装します。基底クラス(GraphInterface
)とサブクラスはすべて,パッケ,ジ(图形
)に含めます。このパッケ,ジは,クラス名を参照するときに使用しなければなりません。
classdefLineGraph <图形。GraphInterface
プロパティの追加
LineGraph
クラスは,GraphInterface
クラスで定義されるesc esc esc esc esc esc esc esc esc esc escLineColor
と线型
)を追加します。このクラスは,各プロパティの初期値を定義します。このため,コンストラクタ,でのプロパティ値の指定はオプションになります。デ,タがなくてもLineGraph
オブジェクトを作成できますが,このオブジェクトからグラフを作成することはできません。
属性LineColor = [0 0 0];LineType = '-';结束
LineGraphコンストラクタ
コンストラクタ,は,x
座標およびy
座標のデ,タをも结构体
と,プロパティの名前と値のペアを受け入れます。
函数gobj = LineGraph(data,varargin)如果Nargin > 0 gobj。数据=数据;如果Nargin > 2为K =1:2:length(varargin) gobj.(varargin{K}) = varargin{K +1};结束结束结束结束
绘制メソッドの実装
LineGraph
画
メソッドは,プロパティ値を使用して行
オブジェクトを作成します。LineGraph
クラスは,行
ハンドルを保護されたクラスデ,タとして保存します。クラスのコンストラクターで入力引数を取らない場合に対応するために、画
が処理前に数据
プロパティが空かどうかを確認します。
函数Gobj = draw(Gobj)如果isempty (gobj.Data)错误(“LineGraph对象不包含数据”)结束h = line(gobj.Data.x,gobj.Data.y,...“颜色”, gobj。LineColor,...“线型”, gobj.LineType);gobj。Primitive = h;gobj。AxesHandle = get(h,“父”);结束
Zoomメソッドの実装
LineGraph
の变焦
メソッドは,GraphInterface
クラスにあるコメントに従って,関数camzoom
を使用します。関数camzoom
は,ズームのための便利なインターフェイスを提供し,addButtons
メソッドによって作成されるプッシュボタンと共に正しく動作します。
プロパティのsetメソッドの定義
プロパティの设置メソッドは,コンストラクターのプロパティ値が初めて変更されたときに,自動的にコードが実行されるようにする便利な方法の1つです(プロパティのsetメソッドを参照)。linegraph
クラスは,プロパティ値が変更されるたびに设置メソッドを使用して,始めの行
デ,タを更新します。プロットは,再描画されます。プロパティのsetメソッドを使用すると,画
メソッドを呼び出さなくてもデ,タのプロットをすばやく更新できます。一方、画
メソッドは,現在のプロパティの値に合わせてすべての値をリセットして,プロットを更新します。
LineColor
、线型
および数据
の3のプロパティでsetメソッドを使用します。LineColor
と线型
は,LineGraph
クラスによって追加されるプロパティで,このクラスで使用する基本の行
に固有のものです。その他のサブクラスでは,機能に特有の別のプロパティ(たとえば,FaceColor
)を定義できます。
GraphInterface
クラスは,数据
プロパティのsetメソッドを実装します。しかし,GraphInterface
クラスの各サブクラスがupdateGraph
と呼ばれるメソッドを定義することが必要になります。このメソッドは,使用する特定の基本となる描画のプロットデ,タを更新します。
LineGraphクラス
以下はLineGraph
クラスの定義です。
classdefLineGraph <图形。GraphInterface属性LineColor = [0 0 0] LineType =“- - -”结束方法函数gobj = LineGraph(data,varargin)如果Nargin > 0 gobj。数据=数据;如果Nargin > 1为K =1:2:length(varargin) gobj.(varargin{K}) = varargin{K +1};结束结束结束结束函数Gobj = draw(Gobj)如果isempty (gobj.Data)错误(“LineGraph对象不包含数据”)结束h = line(gobj.Data.x,gobj.Data.y,...“颜色”, gobj。LineColor,...“线型”, gobj.LineType);gobj。Primitive = h;gobj。AxesHandle = h.Parent;结束函数变焦(gobj因素)camzoom (gobj.AxesHandle因素)结束函数(gobj updateGraph (gobj)集。原始,...“XData”gobj.Data.x,...“YData”gobj.Data.y)结束函数set.LineColor gobj (gobj、颜色)。LineColor =颜色;设置(gobj。原始,“颜色”、颜色)结束函数gobj set.LineType (gobj ls)。LineType = ls;设置(gobj。原始,“线型”ls)结束结束结束
LineGraph
クラスの使用
LineGraph
クラスは,图
基底クラスが指定する簡単なAPIを定義し,特化したグラフを実装します。
D.x = 1:10;D.y = rand(10,1);Lg =图形。LineGraph (d,“LineColor”,“b”,“线型”,“:”);lg.draw;lg.addButtons;
[ズ,ムアウト]ボタンをクリックすると,ボタンのコ,ルバックによる变焦
メソッドを表示します。
プロパティを変更すると,グラフが更新されます。
D.y = rand(10,1);lg。数据= d;lg。LineColor = [0.9,0.1,0.6];
ここで,[ズ,ムアウト]をクリックして新しい結果を参照します。