Репрезентативный код класса

Класс вычисляет площадь

The CircleArea класс показывает синтаксис типового определения класса. Этот класс хранит значение радиуса круга и вычисляет площадь круга, когда вы запрашиваете эту информацию. CircleArea также реализует методы для графика, отображения и создания объектов класса.

Как использовать CircleArea класс, скопируйте этот код в файл с именем CircleArea.m и сохраните этот файл в папке, находящейся в MATLAB® путь.

classdef CircleArea
   properties
      Radius
   end
   properties (Constant)
      P = pi
   end
   properties (Dependent)
      Area
   end
   methods
      function obj = CircleArea(r)
         if nargin > 0
            obj.Radius = r;
         end
      end
      function val = get.Area(obj)
         val = obj.P*obj.Radius^2;
      end
      function obj = set.Radius(obj,val)
         if val < 0
            error('Radius must be positive')
         end
         obj.Radius = val;
      end
      function plot(obj)
         r = obj.Radius;
         d = r*2;
         pos = [0 0 d d];
         curv = [1 1];
         rectangle('Position',pos,'Curvature',curv,...
            'FaceColor',[.9 .9 .9])
         line([0,r],[r,r])
         text(r/2,r+.5,['r = ',num2str(r)])
         title(['Area = ',num2str(obj.Area)])
         axis equal
      end
      function disp(obj)
         rad = obj.Radius;
         disp(['Circle with radius: ',num2str(rad)])
      end
   end
   methods (Static)
      function obj = createObj
         prompt = {'Enter the Radius'};
         dlgTitle = 'Radius';
         rad = inputdlg(prompt,dlgTitle);
         r = str2double(rad{:});
         obj = CircleArea(r);
      end
   end
end

Используйте класс CircleArea

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

ca = CircleArea.createObj

Добавьте значение для радиуса и нажатия кнопки OK.

Запросите область заданного круга:

ca.Area
ans =

  164.2202

Вызовите перегруженный метод графика:

plot(ca)

Описание определения класса

Код определения класса начинается с classdef ключевое слово, за которым следует имя класса:

classdef CircleArea

Определите Radius свойство в properties- end ключевые слова. Используйте атрибуты по умолчанию:

   properties
      Radius
   end

Определите P свойство как Constant (Задайте свойства класса с постоянными значениями). Вызовите pi функция только один раз, когда класс инициализирован.

   properties (Constant)
      P = pi
   end

Определите Area свойство как Dependent потому что его значение зависит от Radius свойство.

   properties (Dependent)
      Area
   end
methods % Begin defining methods

The CircleArea метод конструктора классов имеет то же имя, что и класс, и принимает значение радиуса окружности в качестве аргумента. Этот метод также не допускает входных параметров. (Методы конструктора классов)

      function obj = CircleArea(r)
         if nargin > 0
            obj.Radius = r;
         else
            obj.Radius = 0;
         end
      end

Потому что Area свойство Dependent, оно не хранит свое значение. The get.Area метод вычисляет значение Area свойство при каждом запросе. (Установите и получите методы для зависимых свойств)

      function val = get.Area(obj)
         val = obj.P*obj.Radius^2;
      end

The set.Radius метод проверяет значение, присвоенное Radius свойство, чтобы убедиться, что значение не меньше нуля. MATLAB вызывает set.Radius для назначения значения Radius. (Методы набора свойств.

      function obj = set.Radius(obj,val)
         if val < 0
            error('Radius must be positive')
         end
         obj.Radius = val;
      end

The CircleArea класс перегружает plot функция. The plot метод использует rectangle функция для создания окружности и рисования радиуса. (Функции перегрузки в определениях классов

      function plot(obj)
         r = obj.Radius;
         d = r*2;
         pos = [0 0 d d];
         curv = [1 1];
         rectangle('Position',pos,'Curvature',curv)
         line([0,r],[r,r])
         text(r/2,r+.5,['r = ',num2str(r)])
         axis equal
      end

The CircleArea класс перегружает disp функция для изменения способа отображения объектов в командном окне MATLAB.

      function disp(obj)
         rad = obj.Radius;
         disp(['Circle with radius: ',num2str(rad)])
      end
end
methods (Static)

The CircleArea класс задает Static метод, который использует диалоговое окно для создания объекта. (Статические методы

      function obj = createObj
         prompt = {'Enter the Radius'};
         dlgTitle = 'Radius';
         rad = inputdlg(prompt,dlgTitle);
         r = str2double(rad{:});
         obj = CircleArea(r);
      end

Конец Static methods блок и конец classdef блок.

   end
end