2023/11/13周一总结

软件设计                  石家庄铁道大学信息学院

 

实验7:单例模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解单例模式的动机,掌握该模式的结构;

2、能够利用单列模式解决实际问题

 

[实验任务一]:学号的单一

仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

1:类图:

 

2:源代码:

#include<iostream>

#include<string>

using namespace std;

 

class StudentNo

{

private:

 

static StudentNo  *student;

string no;

StudentNo() {};

 

 

void setStudentNo(string no1)

{

no = no1;

}

 

public:

 

static StudentNo  * getStudent() {

if (student == NULL) {

cout << "第一次分配学号, 分配新学号!" << endl;

student = new StudentNo();

student->setStudentNo("20194023");

}

else {

cout << "学号已存在,获取旧学号!" << endl;

}

return student;

}

 

string getStudentNo() {

return no;

}

 

};

 

StudentNo * StudentNo::student = NULL;  //初始化 student

 

int main() {

StudentNo * no1, *no2;

no1 = StudentNo::getStudent();

no2 = StudentNo::getStudent();

cout << "学号是否一致:" << (no1 == no2) << endl;

 

string str1, str2;

str1 = no1->getStudentNo();

str2 = no2->getStudentNo();

cout << "第一次学号" << str1 << endl;

cout << "第二次学号" << str2 << endl;

cout << "内容是否相等" << (!str1.compare(str2)) << endl;   //str1 == str2 时值为0

cout << "是否相同对象" << (str1 == str2) << endl;

}

3:输出:

 

posted @   liu_ru_jun  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示