클래스를 사용하여 그래픽스 표시하기
면적 계산 클래스
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 메서드를 호출합니다.
plot(ca)
클래스 정의에 대한 설명
클래스 정의 코드는 |
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; else obj.Radius = 0; 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) line([0,r],[r,r]) text(r/2,r+.5,['r = ',num2str(r)]) 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 |