Этот пример реализует класс, чтобы представлять плату оптического мультиплекса. Эти платы обычно имеют несколько портов входа и выхода порт. The MuxCard
класс представляет порты по именам портов и скоростям передачи данных портов. Выходная скорость платы мультиплексора является суммой скорости передачи данных входного порта.
The MuxCard
класс выводится из int32
класс, поскольку 32-битные целые числа представляют скорости передачи данных входного порта. The 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
The OutPutRate
свойство get access method использует sum
для суммирования скорости выхода портов:
omx.OutPutRate
ans = 75