首先考虑工厂系统。我创建了一个Date类来保存人的生日和工作的初始日期 我有人类,其中包含有关人名,姓氏等的信息。 最后有一个部门类,我想初始化有关人员和部门ID和部门名称(姓名,姓氏,生日,工作日期的初始)的所有信息。我在部门头文件中的Person类型中创建了一个数组。我的问题是我如何编写deparment构造来初始化所有属性。姓名,姓氏没有问题......但是日期类需要3个参数。如何将参数与Department类中的其他参数一起发送?
class Date {
int gun,ay,yil;
public:
int getDay()const;
int getMonth()const;
int getYear()const;
void set_Day(int);
void setMonth(int);
void setYear(int);
Date();
Date(int,int,int);
virtual ~Date();
}
class Deparment
{
int bolumId;
string bolumName;
static const int maxkisi = 10;
Person *PersonArray = new Person[maxkisi];
static int counter;
Date datex,datey;
public:
int getBolumId()const;
string getBolumName()const;
int getTemelMaas()const;
Person getPersonArray()const;
void setBolumId(int);
void setBolumName(string);
void setKisiarray(string,string,int,int);
Bolum();
Bolum(string,string,int,Date,Date,int,string);
virtual ~Bolum();
}
答案 0 :(得分:1)
有两种方法可以实现:
Date
对象,或这两种方法中的每一种都有其优点和缺点:
第一种方法隐藏了Date
来自调用者的参数,因此调用者可以以他希望的任何方式构造Date
:
Person(const string& _name, const string& _surname, const Date& _dob)
: name(_name), surname(_surname), dob(_dob) {
}
第二种方法可让您隐藏来自调用方的Date
,如果您的类不将Date
公开为外部可见属性,那么这是很好的。换句话说,您可以隐藏您的班级使用Date
的事实,如果您将来需要这样做,可以让您从该实施中切换。
Person::Person(const string& _name, const string& _surname, int dd, int mm, int yy)
: name(_name), surname(_surname), dob(Date(mm, dd, yy) {
}