Этот пример реализует класс, чтобы представлять оптическую мультиплексную карту. Эти карты обычно имеют несколько входных портов и выходной порт. MuxCard
класс представляет порты именами порта и уровнями данных порта. Норма выработки мультиплексной карты является суммой скоростей передачи данных входного порта.
MuxCard
класс выводит из int32
класс, потому что 32-битные целые числа представляют скорости передачи данных входного порта. MuxCard
класс наследовал методы int32
класс, который упрощает реализацию этого подкласса. Например, индексация числового массива и арифметические операции работают над MuxCard
объекты, потому что класс наследовал эти операции от int32
класс.
Вот определение MuxCard
класс. Заметьте, что уровни входного порта инициализируют int32
фрагмент класса.
classdef MuxCard < int32 properties InPutNames OutPutName end properties (Dependent = true) OutPutRate end methods function obj = MuxCard(inptnames, inptrates, outpname) obj = obj@int32(inptrates); obj.InPutNames = inptnames; obj.OutPutName = outpname; end function x = get.OutPutRate(obj) x = sum(obj); end function x = subsref(card, s) if strcmp(s(1).type,'.') base = subsref@int32(card, s(1)); if isscalar(s) x = base; else x = subsref(base, s(2:end)); end else x = subsref(int32(card), s); end end end end
Конструктор берет три аргумента:
inptnames
— Массив ячеек имен входного порта
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'
Оператор индексации генерирует индекс логического массива:
omx == 12
ans = 0 1 1 0
Индексация MuxCard
доступы к объекту int32
вектор уровней входного порта:
omx(1:2)
ans = 3 12
OutPutRate
свойство получает использование метода доступа sum
суммировать уровни выходного порта:
omx.OutPutRate
ans = 75