Используя класс, чтобы отобразить графику

Класс вычисляет область

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

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

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конец ключевые слова. Используйте атрибуты по умолчанию:

   properties
      Radius
   end

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

   properties (Constant)
      P = pi
   end

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

   properties (Dependent)
      Area
   end
methods % Begin defining methods

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

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

Поскольку Area свойством является Dependent, класс не хранит свое значение. get.Area метод вычисляет значение Area свойство каждый раз, когда это запрошено. Установка и методы get для Dependent Properties,

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

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

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

CircleArea класс перегружается plot функция. 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

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

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

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