MATLAB 값 클래스에 대한 코드 생성하기
이 예제에서는 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
동일한 폴더에서
Shape
의 서브클래스인Square
클래스를 생성합니다. 코드를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
동일한 폴더에서
Shape
의 서브클래스인Rhombus
클래스를 생성합니다. 코드를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
은 디폴트 폴더codegen/lib/use_shape
에use_shape
(디폴트 이름) C 정적 라이브러리와 지원 파일을 생성합니다.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
를 더블 클릭합니다.