このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
この例は、オプチカル マルチプレックス カードを表すクラスを実装します。通常、これらのカードには複数の入力端子と 1 つの出力端子があります。MuxCard
クラスでは、端子を端子の名前と端子のデータ レートで表します。マルチプレックス カードの出力レートは、入力端子データ レートの総和です。
MuxCard
クラスは、入力端子のデータ レートが 32 ビットの整数で表されるため、int32
クラスから派生します。MuxCard
クラスはint32
クラスのメソッドを継承し、これによってこのサブクラスの実装が簡単になります。たとえば、数値配列インデックス付けと算術演算はMuxCard
オブジェクトに機能します。その理由は、このクラスがこれらの操作をint32
クラスから継承するからです。
以下はMuxCard
クラスの定義です。入力端子のデータ レートで、クラスのint32
の部分を初期化していることに注意してください。
classdefMuxCard < int32propertiesInPutNames OutPutNameendproperties(Dependent = true) OutPutRateendmethodsfunctionobj = MuxCard (inptnames inptrates, outpname) obj = obj@int32(inptrates); obj.InPutNames = inptnames; obj.OutPutName = outpname;endfunctionx = get.OutPutRate(obj) x = sum(obj);endfunctionx = subsref(card, s)ifstrcmp(s(1).type,'.') base = subsref@int32(card, s(1));ifisscalar(s) x = base;elsex = subsref(base, s(2:end));endelsex = subsref(int32(card), s);endendendend
このコンストラクターは、3 つの引数を取ります。
inptnames
— 入力端子の名前の cell 配列
inptrates
— 入力端子レートのベクトル
outpname
— 出力端子の名前
omx = MuxCard({'inp1','inp2','inp3','inp4'},[3 12 12 48],'outp')
omx = 1x4 MuxCard array with properties: InPutNames: {'inp1' 'inp2' 'inp3' 'inp4'} OutPutName: 'outp' OutPutRate: 75 int32 data: 3 12 12 48
MuxCard
オブジェクトをint32
値の配列のように使用します。たとえば、次のインデックス ステートメントはオブジェクトのデータにアクセスして、レート12
をもつ入力端子の名前を判別します。
omx.InPutNames(omx==12)
ans = 'inp2' 'inp3'
インデックス ステートメントは logical 配列のインデックスを生成します。
omx == 12
ans = 0 1 1 0
MuxCard
オブジェクトのインデックスを指定することにより、入力端子のレートのint32
のベクトルにアクセスします。
omx(1:2)
ans = 3 12
OutPutRate
プロパティの get アクセス メソッドで、出力端子のレートの和を求めるためにsum
を使用します。
omx.OutPutRate
ans = 75