文档库 最新最全的文档下载
当前位置:文档库 › 面向对象A面向对象习题

面向对象A面向对象习题

面向对象A面向对象习题
面向对象A面向对象习题

第8章习题:

8-1、设计Date类,输出合法日期。

#include

using namespace std;

//类定义//

class Date

{ int year; //存储日期的年份

int month;//存储日期的月份

int day;//存储日期的天数

public:

bool setDate(const int,const int,const int);

void display(void);

char * getMonth(const int);

};

//类的实现//

//设置成员变量//

//mm:月份,dd:天数,yy:年份//

//返回值:如果成功赋值则返回true,否则返回false。// char* Date::getMonth(const int m )

{ if(m==1)

return "January";

else if(m==2)

return "February";

else if(m==3)

return "March";

else if(m==4)

return "April";

else if(m==5)

return "May";

else if(m==6)

return "June";

else if(m==7)

return "July";

else if(m==8)

return "August";

else if(m==9)

return "September";

else if(m==10)

return "October";

else if(m==11)

return "November";

else

return "December";

}

//设置成员变量//

//参数:mm:月份,dd:天数,yy:年份//

//返回值:如果成功赋值则返回true,否则返回false//

bool Date::setDate(const int mm,const int dd,const int yy)

{ if(mm<1 || mm>12) return false;

if(dd<1 || dd>31) return false;

year=yy;

month=mm;

day=dd;

return true;

}

//在屏幕上显示日期//

void Date::display(void)

{ // 按照"12-25-2004"的形式输出日期

cout<

// 按照"December 25,2004"的形式输出日期

cout<

// 按照"25 December 2004"的形式输出日期

cout<

void main(void)

{ Date myDate;//存储日期

while(true)

{ int year;//临时存储年份

int month;//临时存储月份

int day;//临时存储天数

cout<<"请按YYYY格式输入年:";

cin>>year;

cout<<"请按mm格式输入月:";

cin>>month;

cout<<"请按dd格式输入日:";

cin>>day;

if(myDate.setDate(month,day,year))

break;

else

cout<<"日期输入错误,请重新输入!"<

}

cout<<"您输入的日期是:\n";

myDate.display();

}

8-2、设计一个人口类Population,存储某年的人数、出生的人数和死亡人数,其函数成员能返回出生率和死亡率。

#include

using namespace std;

//类定义//

class Population

{ int pnum; //存储某年的人数

int birthnum;//存储出生的人数

int deadnum;//存储死亡的人数

public:

bool setData(const int,const int,const int);

float birthrate(){return birthnum/float(pnum);}

float deadrate(){return deadnum/float(pnum);}

int getpnum(){return pnum;}

int getbirthnum(){return birthnum;}

int getdeadnum(){return deadnum;}

};

//返回值:如果成功赋值则返回true,否则返回false//

bool Population::setData(const int p,const int b,const int d)

{ if(b>p||b<0) return false;

if(d>p||d<0) return false;

pnum=p;

birthnum=b;

deadnum=d;

return true;

}

void main(void)

{ Population people;

int pn,bn,dn;

while(true)

{

cout<<"请输入总人数:";

cin>>pn;

cout<<"请输入出生的人数:";

cin>>bn;

cout<<"请输入死亡的人数:";

cin>>dn;

if(people.setData(pn,bn,dn))

break;

else

cout<<"输入错误,请重新输入!"<

}

cout<<"出生率是: "<

cout<<"死亡率是: "<

}

8-3、设计一个类,具有一个float指针成员,且函数成员如下:

1)构造函数具有一个整型参数count,为指针成员分配count个元素空间;2)析构函数释放该空间;

3)向指针指向的空间存储数据的函数;

4)返回空间中这些数的平均值的函数。

#include

#include

using namespace std;

class DataArray

{ int length; //存储数组元素个数

float *fltData;//存储数据

public:

DataArray(int =1); //构造函数

~DataArray();//析构函数

bool setData(const float,const int); //设置成员变量

float getAverage(void); //计算并返回平均值

};

//构造函数//

//count:希望创建的动态数组元素个数。// DataArray::DataArray(int count)

{ cout<<"调用构造函数..."<

if(count>0)

{ length=count;

fltData=new float[length];

}else

{ length=1;

fltData=new float[length];

}

for(int i=0;i

fltData[i]=0;

}

//析构函数//

DataArray::~DataArray()

{ cout<<"调用析构函数..."<

delete [] fltData;

length=0;

}

//设置成员变量//

//tData:要赋给指定变量的值。//

//subscript:指定要赋值的变量数组元素为第几个。//

//返回值:如果成功赋值则返回true,否则返回false。// bool DataArray::setData(const float tData,const int subscript) { if(subscript+1>length)

return false;

else

fltData[subscript]=tData;

return true;

}

//计算并返回平均值//

//返回值:返回数组所存储的数据的平均值。//

float DataArray::getAverage(void)

