信管网案例分析

导航

2021年下半年软件设计师《案例分析》真题模拟试题(4)

2021年10月15日来源:信管网 作者:cnitpm

  • 试题一:阅读下列说明和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

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

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

分享至:
请使用浏览器的分享功能,把好文章分享给更多的人

信管网 - 信息系统项目管理专业网站

下载APP-在线学习

培训课程

0元畅享

考试题库

免费资料

APP下载