Создайте простой класс

Класс проекта

Основной целью класса является определение объекта, который инкапсулирует данные и операции, выполненные с этими данными. Для примера, BasicClass задает свойство и два метода, которые работают с данными в этом свойстве:

  • Value - Свойство, которое содержит числовые данные, хранящиеся в объекте класса

  • roundOff - Метод, который округляет значение свойства до двух десятичных знаков

  • multiplyBy - Метод, который умножает значение свойства на заданное число

Вот определение BasicClass:

classdef BasicClass
   properties
      Value {mustBeNumeric}
   end
   methods
      function r = roundOff(obj)
         r = round([obj.Value],2);
      end
      function r = multiplyBy(obj,n)
         r = [obj.Value] * n;
      end
   end
end

Для получения сводных данных синтаксиса классов см. classdef.

Чтобы использовать класс:

  • Сохраните определение класса в .m файл с таким же именем, как и класс.

  • Создайте объект класса.

  • Доступ к свойствам для назначения данных.

  • Вызовите методы для выполнения операции с данными.

Создание объекта

Создайте объект класса с использованием имени класса:

a = BasicClass
a = 

  BasicClass with properties:

    Value: []

Первоначально значение свойства пустое.

Свойства доступа

Присвойте значение Value свойство, использующее переменную объекта и точку перед именем свойства:

a.Value = pi/3;

Чтобы вернуть значение свойства, используйте запись через точку без назначения:

a.Value
ans =

    1.0472

Для получения информации о свойствах класса см. раздел «Свойства класса».

Методы вызова

Вызовите roundOff метод для a объектов:

roundOff(a)
ans =

    1.0500

Передайте объект как первый аргумент в метод, который принимает несколько аргументов, как в этом вызове multiplyBy метод:

multiplyBy(a,3)
ans =

    3.1416

Можно также вызвать метод с помощью записи через точку:

a.multiplyBy(3)

Не обязательно передавать объект явным образом как аргумент при использовании записи через точку. Объект используется обозначением слева от имени точки и метода.

Для получения информации о методах классов смотрите Задать методы классов и функции

Добавить конструктор

Классы могут задать специальный метод для создания объектов класса, называемый конструктором. Методы конструктора позволяют вам передать аргументы конструктору, которые можно назначить значениями свойств. The BasicClass Value свойство ограничивает его возможные значения, используя mustBeNumeric функция.

Вот конструктор для BasicClass класс. Когда вы вызываете конструктор с входным параметром, он назначается Value свойство. Если вы вызываете конструктор без входного параметра, Value свойство имеет значение по умолчанию пустое ([]).

methods        
    function obj = BasicClass(val)
        if nargin == 1
            obj.Value = val;
        end
    end
end

Добавив этот конструктор к определению класса, можно создать объект и задать значение свойства за один шаг:

a = BasicClass(pi/3)
a = 

  BasicClass with properties:

    Value: 1.0472

Конструктор может выполнить другие операции, связанные с созданием объектов класса.

Для получения информации о конструкторах см. «Методы конструктора классов»

Методы векторизации

MATLAB® позволяет векторизировать операции. Для примера можно добавить число к вектору:

[1 2 3] + 2
ans =

     3     4     5

MATLAB добавляет номер 2 каждому из элементов массива [1 2 3]. Чтобы векторизировать методы арифметического оператора, заключайте obj.Value ссылка на свойство в скобках.

[obj.Value] + 2

Этот синтаксис позволяет методу работать с массивами объектов. Например, создайте объектный массив с помощью индексированного назначения.

obj(1) = BasicClass(2.7984);
obj(2) = BasicClass(sin(pi/3));
obj(3) = BasicClass(7);

Затем это выражение:

[obj.Value] + 2

Эквивалентно этому выражению:

[obj(1).Value obj(2).Value obj(3).Value] + 2

Потому что roundOff метод векторизирован, может работать с массивами:

roundOff(obj)
ans =

    2.8000    0.8700    7.0000

Функции перегрузки

Классы могут реализовать существующие функциональные возможности, такие как сложение, путем определения метода с таким же именем, как и существующая функция MATLAB. Например, предположим, что вы хотите добавить два BasicClass объекты. Имеет смысл добавить значения Value свойства каждого объекта.

Вот перегруженная версия MATLAB plus функция. Он задает сложение для BasicClass класс как добавление значений свойств:

method
   function r = plus(o1,o2)
      r = [o1.Value] + [o2.Value];
   end
end

Путем реализации метода, называемого plus, можно использовать "+"оператор с объектами BasicClass.

a = BasicClass(pi/3);
b = BasicClass(pi/4);
a + b
ans =

    1.8326

Путем векторизации метода plus можно работать с объектными массивами.

a = BasicClass(pi/3);
b = BasicClass(pi/4);
c = BasicClass(pi/2);
ar = [a b];
ar + c
ans =

    2.6180    2.3562

Связанная информация

Для получения информации о функциях перегрузки смотрите Функции перегрузки в определениях классов.

Для получения информации о перегрузке операторов см. раздел «Перегрузка операторов».

BasicClass Описание кода

Вот BasicClass определение после добавления функций, обсуждаемых в этой теме:

classdef BasicClass
    properties
        Value {mustBeNumeric}
    end
    methods
        function obj = BasicClass(val)
            if nargin == 1
                obj.Value = val;
            end
        end
        function r = roundOff(obj)
            r = round([obj.Value],2);
        end
        function r = multiplyBy(obj,n)
            r = [obj.Value] * n;
        end
        function r = plus(o1,o2)
            r = [o1.Value] + [o2.Value];
        end
    end
end

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте