exponenta event banner

Код класса представителя

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

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

Добавьте значение радиуса и нажмите «ОК».

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

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

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

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

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

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

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

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