请围绕“企业应用系统的数据持久层架构设计”论题,依次从以下三方面进行论述。 1.概要叙述你参与分析和设计的企业应用系统开发项目以及你所担任的主要工作。 2.分析在企业应用系统的数据持久层架构设计中有哪些数据访问模式,并详细阐述每种数据访问模式的主要内容。 3.数据持久层架构设计的好坏决定着应用程序性能的优劣,请结合实际说明在数据持久层架构设计中需要考虑哪些问题。
关于模块耦合说法不正确的是()。
A.两模块间相互传递的信息是数据,联系是一种数据耦合。数据耦合联系简单,耦合程度低,模块的独立性强,模块的可修改性和可维护性高,是一种较为理想的耦合形式
B.两个模块之间,除了传递数据信息外,还传递控制信息,是控制耦合。这种耦合对系统的影响比较大,它直接影响到接收该控制信号模块的内部运行。一般来说,控制耦合出现在模块的中下层
C.当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共.耦合。公共耦合可以是全程变量、内存的公共覆盖区、存储介质中的文件等
D.一个模块不经调用直接使用或修改另一个模块中的数据,则这种模块之间的连接关系为内容耦合。内容耦合使得模块的独立性、系统的可修改性和可维护性最差,是一种病态联结,因此,在设计时必须避免这种模块耦合
本题使用ATTEND.RAW中的数据。
(i)求出变量atndrte,pricGPA和ACT的最小值、最大值和平均值。
(ii)估计模型atndrte=β0+β1pricGPA+β2ACT+u,并以方程的形式写出结论。对截距做出解释。它是否有一个有用的含义。
(iii)讨论估计的斜率系数。有没有什么令人吃惊之处?
(iv)如果priGPA=3.65和ACT=20,预计atndrte是多少?你对这个结论做何解释?样本中有没有一些学生具有这些解释变量的值?
(v)如果学生A具有priGPA=3.1和ACT=21,而学生B具有priGPA=2.1和ACT=26,他们在出勤率上的预期差异是多少?
●试题四
阅读下列说明和HTML文本,分析其中嵌入的JavaScript脚本,将应填入(n)处的语句写在答题纸的对应栏内。
[说明]
在表单的多行文本域中显示打字效果,即先显示一个光标,再显示一个字,然后循环显示。
【HTML文本】
<html>
<!省略部分为HTML文本框>
<script. language="JavaScript">//JavaScript区域开始标识
vat m=0;//定义变量m,并赋初值0
function tl(){//声明一个数组,并对其进行初始化
m= (1) ;
for(i=0;i<m;i++)
(2) ;
}
tl=mew tl(
"能熟练使用一种网络操作系统、一种浏览器软件和一种电子邮件收发与管理软件",
"能熟练使用一种网页制作软件制作一般的网页",
"能熟练使用HTML,语言和JavaScript语言制作一般的网页",
);//定义对象
var x=0;pos=0;//定义变量并赋初值
vavl=tl[o].length;//定义变量1,并将对象t1数组元素的长度值赋给变量1
function tt(){
document.form.tf.value=tl[x].subswing(0,pos)+"-";
//将数组tl中元素从0到“pos”的值显示出来。
“form”是表单的名,“tl”是多行文本输入域的名。
If((3) ){//如果数组tl中一个元素显示完毕,则显示下一个,否则继续显示
(4) ;
setTimeout("tt()",400);//设置定时器,值越小速度越快
if(x==m{//如果数组d中所有元素均显示完毕,则从头显示,否则继续显示
(5) ;
1=tl[x].1ength:
}
else{
setTimeout("tt()",400);
}
}
</script>
<body>
<form. name=form>
<textarea name=tf rows=3 cols=38></textarea>
</form>
………
<! 省略部分为HTML文本框 >
……
</html>
A.代码审查是代码检查的一种,是由程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析的过程
B.软件测试的对象不仅仅是程序,文档、数据和规程都是软件测试的对象
C.白盒测试是通过对程序内部结构的分析、检测来寻找问题的测试方法
D.单元测试是针对软件设计的最小单位——程序模块进行正确性检验的测试工作,它通常需要开发辅助的桩模块作为主程序调用被测模块来完成测试
阅读以下说明,Java代码将应填入(n)处的字句写在对应栏内。
【说明】
链表和栈对象的共同特征是:在数据上执行的操作与在每个对象中实体存储的基本类型无关。例如,一个栈存储实体后,只要保证最后存储的项最先用,最先存储的项最后用,则栈的操作可以从链表的操作中派生得到。程序6-1实现了链表的操作,程序6-2实现了栈操作。
import java.io.*;
class Node //定义结点
{ private String m_content;
private Node m_next;
Node(String str)
{ m_content=str;
m_next=null; }
Node(String str,Node next)
{ m_content=str;
m_next=next; }
String getData() //获取结点数据域
{ return m_content;}
void setNext(Node next] //设置下一个结点值
{ m_next=next; }
Node getNext() //返回下一个结点
{ return m_next; )
}
【程序6-1】
class List
{ Node Head;
List()
{ Head=null; }
void insert(String str) //将数据str的结点插入在整个链表前面
{ if(Head==null)
Head=new Node(str);
else
(1)
}
void append(String str) //将数据str的结点插入在整个链表尾部
{ Node tempnode=Head;
it(tempnode==null)
Heed=new Node(str);
else
{ white(tempnode.getNext()!=null)
(2)
(3) }
}
String get() //移出链表第一个结点,并返回该结点的数据域
{ Srting temp=new String();
if(Head==null)
{ System.out.println("Errow! from empty list!")
System.exit(0); }
else
{ temp=Head.getData();
(4) }
return temp;
}
}
【程序6-2】
class Stack extends List
{ void push(String str) //进栈
{ (5) }
String pop() //出栈
{ return get();}
}
A.this关键字可以出现在任何方法中
B.this关键字出现在成员方法中,代表的是调用这个方法的对象
C.this关键字相当于一个引用,可以通过它调用成员方法与属性
D.this关键字可以解决成员变量与局部变量重名的问题
●软件语言是用于书写计算机软件的语言。它主要包括需求定义语言、 (45) 、 (46) 、程序设计语言以及 (47) 等,适用于软件开发的各个阶段。程序设计语言的基本成分是数据成分、运算成分、控制成分以及 (48) 。程序设计语言有多种分类法,例如,按成分性质分,有顺序语言,并发语言,并行语言, (49) 。
(45) A.面向对象语言
B.功能性语言
C.数据定义语言
D.函数式语言
(46) A.设计性语言
B.申述式语言
C.命令式语言
D.结构性语言
(47) A.逻辑式语言
B.非过程语言
C.过程语言
D.文档语言
(48) A.语句成分
B.变量成分
C.对象成分
D.传输成分
(49) A.面向对象语言
B.分布语言
C.交互式语言
D.高级语言
●试题八
阅读以下说明和C++代码,将解答写入答题纸的对应栏内。
【说明】
源程序文件vectorClass.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整,并给出输出结果。
1.补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。
2.完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员b和a。
3.完成类vector的友元函数friend double Multiply(vector &x,vector &y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件vectorClass.cpp清单如下:
#include <iostream.h>
class vector
{
int a;
int b;
public:
vector((1) ): (2)
{
}
void input(int x,int y)
{ (3)
}
void output()
{
cout<<'('<<a<<','<<b<<")"<<endl;
}
friend double Multiply(vector &x,vector &y);
};
double Multiply(vector &x,vector &y)
{
double c;
(4)
return c;
}
void main()
{
vector x(10,20),y;
double d;
y.input(2,3);
d=Multiply(x,y);
cout<<d<<endl;
}
程序输出结果是: (5) 。
读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知某类库开发商捉供了一套类库,类库中定义了Application类和Document类,它们之间的关系如下图所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。
当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,例如上图中的类MyApplication和类MyDocument,并分别实现Application和 Document类中的某些方法。
已知Application类中的openDocument方法采用了模板方法(Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:
1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;
2.创建文档对象;
3.通过文档对象打开文档;
4.通过文档对象读取文档信息;
5.将文档对象加入到Application的文档对象集合中。
【Java代码】
abstract class Document{
public void save(){/*存储文档数据,此处代码省略*/ )
public void open(String docName){ /*打开文档,此处代码省略*/)
public void close(){ /*关闭文档,此处代码省略*/)
public abstract void read(String docName);
};
abstract class Appplication{
private Vector<(1)> docs; /*文档对象集合*/
public boolean canOpenDocument(String docName){
/*判断是否可以打开指定文档,返回真值时表示可以打开,
返回假值表示不可打开,此处代码省略*/
}
public void addDocument(Document aDocument){
/*将文档对象添加到文档对象集合中*/
docs.add((2));
}
public abstract Document doCreateDocument();/*创建一个文档对象*/
public void openDocument(String docName){/*打开文档*/
if ((3)) {
System.out.println(“文档无法打开!”);
return;
}
(4) adoc=(5);
(6);
(7);
(8);
}
};