Классы перечисления могут задать свойства для хранения значений данных. Представители перечисления представляют определенные значения для этих свойств, которые MATLAB® присваивает в конструкторе классов. Для получения информации об определении классов перечисления смотрите Задать классы перечисления.
Примечание
Классы перечисления, которые подклассируют встроенные числовые или логические классы, не могут определять или наследовать свойства. Для получения дополнительной информации об этом виде класса перечисления смотрите Перечисления, выведенные из встроенных классов.
Задайте свойства в классе перечисления, если вы хотите связать определенные данные с представителями перечисления, но не должны наследовать арифметику, упорядоченное расположение или другие операции, которые MATLAB задает для определенных встроенных классов.
Задайте класс перечисления, чтобы представлять значения RGB цветов в наборе цветов. The Colors
класс задает имена для цветов, каждый из которых использует значения RGB в качестве аргументов для конструктора классов:
classdef Colors properties R = 0 G = 0 B = 0 end methods function c = Colors(r, g, b) c.R = r; c.G = g; c.B = b; end end enumeration Blueish (18/255,104/255,179/255) Reddish (237/255,36/255,38/255) Greenish (155/255,190/255,61/255) Purplish (123/255,45/255,116/255) Yellowish (1,199/255,0) LightBlue (77/255,190/255,238/255) end end
Вы можете получить доступ к значениям свойств через представителя перечисления:
Colors.Reddish.R
ans = 0.9294
Предположим, что вы хотите создать график с новым оттенком красного цвета с именем Reddish
:
a = Colors.Reddish; [a.R,a.G,a.B]
ans = 0.9294 0.1412 0.1490
Используйте эти значения путем доступа к свойствам представителя перечисления. Для примера, myPlot
функция принимает Colors
Представитель перечисления как входной параметр. Функция обращается к значениям RGB, определяющим цвет из значений свойств.
function h = myPlot(x,y,LineColor) h = line('XData',x,'YData',y); r = LineColor.R; g = LineColor.G; b = LineColor.B; h.Color = [r g b]; end
Создать график с помощью красноватой цветовой линии:
h = myPlot(1:10,1:10,Colors.Reddish);
The Colors
класс инкапсулирует определения стандартного набора цветов. Вы можете изменить определение классов перечисления цветов и не влиять на функции, которые используют перечисления.
The Cars
класс определяет категории, используемые для инвентаризации автомобилей. The Cars
класс выводится из CarPainter
класс, который происходит от handle
. Абстрактная CarPainter
класс задает paint
метод, который изменяет Color
свойство, когда автомобиль окрашен в другой цвет.
The Cars
класс использует Colors
представители перечисления для задания конечного набора доступных цветов. Точное определение любого заданного цвета может измениться независимо от Cars
класс.
classdef Cars < CarPainter enumeration Hybrid (2,'Manual',55,Colors.Reddish) Compact(4,'Manual',32,Colors.Greenish) MiniVan(6,'Automatic',24,Colors.Blueish) SUV (8,'Automatic',12,Colors.Yellowish) end properties (SetAccess = private) Cylinders Transmission MPG Color end methods function obj = Cars(cyl,trans,mpg,colr) obj.Cylinders = cyl; obj.Transmission = trans; obj.MPG = mpg; obj.Color = colr; end function paint(obj,colorobj) if isa(colorobj,'Colors') obj.Color = colorobj; else [~,cls] = enumeration('Colors'); disp('Not an available color') disp(cls) end end end end
The CarPainter
класс требует, чтобы его подклассы определяли метод, называемый paint
:
classdef CarPainter < handle methods (Abstract) paint(carobj,colorobj) end end
Задайте образец Cars
класс:
c1 = Cars.Compact;
Цвет этого автомобиля Greenish
, как определено в Colors.Greenish
перечисление:
c1.Color
ans = Greenish
Используйте paint
метод изменения цвета автомобиля:
c1.paint(Colors.Reddish) c1.Color
ans = Reddish