{ float sum=0;

for(int i=0;i

sum+=fltData[i];

return(sum/length);

}

void main(void)

{ //对DataArray类进行测试

cout<<"创建DataArray对象并初始化..."<

DataArray Obj(3);

cout<<"给DataArray对象赋值:"<

for(int i=0;i<3;i++)

{ // 产生一个随机数

float temp=(float)rand()/10;

Obj.setData(temp,i);

cout<<"第"<<(i+1)<<"个值为:"<

}

cout<<"平均值为:"<

}

8-4、设计一个薪水类Payroll,数据成员包括单位小时工资、已经工作的小时数、本周应付工资数。在主函数定义一个具有10个元素的对象数组(10个雇员),询问每个雇员本周已经工作的小时数,然后显示应得的工资。输入有效性检验:每周工作的小时数不能大于60,也不能为负数。

#include

#include

using namespace std;

//薪水类声明//

class Payroll

{ float pay_per_hour;//存储每小时的工钱

float hours;//存储雇员工作时间

float total_pay;//存储雇员应得工资

public:

Payroll(const float =0); //构造函数

bool setHours(const float);//设置工作时间

float getPayment(void); //获取应得工资

};

//构造函数//

//hour:雇员工作时间。//

Payroll::Payroll(const float hour)

{ pay_per_hour=5.0f;

hours=0;

total_pay=0;

}

//设置工作时间//

//hour:雇员工作时间//

//返回值:如果变量赋值成功则返回true,否则返回false。//

bool Payroll::setHours(const float hour)

{ //判断工作时间是否介于0至60之间

if(hour>=0 && hour<=60)

{ hours=hour;

total_pay=pay_per_hour * hours;

return true;

}else

return false;

}

//获取应得工资//

//返回值:返回计算得到的雇员应得的工资//

float Payroll::getPayment(void)

{ return total_pay;

}

void main(void)

{ Payroll employee[10];//雇员对象数组

//对10个雇员对象进行赋值

for(int i=0;i<10;i++)

{ float tHour;

cout<<"请输入第"<

while(true)

{ cin>>tHour;

if(employee[i].setHours(tHour))

break;

else

cout<<"您输入的数据不正确,请重新输入!"<

}

}

//显示每个雇员应得的工资

for(i=0;i<10;i++)

cout<<"第"<

<

<

}

8-5、设计InvoiceItem类和商品销售类,完成如下功能:

1)询问客户购买的商品名称和数量;

2)从InvoiceItem对象获得每个商品的成本价;

3)在成本价基础上加上30%利润,得到每个商品的单价;

4)将商品单价与购买数量相乘,得到商品小计;

5)将商品小计乘以6%,得到商品的零售税;

6)将商品小计加上零售税得到该商品的销售额;

7)显示客户本次交易购买商品的小计、零售税和销售额。

有效性检验:商品数量不能为负数。

#include

using namespace std;

class InvoiceItem

{ c har *desc;

int units;

float cost;

public:

InvoiceItem(char *d, int u=0, float c=0)

{ desc = new char [strlen(d)+1];

strcpy(desc, d);

units = u;

cost = c;

}

~InvoiceItem( ) { delete [ ]desc; units = 0; c ost = 0; }

char *getDesc( ) { return desc; }

int getUnits( ) { return units; }

float getCost( ) { return cost; }

};

class Sale {

float price, salesum, saletax, totalsum;

int buynum;

public:

bool setnum(int, int);

void calcSale(float p)

{ price=p; //单价

salesum=price*buynum; //商品小计

saletax=salesum*0.06; //零售税

totalsum = salesum + saletax; } //销售额float getprice() { return price; }

int getbuynum() { return buynum; }

float getsalesum() { return salesum; }

float getsaletax() { return saletax; }

float gettotalsum() { return totalsum; } };

bool Sale::setnum(int n,int invoicenum)

{

if(n>=0 && n<=invoicenum )

{ buynum=n;

return true;

}else

return false;

}

void main()

{

InvoiceItem Inventory[3] = {

InvoiceItem("ABC",10,0.5f),

InvoiceItem("DEF",20,1.2f),

InvoiceItem("GHI",30,2.5f),

};

Sale s1;

int i, index=-1;

cout << "库存商品列表:\n";

for(i = 0; i < 3; i++) {

cout <<"名称:"<

cout << Inventory[i].getUnits( )<<"\t成本价:";

cout << Inventory[i].getCost( )<<"元"<

} //输出库存商品信息

cout<<"请输入购买的商品名称: ";

while(true)

{ char name[51];

cin.getline(name,51);

for(i = 0; i < 3; i++)

if(strcmp(Inventory[i].getDesc(),name)==0)

index=i;

if(index!=-1) break;

else cout<<"您输入的商品不存在,请重新输入!"<

}

cout<<"请输入购买数量: ";

while(true)

{ int num;

cin>>num;

if(s1.setnum(num,Inventory[index].getUnits())) break;

else cout<<"您输入的数量不正确,请重新输入!"<

}

//计算销售额

s1.calcSale(Inventory[index].getCost()*1.3);

//输出销售信息

cout<<"本次购买的商品名称:"<

cout<<"本次购买的商品数量:"<

cout<<"本次购买的商品单价:"<

cout<<"本次购买的商品小计:"<

cout<<"本次购买的零售税:"<

cout<<"本次购买的销售额:"<

}

第9章习题:

9-1、定义NumDays类,功能是将以小时(hour)为单位的工作时间转换为天数

(day)。构造函数具有一个代表工作小时的参数,其他函数成员实现小时和天的存储和检索。同时,该类需重载+、-、++、――运算符。

#include

using namespace std;

//NumDays类声明//

class NumDays

{ float hour; //以小时存储工作时间

float day; //以天数存储工作时间

public:

NumDays(const float =0);//构造函数

void setHours(const float);//以小时为参数设置成员变量

void setDays(const float);//以天数为参数设置成员变量

float getHours(void);//返回按小时计的工作时间

float getDays(void);//返回按天数计的工作时间

float operator +(NumDays &);//重载+操作符

float operator -(NumDays &);//重载-操作符

NumDays operator ++(); //重载++前置操作符

NumDays operator ++(int);//重载++后置操作符

NumDays operator --();//重载--前置操作符

NumDays operator --(int);//重载--后置操作符

};

