MATLAB中的classdef类定义
classdef (Attributes) ClassName < SuperclassNames
properties (Attributes) ... end
methods (Attributes) ... end
events (Attributes) ... end
enumeration ... end
end
使用示例:
% 定义Motor类,继承自ElectricVehicleComponent(父类)
% 表示电动汽车的电机组件,封装电机状态和控制逻辑
classdef Motor < ElectricVehicleComponent
% -------------------- 属性定义 --------------------
% properties块:定义类的属性(成员变量)
properties
% 电机当前速度(单位:km/h),默认值为0
% 可通过motor.CurrentSpeed访问和修改
CurrentSpeed = 0
% 电机速度范围限制(单位:km/h)
% 默认范围:0(停止)到180(最大速度)
SpeedRange = [0, 180]
end
% -------------------- 方法定义 --------------------
% methods块:定义类的实例方法(必须通过对象调用)
methods
% 启动电机方法:设置电机为指定速度
% 输入:
% - motor:类的实例本身(类似Python的self)
% - speed:要设置的速度值(非负实数)
% 输出:
% - 更新后的实例对象(MATLAB需显式返回修改后的对象)
function motor = start(motor,speed)
% 参数验证块(MATLAB R2020b及以后版本)
arguments
motor (1,1) Motor % 必须是Motor类的标量实例
speed (1,1) {mustBeReal, mustBeNonnegative} % 必须是实数且非负
end
% 状态检查:如果电机已在运行(速度大于0),抛出错误
if motor.CurrentSpeed > 0
error("Motor:start:MotorAlreadyRunning",...
"Cannot start a motor that is already running.")
end
% 设置电机速度为指定值
% 注意:此处未检查speed是否超出SpeedRange,需在调用时确保
motor.CurrentSpeed = speed;
end
% 停止电机方法:将电机速度设为0
% 输入:
% - motor:类的实例本身
% 输出:
% - 更新后的实例对象
function motor = stop(motor)
% 状态检查:如果电机已停止(速度为0),抛出错误
if motor.CurrentSpeed == 0
error("Motor:start:MotorNotRunning",...
"Cannot stop a motor that is not running.")
end
% 将电机速度设为0,表示停止运行
motor.CurrentSpeed = 0;
end
end
end
调用上面类的示例:
% 创建实例
myMotor = Motor();
% 启动电机
myMotor = myMotor.start(50); % 设置速度为50km/h
% 停止电机
myMotor = myMotor.stop(); % 速度设为0