Этот пример показывает, как сгенерировать код для класса значения MATLAB® и затем просмотреть сгенерированный код в отчете генерации кода.
В перезаписываемой папке создайте класс значения MATLAB, Shape
. Сохраните код как Shape.m
.
classdef Shape % SHAPE Create a shape at coordinates % centerX and centerY properties centerX; centerY; end properties (Dependent = true) area; end methods function out = get.area(obj) out = obj.getarea(); end function obj = Shape(centerX,centerY) obj.centerX = centerX; obj.centerY = centerY; end end methods(Abstract = true) getarea(obj); end methods(Static) function d = distanceBetweenShapes(shape1,shape2) xDist = abs(shape1.centerX - shape2.centerX); yDist = abs(shape1.centerY - shape2.centerY); d = sqrt(xDist^2 + yDist^2); end end end
В той же папке создайте класс, Square
, который является подклассом Shape
. Сохраните код как Square.m
.
classdef Square < Shape % Create a Square at coordinates center X and center Y % with sides of length of side properties side; end methods function obj = Square(side,centerX,centerY) obj@Shape(centerX,centerY); obj.side = side; end function Area = getarea(obj) Area = obj.side^2; end end end
В той же папке создайте класс, Rhombus
, который является подклассом Shape
. Сохраните код как Rhombus.m
.
classdef Rhombus < Shape properties diag1; diag2; end methods function obj = Rhombus(diag1,diag2,centerX,centerY) obj@Shape(centerX,centerY); obj.diag1 = diag1; obj.diag2 = diag2; end function Area = getarea(obj) Area = 0.5*obj.diag1*obj.diag2; end end end
Запишите функцию, которая использует этот класс.
function [TotalArea, Distance] = use_shape %#codegen s = Square(2,1,2); r = Rhombus(3,4,7,10); TotalArea = s.area + r.area; Distance = Shape.distanceBetweenShapes(s,r);
Сгенерируйте статическую библиотеку для use_shape
и сгенерируйте отчет генерации кода.
codegen -config:lib -report use_shape
codegen
генерирует статическую библиотеку C с именем по умолчанию, use_shape
и вспомогательными файлами в папке по умолчанию, codegen/lib/use_shape
.
Щелкните по ссылке View report.
Чтобы видеть определение класса Rhombus
, на панели MATLAB Source, под Rhombus.m
, нажимают Rhombus
. Конструктор класса Rhombus
подсвечен.
Кликните по вкладке Variables. Вы видите, что переменная obj
является объектом класса Rhombus
. Чтобы видеть его свойства, расширьте obj
.
В панели MATLAB Source нажмите Call Tree.
Представление Call Tree показывает, что use_shape
вызывает конструктора Rhombus
и что конструктор Rhombus
вызывает конструктора Shape
.
В панели кода, в конструкторе класса Rhombus
, указателе перемещения к этой строке:
obj@Shape(centerX,centerY)
Rhombus
вызывает метод Shape
основного класса Shape
. Чтобы просмотреть определение класса Shape
, в obj@Shape
, дважды кликают Shape
.