//构造函数//

//tHour:工作时间(小时)//

NumDays::NumDays(const float tHour)

{ hour=tHour;

day=tHour/8;

}

//以小时为参数设置成员变量//

//tHour:工作时间(小时)。//

void NumDays::setHours(const float tHour)

{ hour=tHour;

day=tHour/8;

}

//以天数为参数设置成员变量//

//tDay:工作时间(天数)//

void NumDays::setDays(const float tDay)

{ hour=tDay*8;

day=tDay;

}

//返回按小时计的工作时间//

//返回值:返回工作时间(小时)//

float NumDays::getHours(void)

{ return hour;

}

//返回按天数计的工作时间//

//返回值:返回工作时间(天数)//

float NumDays::getDays(void)

{ return day;

}

//重载+操作符//

//返回值:返回两者相加之和(小时)//

float NumDays::operator +(NumDays &NumDaysObj) { return(this->hour+NumDaysObj.hour);

}

//重载-操作符//

//返回值:返回两者相减之差(小时)//

float NumDays::operator -(NumDays &NumDaysObj) { return(this->hour-NumDaysObj.hour);

}

//重载++前置操作符//

NumDays NumDays::operator ++()

{ hour++;

day=hour/8;

return *this;

}

//重载++后置操作符//

NumDays NumDays::operator ++(int)

{ NumDays temp=*this;

hour++;

day=hour/8;

return temp;

}

//重载--前置操作符//

NumDays NumDays::operator --()

{ hour--;

day=hour/8;

return *this;

}

//重载--后置操作符//

NumDays NumDays::operator --(int)

{ NumDays temp=*this;

hour--;

day=hour/8;

return temp;

}

9-2、在9-1的基础上设计TimeOff类,用于计算雇员生病、休假和不支付报酬的时间。该类包含下面NumDays类型成员。

maxSickDays:用来记录雇员因生病可以不工作的最多天数;

sickTaken:记录因生病已经不工作的天数;

maxVacation:记录可以带薪休假的最多天数;

vacTaken:记录已经带薪休假的天数;

maxUnpaid:记录在不支付薪水的情况下,雇员可以休假的最多天数;unpaidTaken:记录在不支付薪水的情况下,雇员已经休假的天数。

第10章习题:

10-7、定义抽象类BasicShape及其子类Circle和Rectangle,创建Circle和Rectangle 类的对象,检验程序能否正确计算各形状的面积。

#include

using namespace std;

#define PI 3.1415926

//BasicShape类声明//

class BasicShape

{public:

double getArea(void) {return area;}//返回面积

virtual void calcArea(void) =0;//计算面积

protected:

double area;//存储面积

};

//Circle类声明//

class Circle:public BasicShape

{public:

Circle(int X=0,int Y=0,double R=0)

{ //构造函数

centerX=X;

centerY=Y;

radius=R;

calcArea();

}

int getCenterX(void) {return centerX;}//返回圆心X坐标int getCenterY(void) {return centerY;}//返回圆心Y坐标void calcArea(void) {area=PI*radius*radius;}//计算圆面积private:

int centerX; //存储圆心X坐标

int centerY; //存储圆心Y坐标

double radius; //存储圆半径

};

//Rectangle类声明

class Rectangle:public BasicShape

{public:

Rectangle(long W=0,long L=0)

{ //构造函数

width=W;

length=L;

calcArea();

}

long getWidth(void) {return width;} //返回矩形的宽

long getLength(void) {return length;}//返回举行的长

void calcArea(void) {area=width*length;}//计算矩形面积private:

long width; //存储矩形的宽

long length;//存储矩形的长

};

void main(void)

{ //测试Circle类

cout<<"创建一个Circle对象..."<

Circle myCircle(0,0,11.4);

cout<<"centerX="<

cout<<"centerY="<

cout<<"radius=11.4"<

cout<<"Area="<

//测试Rectangle类

cout<<"创建一个Rectangle对象..."<

Rectangle myRectangle(12,15);

cout<<"width="<

cout<<"length="<

cout<<"Area="<

第11章习题:

11-1、Date类异常。

#include

using namespace std;

class Date

{public:

bool setDate(const int,const int,const int);

void display(void);

char * getMonth(const int);

class InvalidDay{ }; //异常类

class InvalidMonth{ }; //异常类

private:

int year;//存储日期的年份

int month; //存储日期的月份

int day; //存储日期的天数

};

//设置成员变量

//参数:mm:月份。dd:天数。yy:年份。//

//返回值:如果成功赋值则返回true,否则返回false// char* Date::getMonth(const int m )

{ if(m==1)

return "January";

else if(m==2)

return "February";

else if(m==3)

return "March";

else if(m==4)

return "April";

else if(m==5)

return "May";

else if(m==6)

return "June";

else if(m==7)

return "July";

else if(m==8)

return "August";

else if(m==9)

return "September";

else if(m==10)

return "October";

else if(m==11)

return "November";

else

return "December";

}

//设置成员变量

//参数:mm:月份。dd:天数。yy:年份。//

//返回值:如果成功赋值则返回true,否则返回false// bool Date::setDate(const int mm,const int dd,const int yy) { if(mm<1 || mm>12)

throw InvalidMonth(); //抛出异常

if(dd<1 || dd>31)

throw InvalidDay(); //抛出异常

year=yy;

month=mm;

day=dd;

return true;

}

//在屏幕上显示日期//

