专业软件设计师网站|培训机构|服务商(加客服微信:cnitpm或QQ:800184589进软件设计师学霸群)

软题库 培训课程
当前位置:信管网 >> 软件设计师 >> 案例分析 >> 文章内容
2021年下半年软件设计师《案例分析》真题模拟试题(4)
来源:信管网 2021年10月15日 【所有评论 分享到微信
  • 试题一:阅读下列说明和c++代码,将应填入 (n)处的字句写在答题纸的对应栏内.
    【说明】
    某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。
    现在采用观察者(observer)模式来开发该系统。观察者模式的类图如图5-1所示。

    【c++代码】
    #include
    #include
    using namespace std;
    class observer {
    public:
    virtual void update(float temp, float humidity, float cleanness)=0;
    };
    class subject {
    public:
    virtual void registerobserver(observer* o) = 0; //注册对主题感兴趣的观察者
    virtual void removeobserver(observer* o) = 0; //删除观察者
    virtual void notifyobservers() = 0;//当主题发生变化时通知观察者
    };
    class environmentdata : public     (1)     {
    private:
    vector observers;
    float temperature, humidity, cleanness;
    public:
    void registerobserver(observer* o) { observers.push_back(o); }
    void removeobserver(observer* o) { /* 代码省略 */ }
    void notifyobservers() {
    for(vector::const_iterator it = observers.begin();            it != observers.end(); it++)
    {       (2)    ; }
    }
    void measurementschanged() {     (3)    ; }
    void setmeasurements(float temperature, float humidity, float cleanness) {
    this->temperature = temperature;
    this->humidity = humidity;
    this->cleanness = cleanness;
    (4)    ;
    }
    };
    class currentconditionsdisplay : public     (5)    {
    private:
    float temperature, humidity, cleanness;
    subject* envdata;
    public:
    currentconditionsdisplay(subject* envdata) {
    this->envdata = envdata;
    (6)   ;
    }
    void update(float temperature, float humidity, float cleanness)  {this->temperature = temperature;
    this->humidity = humidity;
    this->cleanness = cleanness;
    display();
    }
    void display() { /* 代码省略 */ }
    };
    int main() {
    environmentdata* envdata = new environmentdata();
    currentconditionsdisplay* currentdisplay = new currentconditionsdisplay(envdata);
    envdata->setmeasurements(80, 65, 30.4f);
    return 0;
    }

    查看答案

    参考答案:

    参考解析:www.cnitpm.com/st/3814319684.html

    信管网考友试题答案分享:

    信管网wangly:
    1) subject 2) observers.get(it).update(temperature, humidity, cleanness) 3) this.notifyobservers() 4) this.measurementschanged() 5) observer 6) this.envdata.registerobserver(this) 7)

  • 试题二:阅读下列说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以sql server和access两种数据库以及系统中的数据库表department为例,其类图如图6-1所示。

    图6-1 类图
    【java代码】
    import java.util.*;
    class department{/*代码省略*/}

    interface idepartment{
    (1)    ;
    (2)    ;
    }

    class sqlserverdepartment (3) {
    public voidinsert(department department){
    system.out.println(”insert a record into department in sql server!");
    ∥其余代码省略
    }
    public department getdepartment(int id){
    /*代码省略*/
    }
    }

    classaccessdepartment(4) {
    public void insert(department department){
    system.out.println("insert a record into department in access!”);
    ∥其余代码省略
    }
    public department getdepartment(int id){
    /*代码省略*/
    }
    }
    (5)  {
    (6)   ;
    }

    class sqlserverfactory implements ifactory{
    public idepartment createdepartment(){
    retum new sqlserverdepartment();
    }
    ∥其余代码省略
    }
    class accessfactory implements ifactory{
    public idepartment createdepartment(){
    return new accessdepartment();
    }
    ∥其余代码省略
    }

    查看答案

    参考答案:

    参考解析:www.cnitpm.com/st/3812628058.html

    信管网考友试题答案分享:

扫码关注公众号

温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

相关内容

发表评论  查看完整评论  

推荐文章