package studentsystem
import std.convert.*
/**
* 课程性质 枚举类型
*/
public enum Electivity <: ToString {
| Compulsory // 必修课
| Elective // 选修课
// ToString 接口定义的转换字符串的函数
public func toString() {
match (this) {
case Compulsory => "必修课"
case Elective => "选修课"
}
}
}
/**
* 课程 类
*/
public class Course <: ToString {
/**
* 主构造函数
*
* @param id 课程编号
* @param name 课程名称
* @param credit 课程学分
* @param electivity 课程性质(默认为必修课)
*/
public Course(
private let id: UInt32,
private var name: String,
private var credit: Float16,
private var electivity!: Electivity = Electivity.Compulsory
) {}
// 成员属性 propId(只读)
prop propId: UInt32 {
get() {
id
}
}
// 成员属性 propName(可读写)
mut prop propName: String {
get() {
name
}
set(name) {
this.name = name
}
}
// 成员属性 propCredit(可读写)
mut prop propCredit: Float16 {
get() {
credit
}
set(credit) {
this.credit = credit
}
}
// 成员属性 propElectivity(可读写)
mut prop propElectivity: Electivity {
get() {
electivity
}
set(electivity) {
this.electivity = electivity
}
}
/**
* 输出课程信息(ToString 接口定义的转换字符串的函数)
*/
public func toString() {
"课程: ${id} ${name} 性质: ${electivity} 学分: ${credit.format(".1")}"
}
}