void Date::display(void)

{ // 按照"12-25-2004"的形式输出日期

cout<

<

<

// 按照"December 25,2004"的形式输出日期cout<

<

<

// 按照"25 December 2004"的形式输出日期cout<

<

<

}

void main(void)

{ Date myDate;//存储日期

int year;//临时存储年份

int month;//临时存储月份

int day;//临时存储天数

try

{

cout<<"请按YYYY格式输入年:";

cin>>year;

cout<<"请按mm格式输入月:";

cin>>month;

cout<<"请按dd格式输入日:";

cin>>day;

myDate.setDate(month,day,year);

cout<<"您输入的日期是:"<

myDate.display();

cout<

}catch(Date::InvalidDay)

{ cout<<"您输入的日期天数错误!\n"<

}catch(Date::InvalidMonth)

{ cout<<"您输入的日期月份错误!\n"<

}

}

面向对象方法题库1-1-9

面向对象方法题库1- 1-9

问题: [单选]用例(usecase)用来描述系统对事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系筑”中,创建新订单和更新订单都需要核查用户账号是否正确。用例“创建新订单”、“更新订单”与用例“核查客户账号”之间是()关系。 A.包含(includE. B.扩展(extenD. C.分类(classification) D.聚集(aggregation) 用例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。它确定了一个和系统参与者进行交互,并可由系统执行的动作序列。用例模型描述的是外部执行者(actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。 两个用例之间的关系主要有两种情况:一种是用于重用的包含关系,用构造型include表示;另一种是用于分离出不同行为的扩展,用构造型extend表示。 ①包含关系:当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能是很重要的事时,应该使用包含关系来表示它们。 ②扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事

情,可以断定将这个用例分为一个主用例和一个或多个辅用例描述可能更加清晰。

问题: [单选]对于违反里氏替换原则的两个类A和B,可以采用的候选解决方案是() A.尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程 B.创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B 行为不完全一致的问题 C.将B到A的继承关系改成组合关系 D.区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-a,应该改成组合或聚合关系 里氏替换原则是面向对象设计原则之一,由BarbaraLiskov提出,其基本思想是,一个软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别,即把基类都替换成它的子类,程序的行为没有变化。反过来则不一定成立,如果一个软件实体使用的是一个子类对象,那么它不一定适用于基类对象。 在运用里氏替换原则时,尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。由于子类继承基类并实现其中的方法,程序运行时,子类对象可以替换基类对象,如果需要对类的行为进行修改,可以扩展基类,增加新的子类,而无须修改调用该基类对象的代码。

面向对象程序设计 C 复习题

一选择题(共 45题) 1.对类的构造函数和析构函数描述正确的是()。 A.构造函数可以重载,析构函数不能重载√ B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A)规律性 B.传递性√ C.重复性 D.多样性 3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。 (OneClass p); B. OneClass& (OneClass p ); C. OneClass(OneClass & p);√ D. OneClass (OneClass * p); 4.对于结构中定义的成员,其默认的访问权限为()。 B. protected D. static 5.下面对静态数据成员的描述中,不正确的是()。 A.静态数据成员可以在类体内进行初始化√ B.静态数据成员不可以在类体内进行初始化 C.静态数据成员能受private控制符的作用 D.静态数据成员调用前必须初始 6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。 A.复用 B.继承√ C.封装 D.引用 7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。 A. x(a) B. x[a] C. x->a D. √ 9. 对于一个类的构造函数,其函数名与类名( )。 A. 完全相同√ B. 基本相同 C. 不相同 D. 无关系 10. 一个类的构造函数通常被定义为该类的( )成员。 A. 公有√ B. 保护 C. 私有 D. 友元 11. 一个类的析构函数通常被定义为该类的( )成员。 A. 私有 B. 保护 C. 公有√ D. 友元 12. 一个类的静态数据成员所表示属性 ( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性√ D. 类和友元的属性 13.类的析构函数的作用是()。 A.一般成员函数 B.类的初始化 C.对象初始化D.删除对象之前的善后工作√ 14.下列对基类和派生类关系的描述中,错误的是()。 A.派生类是基类的具体化B.派生类是基类的子集√ C.派生类是基类定义的延续 D.派生类是基类的组合 15.下列对派生类的描述中,错误的是()。 A.一个派生类可以作为另一个派生类的基类 B.派生类至少有一个基类 C.派生类的缺省继承方式是private D.派生类只继承了基类的公有成员和保护成员√ 16.下列对继承的描述中,错误的是()。 A.析构函数不能被继承

c++面向对象课程设计报告

课程设计报告 课程名称面向对象程序设计 课题名称学生成绩管理系统 专业计算机科学与技术 班级计算机 1001 学号 01 姓名 指导教师李珍辉陈淑红李杰军 2011年 12 月 28 日

湖南工程学院 课程设计任务书 课程名称面向对象程序设计 课题学生成绩管理系统 专业班级计算机1001 学生姓名 学号 01 指导老师李珍辉陈淑红李杰军 审批 任务书下达日期 2011 年 11 月 15 日 任务完成日期 2011 年 12 月 28 日

一、设计内容与设计要求 1.课程设计目的: 面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。 2.课题题目 1)公司库存管理系统 2)高校学籍管理系统 3)高校工资管理系统 4)高校人事管理系统 5)通讯录程序设计 6)学生成绩管理系统 7) 图书管理系统 8)文本编辑器的设计与实现 9)学生考勤管理系统 10)公司人员管理系统 3.设计要求: ⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相 应题号的课题。随意换题者不记成绩。 ⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括 系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完 成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模 块图)。③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E -R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系 统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修 改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出 每一步的操作步骤。⑥关键源程序(带注释)

