软件设计下午试题 求答
考试完了,没把握啊,水平有限
最后一个题 如下 达人来看看 指正一下
在公文处理系统中,定义了一个公文类OfficeDoc,定义了公文的属性和处理公文的方法。当公文的内容或者状态改变的时候,关注此OfficeDoc类对象的相应的DocExplorer对象要更新自身状态。
一个officeDOC对象能关联一组DocExplorer对象。
当OfficeDoc对象的内容或者状态变化时,所有与之关联的DocExplorer对象都能得到通知,这种应用被称为观察者模式。
下面是C++代码
#include<iostream>
const OBS_MAXNUM=20;
__(1)___;
class DocExplorer{
public:
DocExplorer ((2)*doc);
___(3)___ void update(OfficeDoc *doc)=0;
};
class OfficeDoc {
private:
DocExplorer *myObs[OBS_MAXNUM]
int index;
public:
OfficeDoc(){
index=0;
void attach (DocExplorer *o){
if (index >=OBS_MAXNUM||o== NULL) return;
for (int loop = 0; loop <index; loop++)
if(myObs[loop] == o) return;
myObs[index] = o;
index++;
}
void detach(DocExplorer) *o{
if(o==null) return;
for (int loop = 0;loop<index;loop++{
if(myObs[loop]==o){
if(loop<=index-2) myObs[loop] = myObs[index-1];
myObs[index-1]=NULL;
index--;
break;
}
}
}
private:
void notifyObs() {
for(int loop=0;loop<index;loop++){
myObs[loop]->____(4)____;
}
};
DocExplorer::Docexplorer(OfficeDoc *doc){
doc->______(5)_____;
}
我的答案
1 class OfficeDoc
2 OfficeDoc
3 virtual
4 update(this)
5 attach(this)
如果错了请指点