Представительный код класса

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

Класс 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 (Define Class Properties с Постоянными значениями). Вызовите функцию 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
Была ли эта тема полезной?