面向对象编程练习题库-test

面向对象编程练习题 专题1 初识Java 一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是()、()、()。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath为()。3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展名为()。4.如果Java源文件中有多个类,那么只能有一个类是()类。 二、选择题 1.作为Java应用程序入口的main方法,其声明格式是() A.public static int main(String args[]) B.public static void main(String args[]) C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是() A.java AppFirst.java B.java AppFirst C.java appfirst.class D.javac AppFirst 3.设有一个Java小程序,源程序名为FirstApplet.java,其HTML文件为FirstApplet.html,则运行该小程序的命令为() A.java FirstApplet B.javac FirstApplet.java C.appletviewer FirstApplet.java D.appletviewer FirstApplet.html 4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的()文件夹下。 A.bin B.jre C.include D.doc 5.Java语言是一种语言。 A.机器B.汇编C.面向过程的D.面向对象的 6、Java程序的最基本组成单位是( )。 A.函数B.过程C.变量D.类 7. main()方法的返回值类型是()。 A.boolean B.int C. void D.static 8. 下面哪个单词是Java语言的关键字()A.False B.FOR C.For D.for 9. 、线程是Java的()机制。 A.检查B.解释执行C.并行D.并发

面向对象试题(标准答案)

CoreJavaOOP考试题 考试时间:90分钟 考试总分:100分 一、选择题(不定项选择)(22*4=88) 1. 类A,B的定义如下: class A { private int a = 100; A() { System.out.print("A()"); System.out.println(a); } } class B extends A { private int a = 200; B() { System.out.print("B()"); System.out.println(a); } } 运行下面的代码: new B(); 输出的结果是:(A )。 A. A() 100 B() 200 B. A() 200 B() 200 C. B() 200 A() 100 D. B() 200 A() 200

2.下列说法正确的是(D ) A.所有类都必须定义构造方法(构造器) B.构造方法必须初始化类的所有数据成员 C.子类定义了构造器后,不再调用父类的构造器 D.构造方法可以访问类的非静态成员 3.在Java中,哪个关键字使类不能派生子类?, (A ) A : final B : public C : private D : native 4.class Base{ static void test(){ System.out.println(“Base.test()”); } } public class Child extends Base{ static void test(){ System.out.println(“Child.test()”); } public static void main(String[] args){ Base base = new Child(); Child child = new Child(); base.test(); child.test(); } } 程序运行的结果是( C ) A.Child.test() Child.test() B.Child.test() Base.test() C.Base.test() Child.test() D.Base.test() Base.test()

《面向对象》练习题.

一、单项选择题 1. 类的构造函数被自动调用执行的情况是在定义该类的() A. 成员函数时 B. 数据成员时 C. 对象时 D. 友元函数时 2. 假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语句后,x.a和x.b的值分别为() A. 1和0 B. 1和4 C. 4和0 D. 4和1 3. 所谓多态性是指() A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数 C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象 4. 构造函数不具备的特征是() A. 构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置默认参数 D. 构造函数必须指定类型说明 5. 在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限() A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 6. C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是() A. 增加了一些新的运算符 B. 允许函数重载,并允许设置缺省参数 C. 规定函数说明符必须用原型 D. 引进了类和对象的概念 7. 在类中说明的成员可以使用关键字的是() A. public B. extern C. cpu D. register

8. C++语言中所有在函数中定义的变量,连同形式参数,都属于() A. 全局变量 B. 局部变量 C. 静态变量 D. 函数 9. 在私有继承的情况下,基类成员在派生类中的访问权限() A. 受限制 B. 保持不变 C. 为共有 D. 为保护 10. 使用引用作为函数参数,下列说法正确的是() A. 实参是形参的备份 B. 实参与形参无联系 C. 形参是实参的备份 D. 实参与形参是同一对象 11. C++的继承性允许派生类继承基类的() A. 部分特性,并允许增加新的特性或重定义基类的特性 B. 部分特性,但不允许增加新的特性或重定义基类的特性 C. 所有特性,并允许增加新的特性或重定义基类的特性 D. 所有特性,但不允许增加新的特性或重定义基类的特性 12. 以下基类中的成员函数表示纯虚函数的是() A. virtual void tt()=0 B. void tt(int)=0 C. virtual void tt(int) D. virtual void tt(int){} 二、填空题(请在每小题的空格中填上正确答案。错填、不填均无分。) 1. 抽象类中至少要有一个_纯虚__函数。 2. 编译时的多态性通过_重载__函数实现。 3. 基类的公有成员在派生类中的访问权限由_继承方式__决定。 4. 假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类___的构造函数。 5. 下列程序段的输出结果是___。 6. C++中有两种继承:单继承和_多重继承__。 7. C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取引用___方式。 8. 将指向对象的引用作为函数的形参,形参是对象的引用,实参是_对象名__。

Java面向对象练习经典题

JA V A程序作业题 1、设计一个包含多个构造函数的类,并分别用这些构造函数实例化对象。 2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。 3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。 4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。 5. 编写一个控制台应用程序,定义一个类MyClass,类中包含有public、private以及protected数据成员及方法。然后定义一个从MyClass类继承的类MyMain,将Main方法放在MyMain中,在Main方法中创建MyClass类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。 7.创建一个类包含有protected数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的protected数据 9 编写一个控制台应用程序,完成下列功能,并回答提出的问题。 1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。 2) 从A继承一个名为C的新类,并在C内创建一个成员变量B。不要为C创建构造函数。 3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。 4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么? 10 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。 1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。 2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。 3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。 11. 创建一个类,它存储一个int数据成员MyNumber,并给该数据成员创建属性,当该数据成员被存储时,将其乘以100;当其被读取时,将其除以100。 12. 定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、MaxSpeed (最大速度)、Weight(重量)等字段。然后以该类为基类,派生出bicycle、car等类。并编

