Классы перечисления могут задать свойства сохранить значения данных. Члены перечисления представляют определенные значения для этих свойств, которые MATLAB® присваивает в конструкторе класса. Для получения информации об определении классов перечисления смотрите, Задают Классы Перечисления.
Классы перечисления, которые разделяют встроенные числовые или логические классы на подклассы, не могут задать или наследовать свойства. Для получения дополнительной информации об этом виде класса перечисления см. Полученные перечисления от Встроенных Классов.
Задайте свойства в классе перечисления, если вы хотите сопоставить определенные данные с членами перечисления, но не должны наследовать арифметику, упорядоченное расположение или другие операции, которые MATLAB задает для определенных встроенных классов.
Задайте класс перечисления, чтобы представлять значения RGB цветов в наборе цветов. 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);
Colors
класс инкапсулирует определения стандартного набора цветов. Можно изменить определение класса перечисления цветов и не влиять на функции, которые используют перечисления.
Cars
класс задает категории, используемые, чтобы инвентаризировать автомобили. Cars
класс выводит из CarPainter
класс, который выводит из handle
. Абстрактный CarPainter
класс задает paint
метод, который изменяет Color
свойство, когда автомобиль окрашен в другой цвет.
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
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