C++ 在C++;模块化编程,如何组装.cpp和.h文件?

C++ 在C++;模块化编程,如何组装.cpp和.h文件?,c++,modular-design,C++,Modular Design,我目前正在为学校进行一个大型项目,该项目分为6个里程碑。在第一个里程碑中,我得到了要添加到文件中的代码,但我不知道如何对它们进行分类。模块化编程中分发代码的一般惯例是什么 这就是我得到的: 里程碑1:日期类 要启动此项目,请从课程存储库克隆/下载里程碑1,并对Date类缺少的部分进行编码 Date类封装了一个日期,该日期可由std::istream读取,并可由std::ostream打印,读取和写入时使用以下格式:YYYY/MM/DD,其中YYYY指的是该年的四位数值,MM表示月份的两位数值,D

我目前正在为学校进行一个大型项目,该项目分为6个里程碑。在第一个里程碑中,我得到了要添加到文件中的代码,但我不知道如何对它们进行分类。模块化编程中分发代码的一般惯例是什么

这就是我得到的:

里程碑1:日期类

要启动此项目,请从课程存储库克隆/下载里程碑1,并对Date类缺少的部分进行编码

Date类封装了一个日期,该日期可由
std::istream
读取,并可由
std::ostream
打印,读取和写入时使用以下格式:YYYY/MM/DD,其中YYYY指的是该年的四位数值,MM表示月份的两位数值,DD表示月份中某一天的两位数值

使用以下规范完成
Date
类的实现:

预定义常数:

预先定义可接受年份的限制:

const int min_year=2000
const int max_year=2030

私人会员:

数据:

年份–最小年份和最大年份之间的四位整数

一年中的月份–值介于1和12之间(含1和12)

当月的日期–介于1和当月天数之间的值(请参见

mday(int,int)
下面描述的成员函数–注意二月有29个 闰年的几天

用于将当前对象中存储的日期与另一个日期对象中存储的日期进行比较的比较器值。构造函数设置此值,公共运算符使用它来比较两个日期。(如果日期1的值大于日期2的值,则日期1比日期2更近;也就是说,日期1在日期2之后)

客户端可以引用的错误状态,以确定对象是否具有有效日期,如果没有,则确定日期的哪一部分出错。可能的错误状态是在日期类标题中定义为宏的整数值:

无错误0
--无错误-日期有效

CIN\u失败1
--istream在输入信息时失败

年份\u错误2
--年份值无效

MON\u错误3
--月份值无效

DAY\u错误4
——DAY值无效

成员功能:

int-mdays(int-month,int-year)const(此查询已被删除)
实施和提供)。此查询返回
年的
月的天数

void errCode(int errorCode)
此函数用于将错误状态变量设置为上面列出的值之一

公众成员:

建造商:

无参数(默认)构造函数:将对象初始化为安全的空状态,并将错误状态设置为
No\u error
。使用0000/00/00作为安全空状态的日期,并将比较器值设置为0

三参数构造函数:在参数中接受年、月和日的整数值。此构造函数检查每个数字是否在范围内,顺序为年、月和日。如果任何数字不在范围内,此函数将错误状态设置为相应的错误代码,并停止进一步验证

(使用mday(int,int)成员函数获取接收年份的接收月份天数。月份值可以介于1和12之间(包括1和12)。如果接收到的所有数据都有效,此构造函数将存储当前对象中接收到的值,计算比较器值,并将错误状态设置为无错误。如果接收到的任何数据无效,则 构造函数将对象初始化为安全的空状态,将比较器值设置为0,并将错误状态设置为无错误

使用以下公式设置有效日期的比较器值: =年*372+月*13+天

操作员

bool运算符==(常量日期和rhs)常量

bool操作符=(施工日期和右侧)施工

bool操作符(const Date&rhs)const

bool操作符=(const-Date&rhs)const

如果两个对象不是空的,则这些比较运算符返回将当前对象作为左侧操作数与另一个日期对象作为右侧操作数进行比较的结果。如果其中一个或两个为空,则这些运算符返回false

例如,如果当前对象中存储的日期早于rhs中存储的日期,则运算符<返回true;否则,此运算符返回false

查询和修改器

int errCode()常量
此查询将错误状态作为错误代码值返回

boolbad()常量
如果错误状态不是NO_error,则此查询返回true

std::istream&read(std::istream&istr)
此函数以以下格式从控制台读取日期:YYYY?MM?DD(例如2016/03/24或2016-03-24)。此函数不提示用户。如果istr在任何时候失败,此函数将错误状态设置为CIN_FAILED,并且不清除istr。如果istr失败,对istr.fail()的调用将返回true。如果read()函数成功读取数字,则无论此输入过程的结果如何,此函数都会返回对std::istream对象的引用

std::ostream&write(std::ostream&ost)常量
此查询以以下格式将日期写入std::ostream对象:YYYY/MM/DD,然后返回对std::ostream对象的引用。
Helper functions:operator>此操作符使用std::istream对象从控制台读取日期。使用这些opera中的读写成员函数