面向对象程序设计课程设计报告同学通讯录管理程序

目录 1.设计题目 (1) 2.设计目的和内容 (1) 2.1设计目的 (1) 2.2设计内容 (1) 3.基本功能描述 (1) 4.设计思路 (1) 5.软件设计 (2) 5.1设计步骤 (2) 5.2界面设计 (3) 5.3关键功能的实现 (3) 5.3.1添加记录 (3) 5.3.2删除记录 (4) 5.3.3选中记录 (4) 5.3.4确认修改 (4) 5.3.5保存记录 (4) 5.3.6退出 (4) 6.结论与心得体会 (4) 7.参考文献 (4) 8.附录 (5) 8.1调试报告及测试结果 (5)

8.2关键源代码 (10) 8.2.1 Student类 (10) 8.2.2全局 (10) 8.2.3List Control初始化 (10) 8.2.4添加记录 (11) 8.2.5删除记录 (11) 8.2.6选中记录 (12) 8.2.7修改记录 (12) 8.2.8保存记录 (13) 8.2.9退出程序 (13)

1.设计题目 同学通讯录管理程序 2.设计目的和内容 2.1设计目的 1)学习Visual C++的MFC开发程序的步骤。. 2)综合运用所学的类、继承和多态的知识。 3)进一步掌握程序的调试方法。 2.2设计内容 1)利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件; 2)设计通讯录的数据结构(如:以数组或者动态链表)和相应的类; 3)完成对通讯录中记录的增加、修改、删除和显示; 4)将通讯录存入文本文件。 3.基本功能描述 可以实现学生信息(姓名、学号、系别、邮箱、电话)的添加、显示、选中修改、删除选中和保存并退出程序的功能。 4.设计思路 1)创建基于对话框的MFC应用程序,添加控件:5个Edit Control、6个Button、1 个List Control; 2)在5个Edit Control分别输入相应信息,点击“添加记录”Button可在List Control 中显示相应信息,同时清空五个Edit Control以便下一个学生信息的输入; 3)点中List Control选中已有一组学生信息,点击“删除记录”Button可删除该组 信息; 4)点中List Control选中已有一组学生信息,点击“选择该列”Button将该列信息 返回到5个Edit Control。修改完成后点击“确认修改”Button,对List Control 中选中列完成修改; 5)点击“确认保存”将信息保存到文本文档; 6)点击“退出”退出程序。 7)可在D盘查看保存的信息。

面向对象面试题

面向对象面试题 1、什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数; 现在纯正的OO语言主要是java和C#,C++也支持OO,C是面向过程的。 2、简述private、protected、public、internal 修饰符的访问权限。 private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 当前程序集内可以访问。 3、https://www.wendangku.net/doc/658105899.html,中的五个主要对象 Connection:主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在https://www.wendangku.net/doc/658105899.html, 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。 Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连结到数据源。 DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Comm and 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command 对象上,并提供了许多配合DataSet 使用的功能。 DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是https://www.wendangku.net/doc/658105899.html, 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。 DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。 https://www.wendangku.net/doc/658105899.html, 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来

面向对象-练习题

【练习题】01.类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】02.类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】03类的成员方法 创建一个账户Account类,该类有id:账户号码(长整数) name:真实姓名字符串类型,balance:账户余额double 类型.方法:deposit: 存款方法,参数是double 型的金额;withdraw:取款方法,参数是double型的金额. 在main方法中创建Account类的对象,调用各个方法,并显示存取款结果。 【练习题】04.构造方法 编写Java程序,模拟简单的计算器。12 3 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为公共。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】05.构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。 在main方法中创建人类的实例,然后将信息显示。

C面向对象程序设计课程设计报告

《C++面向对象程序设计》课程设计报告题目:分数计算器设置 班级: K0312415 专业:计算机科学与技术 学号: 姓名:周林 指导教师: 小组成员:周林,张齐满 二O一三年 10 月 15 日

