演化一个类#
下面以如何表示“日期”这个概念展开讨论如何演化一个类。
结构和函数#
可以使用结构表示“日期”:
struct Date {
int y; // 年
int m; // 月
int d; // 日
};
Date today; // 命名对象
today
@0x7f69c9cfe028
可以使用 date
对象:
today.y = 2022;
today.m = 12;
today.d = 27;
today
对象可以表示为:
stateDiagram-v2
state today {
y --> 2022
m --> 12
d --> 27
}
辅助函数#
为了操作一个类对象,需要定义一系列辅助函数。
比如,检查用户输入的日期是否格式正确,如何获得日期的后面的日期?
void init_day(Date& dd, int y, int m, int d)
{
// 检查 (y,m,d) 是否合法
// 如果是的话,用其来初始化 dd
dd.y = y;
dd.m = m;
dd.d = d;
}
void add_day(Date& dd, int n)
{
// 为 日期 dd 添加 n 天
dd.d += n;
}
示例:
Date today;
init_day(today, 2021, 12, 1); // 检查错误的行为,当下只能人工检查
add_day(today, 5);