一、课程设计问题描述 分数计算器设计是高等学校教务管理的重要组成部分,其内容较多,为了简化计论, 要求设计的管理系统能够完成以下功能: (1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。 (2)输入/输出:对流提取和流插入运算符进行重载。 (3)计算功能:可进行分数的加、减、乘和除法运算。 (4)化简功能:将分数化简为最简分数。 (5)异常处理功能:分数中分母不能为零。 (6)菜单功能:每种功能的操作都是在菜单中进行相应选择。 二、课程设计目的和要求: 经过一个学期的《C++面向对象程序设计》课程的学习,已经有了一定地程序设计基础,但是要学好C++面向对象程序设计这门课程,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才能增强和巩固知识。 三、系统设计(算法分析) 1、系统由5功能,可分别执分数的.加法运算,减法运算,.乘法运算和除法运算,还可以将分数化简。 1.加法运算可计算两个分数相加。 2.减法运算可计算两个分数相减。 3.乘法运算可计算两个分数相乘。 4.除法运算可计算两个分数相除。 5.化简运算可计算一个分数化简。 2、流程图

3、分数计算器设置各函数的功能和实现的相关功能由对应的函数来实现。 (1)函数jia() (2)函数jian() (3)函数cheng()实现分数乘法运算。 (4)函数chu()实现分数除法运算。 (5)函数shuchu()实现分数的输出和化简。 四、程序源代码 pp : Defines the entry point for the console application.

面向对象程序设计复习题

一、单项选择题 1.(A)是面向对象系统包含的要素。 A、类 B、多态 C、友元 D、重载 2.下列对常量的定义中,错误的是( C )。 A、MyClass const obj(3,4); B、char * const p="hello"; C、int &ref=2; D、void show() const; 3.若有如下函数声明:void Fun(int x);,则下列(D )能与该函数形成重载。 A、void Fun(int y); B、void Fun(int x,int y='1'); C、int Fun(int x); D、void Fun(int) const; 4.下列对构造函数和析构函数的描述中,错误的是( B )。 A、构造函数可以重载 B、析构函数名与类名相同 C、构造函数中可以设置参数的缺省值 D、类中只有一个析构函数 5.下列对友元的描述中,错误的是( C )。 A、友元破坏了类的封装性 B、友元提高了程序的运行效率 C、友元可以在类外声明和定义 D、友元能够访问类中的私有成员 6.下列对继承的描述中,正确的是( A )。 A、公有派生类对象能够访问基类的公有成员 B、派生类只继承了基类的公有成员和保护成员 C、派生类对象不能访问基类的保护成员 D、派生类不改变基类成员的访问权限 7.程序中,编译时出错的语句是(D )。 class Base{ }; class Derived : public Base { }; Derived objD1; Base objB=objD1; 数据成员 C.构造函数 D.静态成员函数

分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作; 28:下列表达方式正确的是()。 A.class P{ B. class P{ public: public: int x=15; int x; void show(){cout<

面向对象复习题

第一部分面向对象方法概述 一、填空题 1.对象的抽象是,类的实例是。 2.动态模型描述了系统的结构。 3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流, 有、和三种外部事件控制流。控制流是一个处理内 部的控制,均可结构化。 4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象 的那些类的实例。 5.继承性是自动共享父类属性和的机制。 6.对象具有封装性,实现了的组合。 7.在面向对象方法中,信息隐藏通过对象的来实现。类结构分离了 和,从而支持了信息隐藏。 8.抽象是指强调实体的、,忽略一些无关紧要的属性。类实现了对象 的和的抽象,它是对象的共性的抽象。 9.子类只继承的属性和操作,称为单重继承。 10.对象的抽象是,类的具体化就是,也可以说类的实例 是。 11.类具有,它是的行动的抽象。 12.对象具有状态,对象用来描述它的状态。 13.概念模型描述了系统的。功能模型指出,动态模型确定, 而对象模型确定。功能模型由组成。 14.面向对象有三个基本要素,它们是、、。 15.面向对象技术在三个级别上促进了共享,它们是、、。 16.活动是一种有时间间隔的操作,它是依附于。动作是一种瞬时操作,它 是与联系在一起的操作。 17.封装性是指所有软件部件内部都有明确的以及清楚的。每个软 件部件都有友好的,软件部件的与分离。 18.主要的对象类型有、、和。 19.同一个类中的共享是指同一个类中的对象有着相同的和相同 的。 20.结构化方法的本质是,其、可修改性和可重用性都比较差。 21.对象还有,用于改变对象的状态。对象实现了和的 结合。 22.面向对象方法认为系统是由应用域的组成。 23.对象具有状态,描述对象的状态用它的。 24.类具有属性,描述类的属性用。 25.一个方法有、和。 26.动态模型描述了系统的。 27.对象模型的主要元素是类,关联和。 28.通过这种机制和构造来实现不同应用中的信息共享。 29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。 30.对象具有很强的能力和功能。

面向对象程序设计课设题目

2012计算机科学与技术专业 面向对象课程设计题目 一设计要求 每个题目可以1人或至多两人,按题目要求完成程序设计及课程设计报告。 (若两人一个题目,需各自独立完成,题目相同者的课程设计报告不能完全相同。)二题目列表 三题目内容及要求 题目1 矩阵运算 内容及要求: 定义矩阵类,实现矩阵加法、减法、乘法、矩阵转置、求矩阵的逆矩阵等。 用程序实现验证n*n矩阵的如下定理: A(BC)=(AB)C。

题目2 填XO游戏程序 内容及要求: 游戏规则和胜利条件: 棋盘共有5行5列: 选择难度(1):两个斜对角之一都为X或O,则玩家胜。一横行都为X或O则玩家胜。)一竖行都为X或O则玩家胜。 选择难度(2):两个斜对角之一都为X或O,则玩家胜。 选择难度(3):两个斜对角都为X或O,则玩家胜。 输入必须为一个两位整数,如11,代表棋盘的第一行第一列,输完后按回车键; 玩者下一步X或O,计算机也自动下一步X或O。 程序运行示例: 题目3 统计学生成绩 内容及要求: 要求编写一个“Student”类及用来存取文件的save()和load()函数,使用函数及运算符重载技术完成如下操作: (1)计算每个学生的平均成绩,将数据存入文件stud.dat中并验证是否正确地存入了文件。(2)要求对“<<”和“>>”运算符进行重载。 (3)把学生姓名和平均成绩抽取出来,建立一个简明文件stud_mean.dat,并验证是否正确地存入了。 (4)从文件stud.dat按如下格式输出大于等于平均成绩的学生信息: 学号姓名算术语文平均 (5)将两门功课成绩都不及格的学生信息从文件中删除并另外存入文件bad.dat中。 (6)编写能检索文件中某个学生信息的子程序。如无此学生,输出“未查到”信息。 (7)使用多文件编程和菜单操作。 题目4 会议记录管理系统 内容及要求: 定义会议信息类class Conference

面向对象编程练习题库test

面向对象编程练习题库 t e s t Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

面向对象编程练习题 专题1 初识Java 一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是()、()、()。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath 为()。 3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展 名为()。 4.如果Java源文件中有多个类,那么只能有一个类是()类。 二、选择题 1.作为Java应用程序入口的main方法,其声明格式是() A.public static int main(String args[]) B.public static void main(String args[]) C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是() A.java B.java AppFirst C.java D.javac AppFirst 3.设有一个Java小程序,源程序名为,其HTML文件为,则运行该小程序的命令为 () A.java FirstApplet B.javac C.appletviewer D.appletviewer 4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的()文件夹下。A.bin B.jre C.include D.doc 5.Java语言是一种语言。 A.机器B.汇编C.面向过程的D.面向对 象的 6、Java程序的最基本组成单位是( )。

面向对象分析与及设计习题及答案

面向对象分析与及设计习题及答案 一、单项选择题 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C)。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6. (D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 7. (C) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 8.(D)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之 间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统 中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 11.一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 12.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制

《面向对象程序设计课程设计》题目

面向对象程序设计课程设计题目 设计说明 1. 每人一组,每组选择一个题目;如果列出多个版本,只需要完成其中一个版本即可。 2. 由学习委员负责统计各组员及其题目,以电子档模式提交题目列表名单。 3. 每组必须给出相应的UML类图,可用Visio或者其他类似的工具完成。 设计要求 1.编码规范要求 遵循Java编码规范,参见附录。 2.知识点要求 项目应至少覆盖以下知识点:封装、继承与多态等基本概念;方法和数组;输入输出流;使用抽象类、接口;对象组合;异常处理;包的使用。 3.文档打包及提交要求 文档打包:以“班级-学号-姓名-题目-设计报告.rar”形式将相关文档打包。 提交要求:统一交至教学平台。 压缩包的内容: 1)运行正确的源代码(包括文件夹结构)。 2)设计报告:描述软件功能、和设计方案的UML类图;设计中涉及的主要知识点;运行结果截图;使用帮助文档。 题目列表及说明: 1. 打字游戏 GUI本地版 可根据一片文章自动导入单词 整个单词下落或者淡入淡出 同时多个单词出现 对输入错误的单词分析记忆功能 积分 2. 文件加密和解密 要求:采用图形用户界面

1)给定任意一个文本文件,进行加密,生成另一个文件。 2)对加密后的文件还原。 3. 5子棋游戏 设计程序,完成下述功能: 在大于9条线的方形网格棋盘上,放置黑白两色棋子; 两人各执一色,通过网络对弈; 可以在任何两条线的交点上放置棋子; 同色棋子先同行、同列或者同队角线上5颗连成一条线者获胜。 4. 俄罗斯方块(网络版) 设计程序,完成下述功能:完成一个可以两个人通过网络对战的俄罗斯方块游戏,每一方都可以在自己的屏幕上看到对方的当前游戏状况,游戏先结束的一方为失败者。 5. 音乐播放器(JavaGUI本地版) 设计程序,完成下述功能: 选择各类声音文件进行播放。 完成前进、后退、暂停、回放等控制功能。 6. 电子相册(JavaGUI本地版) 设计程序,完成下述功能: 选择图形的显示。 完成图形的放大、缩小、剪切、旋转等控制功能。 图片的自动播放功能。 7. 多人聊天室((JavaGUI本地版/WEB版) 多人同时上网聊天。 8.扑克游戏(JavaGUI本地版/WEB版) 开发具有“升级”功能的4人对战游戏。“升级”又叫拖拉机。要求采用Java 网络编程技术。 9.编写一个记事本程序 要求: 用图形用户界面实现。 能实现编辑、保存、另存为、查找替换等功能。 提示:使用文件输入输出流。 10.模拟龟兔赛跑 要求: 用图形用户界面实现。 能设置比赛时间,马匹的数量等等。

面向对象考试题

第五章考试题 一、选择题:(每题3分,共20题) 1.下面关于类的说法错误的一项是()。 A、类属于Java语言中的复合数据类型 B、对象是Java语言 中的基本结构单位 C、类是同种对象的集合和抽象 D、类就是对象 2.如下所示代码: public class Test05_01{ private float a; public static void m ( ){ } } 如何使成员变量a被方法m( )访问()。 A、将private float a改为public float a B、将private float a改为static float a C、将private float a改为protected float a D、将private float a改为float a 3.下面关于类的说法有误的一项是()。 A、类就是对象 B、类是同种对象的集合和 抽象 C、类属于Java语言中的复合数据类型 D、对象是Java语言 中的基本结构单位

4.下列哪种类成员修饰符修饰的变量只能在本类中被访问()。 A、protected B、default C、private D、public 5.下面关于方法的说法不正确的一项是()。 A、类的私有方法不能被其他类直接访问。 B、Java中的构造方法名必须和类名相同。 C、方法体是对方法的实现,包括变量声明和合法语句。 D、如果一个类定义了构造方法,也可以用该类的默认构造方法。 6.下列程序的运行结果是()。 public class Test05_02 extends x{ int ab(){ static int a = 10; a++; System.out.println(a); } public static void main(String[] args) { Test05_02 b = new Test05_02 (); b.ab(); } } A、10 B、编译错误 C、11 D、运行成功,但不输出

相关文档