面向对象作业

作业三类和对象的创建目的:1、java类的定义和使用2、掌握创建和使用类对象的方法。

3、对象的引用内容:一、类和对象的创建1、类通过关键字class来创建,格式如下:[修饰符] <class><类名> [extends 父类名] [implements 接口] {<类体>}修饰符包括:public、abstract、final2、创建对象的格式如下:<类名><对象名>=new <类名>([参数列表])例中:MyBox b1=new MyBox( );二、对象的引用1)对象的引用:<对象名>.<变量或方法名>例:a1.draw(g);2)对象的清除:MyBox a1=new MyBox(20,20,200,400);…… //对象的操作a1=null;三、具体实例例1:MaxArray类的对象求出一维数组中的最大值。

classMaxArray{intfindmax(int a[],int n){int max=a[0];for(int i=1;i<n;i++)if(a[i]>max)max=a[i];//返回max的值}}public class C1{public static void main(String args[]){//利用类MaxArray创建对象obint a[]={2,5,7,3,18,9},b[]={33,43,6,12,8};System.out.println("数组a中的最大值是"+ob.findmax(a,6));//输出数组b的最大值}}例2:练习命令行参数的使用。

(一)带有2个命令行参数public class say{public static void main(String args[]){String name=args[0];String word=args[1];System.out.println("我想对"+name+"悄悄地说:"+word);}}调试过程:保存的文件名say.java,编译文件:javac say.java,运行文件:java say 妈妈我爱你!!!其中:“妈妈”是第一个命令行参数;“我爱你!!!”是第二个命令行参数。

(二) 带有3个命令行参数(3个整数求最大值)public class max{public static void main(String args[]){int max;int a=Integer.parseInt(args[0]);int b=Integer.parseInt(args[1]);int c=Integer.parseInt(args[2]);if(a>b&&a>c)max=a;else if(b>c)max=b;elsemax=c;System.out.println("三个数中最大的是:"+max);}}调试过程:保存的文件名max.java,编译文件:javac max.java,运行文件:java max 12 48 6 其中:“12”是第一个命令行参数;“48”是第二个命令行参数;“6”是第三个命令行参数。

(三) 带有2个命令行参数(2个整数求最大值),由同学自己完成。

例3:importjava.awt.*;importjava.applet.Applet;public class p87_16 extends Applet{public void paint(Graphics g){//利用类Re创建对象jsg.drawString("矩形a=2,b=3",10,20);g.drawString("周长="+js.zc(2,3),10,35);//显示周长(a=2,b=3),位置(10,35)//显示面积值(a=2,b=3),位置(10,50)}}}class Re{privateintw,h;public Re(){w=0;h=0;}//定义周长计算方法zc()publicintmj(inta,int b){return a*b;}}例4:编写程序:1.创建一个类Circle,添加静态属性r(成员变量),并定义一个常量PI=3.1422.在类Circle中添加两种方法,分别计算周长和面积3.编写主类C3,利用类Circle输出r=2时圆的周长和面积例5:定义一个Person类,该类属性(变量)和方法如下:姓名:name 字符串类型;性别:sex 字符型;年龄:age 整型;2个构造方法:1个是默认的构造方法(由系统完成),另一个可通过参数赋值;将该3个变量转化成字符串便于显示输出的方法:toString(该名称可自定义)创建主类,通过Person类创建对象,显示输出该对象的各种属性。

class Person{String name;char sex;int age;public Person(String s,charc,int i){name=s;sex=c;age=i;}public String toString(){String s="姓名:"+name+" 性别:"+sex+" 年龄:"+age;//返回s的值}}public class T1{public static void main(String args[]){Person p1=new Person("张三",'男',20);//定义对象p2,各个参数分别为:李四,女,28 p1.sex='女'; //将p1的sex属性改为女System.out.println(p1.toString());//输出p1的各个属性//将p2的的age改为33//输出p2的各个属性}}作业四成员变量和成员方法的设计内容:1、成员变量:声明、定义使用和封装2、成员方法:☆设计、调用3、OOP编程的思想1)理解主类的编写2)调用其他类的方法3)在编程过程中体会oop的思想(并熟悉定义类、创建对象、对象属性的使用)内容:一、成员变量深刻理解变量的使用范围例1:指出下面程序中的错误,并修改使其正确运行。

class Class2{privateint y;private void show(){system.out.println(“show method is private”);}public void usesecret(){show();}}public class Class1{public static void main(String args[]){Class1 Ob=new Class1();esecret();Ob.show();}}指出错误的原因。

二、成员方法的声名和设计1、成员方法的声明一般放在成员变量的声明之后,声明语句的格式和顺序如下:[ public][private][protected ][ package ] //访问控制修饰符[ static][final][ abstract ] [ native] [synchronized] 返回值类型方法名(参数表)[ throws 异常类型]例2:定义student类,其中包括四个私有变量(name,age,sex,score)、一个构造方法和show()方法。

各成员的含义如下:*变量name为字符串类型String,用于存储学生的姓名。

*变量age为int类型,用于存储学生的年龄。

*变量sex为boolean类型,用于存储学生的性别,男生为false,女生为true。

*变量score为double类型,用于存储学生的成绩。

*构造方法包括四个参数,用于为变量(name,age,sex和score)赋值。

*show()方法无参数,用于输出变量(name,age,sex和score)的值。

定义主类来调用student类中的构造方法和成员方法。

例3:该例设计了两个类,用主类M1控制DrawShape类实例对象a的行为。

类DrawShape 被设计成一个黑箱子,能画出固定大小的矩形和椭圆,那么画什么图形,在哪里画则由外部消息控制。

外部消息通过两个方法setPos()和setShape()改变了对象的位置和形状数据。

Draw方法根据对象的当前状态画出图形。

主类中创建了DrawShape的实例对象a。

将图形的位置和形状的消息通过方法传递给a,最后由a的draw方法画出图形。

importjava.awt.*;importjava.applet.Applet;class Drawshape{ //画图形的类privateintx,y,shape;public void setPos(intxpos,intypos){ //改变了对象位置的方法(方法体自己完成)}public void setShape(int choice){ //改变了对象形状数据的方法(方法体自己完成)}public void draw(Graphics g){if(shape==1)g.drawRect(x,y,60,60);else if(shape==2)g.drawOval(x,y,60,60);elseg.drawString("形状参数不对",60,60);}}public class M1 extends Applet{Drawshape a=new Drawshape();public void paint(Graphics g){a.setPos(40,20);a.setShape(1); //调用类Drawshape中的方法将图形参数设置为1a.draw(g);a.setPos(200,60);//将图形参数设置为2或3……a.draw(g); //调用画出图形的方法}}例4:对上个例子的改造:通过文本框实现图形参数的输入。

importjava.awt.*;importjava.awt.event.*;importjava.applet.Applet;class Drawshape{ //画图形的类privateintx,y,shape;//改变了对象位置的方法public void setPos(intxpos,intypos){x=xpos;y=ypos;}public void setShape(int choice){ //改变了对象形状参数的方法shape=choice;}public void draw(Graphics g){ //画出该图形的方法if(shape==1)g.drawRect(x,y,60,60);else if(shape==2)g.drawOval(x,y,60,60);elseg.drawString("形状参数不对",60,60); } }public class M2 extends Applet implements ActionListener{ //主类int s; //定义图形参数s//按照运行结果定义按钮和文本框对象//使用类Drawshape定义对象apublic void init(){ //初始化方法//将定义好的按钮加入//将定义好文本框加入button1.addActionListener(this);}public void actionPerformed(ActionEvent e){//将文本框中的数据转换成int型数据,并赋给srepaint(); //重画}public void paint(Graphics g){ //绘图方法(系统的)a.setPos(40,20);//调用改变图形参数的方法将s输入g.drawString(""+s,20,20); //在20,20位置上显示s值//调用画出图形的方法}}2、成员方法的调用例5:模拟小车运行1)建立小车类Car,拥有属性:位置、前进方法、后退方法、查询位置方法2)建立主类,调用前进和后退的方法模拟小车运行,最后查询小车的位置importjava.awt.*;importjava.applet.Applet;public class UseCar extends Applet{public void paint(Graphics g){//定义小车类对象mycarg.drawString("起始位置"+mycar.getwz(),10,20);g.drawString("前进100",10,35);mycar.qj(100);g.drawString("后退30",10,50);mycar.ht(30);g.drawString("当前位置"+mycar.getwz(),10,65);}}class Car{privateintwz;public Car(){wz=0;}//定义前进的方法//定义后退的方法//定义查询位置的方法}例6:接前一个例子用画图来表示车的位置(运行结果见下页)1)添加一个用于画出小车的类Hcar,属性:位置、设置位置的方法、画出小车的方法2)在主类中调用Hcar类画出小车在改变位置时不同的位置。

合集下载

面向对象程序设计作业(带答案)

面向对象程序设计作业(带答案)

人工智能学院面向对象程序设计作业Java语言基础年级专业 2019级软件工程专业学号姓名成绩一、选择题1.下列标识符中,正确的是(C)。

A.class B. 123_rr C. _lei D. test&122.下列( D )的选项可以正确表示八进制8。

A.0x8 B. 0x10 C.08 D. 0103. 以下哪个是十进制数17对应的十六进制正确表示?( D )A. 017B. x11C. 0x17D. 0X114.在Java中,不属于整数类型的是( A )。

A.double B. long C. int D. byte5.在Java中,关于标识符的说明,不正确的是(D )。

A.严格区分大小写;B.长度不限;C.不能用关键字和保留字作为标识符;D.可以包含空格6.给出下面代码的输出结果。

( D )public class ByteAdd {public static void main(String args[ ]){byte a=10;byte b=100;byte c;c=a+b;System.out.println(a+"+"+b+"="+c);} }A.输出零B.输出 10+100=110C. 编译时正确,运行时将产生错误;D.编译时将产生错误;二、程序阅读题1. 对于以下程序,运行“java Abs”,将得到什么打印结果?public class Abs{static int a=0x11;static int b=0011;static int c='\u0011';static int d=011;public static void main(String args[]){ System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);}}179179类和对象年级专业 2019级软件工程专业学号姓名成绩一、选择题1. 为了在当前程序中使用ch4中的类,可以使用的语句是( A )。

《面向对象分析与设计》在线作业

《面向对象分析与设计》在线作业

《面向对象分析与设计》在线作业一、单选题 (共50题,每题1分,共50分)1、面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。

A.SmalltalkB.EiffelC.C++D.Java2、UML的全称是 (B )。

A.Unify Modeling LanguagB.Unified Modeling LanguageC.Unified Modem LanguageD.Unified Making Language3、在根据不同的机器选择设备驱动程序的案例中,以下叙述不准确的是(D)。

A.可以使用switch语句选择驱动程序B.可以使用继承来实现选择驱动程序,但它可能会产生类组合爆炸问题C.可以选择抽象工厂模式实现,且能避免组合爆炸问题D.使用继承的解决方案要比switch语句有更多的优势4、下列关于面向对象方法中描述中错误的是(C)。

A.使用设计模式有助于在软件开发中应用面向对象技术B.选择面向对象程序设计语言时需要考虑开发人员对其的熟悉程度C.UML作为一种可视化建模语言需要与RUP开发过程同时使用D.目前在软件生命周期的分析、设计、实现和测试中均可以应用面向对象方法5、类图应该画在Rose的哪种(B)视图中。

e Case ViewB.Logic Viewponent ViewD.Deployment View6、(B)是一个类对象所可能经历的所有历程的模型图。

A.模型管理视图B.状态机视图C.动态视图D.静态视图7、以下对部署图说法不正确的是(A)。

A.部署图有主要建模元素是构件B.使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件的配置的部署方式C.从部署图中,可以了解到软件与硬件之间物理关系及处理节点的组件分布情况D.部署图是用来显示系统中软件和硬件的物理结构8、下面不是活动图中的基本元素的是(D)。

(0837)《面向对象程序设计》网上作业题及答案

(0837)《面向对象程序设计》网上作业题及答案

(0837)《面向对象程序设计》网上作业题及答案1:[单选题]执行下列语句后,变量x的值是:()int x = 7, y = 10;switch (x / y) {case 0:x++;case 7:x *= y;case 14:x += y;break;default:x %= y;}A:8B:70C:80D:90参考答案:D2:[单选题]以下由for语句构成的循环的执行次数是:()for (int i=0; i<=0; i=i) ;A:有语法错,不能执行B:一次也不执行C:执行1次D:无限次参考答案:D3:[单选题]设有定义int i=7;char ch='b'; 下面赋值语句中不正确是:()A:i = ch;B:ch = i;C:ch = (char)i;D:i = (int)ch;参考答案:B4:[单选题]设有定义int i=80, j=7; double d=80.7;下列语句中正确的赋值语句是:()A:i = d;B:i = (int)d + j;C:j = (int)i - d;D:i + j = (int)d;参考答案:B5:[单选题]以下关于Java语言的叙述错误的是:()A:Java是最纯粹的面向对象语言,对面向对象方法学的支持也最全面B:Java是解释执行的语言,由Java解释器负责将Java源文件解释为机器码执行C:Java是平台无关的,即Java程序不用修改就可以在不同类型的计算机平台上运行D:Java提供了大量功能丰富的可重用类库,有效减少了编程的工作量参考答案:B6:[单选题]下列选项中,用于声明实现一个接口关键字是:()A:interfaceB:implementsC:importD:abstract参考答案:B7:[单选题]Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序“一次编写,到处运行”的特点:()A:多线程B:与平台无关C:面向对象D:分布式参考答案:B8:[单选题]下列不属于Java语言关键字的是:()A:repeatB:tryC:breakD:new参考答案:A9:[单选题]下列字符序列中可以作为Java语言标识符的是:()A:trueB:123_xyzC:x.yD:_x123参考答案:D10:[单选题]下列字符序列中不能作为Java语言标识符的是:()A:abc_123B:圆周率PIC:falseD:_123abc参考答案:C1:[单选题]下列语句序列给出了k,myArr和myMethod()的声明。

面向对象软件工程—课后作业

面向对象软件工程—课后作业

面向对象软件工程第八章8.1.什么是面向对象方法学,它有哪些优点?答:面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现揭发的解空间在结构上尽可能一致的方法学科。

优点:1、与人类的习惯的思维方法一致;2、稳定性好;3、可重用性好;4、适合用于大型软件产品;5、所开发的软件有较好的可维护性;6、面向对象的软件比较容易修改;7、面向对象软件比较容易理解;8、易于测试和调式。

8.2.什么是对象,它与传统的数据有何异同?答:对象是对问题域中某个实体的抽象。

相对于传统数据的静态被处理,对象既有静态的属性,又有动态的行为,是进行处理的主体。

8.3.什么是类?答:类是对具有相同数据和相同操作的一组相似对象的定义。

8.4.什么是继承?答:继承是指能够直接获得已有事物的性质和特征,而不必重复定义他们。

8.5.什么是模型,开发软件为何要建模?答:所谓模型就是为了理解事物而对该事物做出的一种抽象,是对事物的一种无歧视定义的书面描述。

由于模型忽略了事物的非本质东西,因此模型比原始事物更容易操作。

对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了降低复杂性。

人的头脑每次只能出来少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。

8.6.什么是对象模型,建立对象模型时主要使用哪些图形符号,这些符号的含义是什么?答:对象模型表示静态的、结构化的系统性质,是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。

在UML中,用类图来建立对象模型,表示一个类及属于该类的对象。

8.7.什么是动态模型,建立动态模型时主要使用哪些图形符号,这些符号的含义是什么?答:动态模型时描述系统控制结构,即行为化的一种模型。

在UML中主要用状态图、交互图、活动图来建立动态模型。

python面向对象练习题(打印版)

python面向对象练习题(打印版)

python面向对象练习题(打印版)# Python面向对象编程练习题面向对象编程(OOP)是Python中的核心概念之一。

通过以下练习题,你可以加深对Python中类和对象的理解。

## 练习一:定义一个类1. 定义一个名为`Person`的类,包含以下属性:- `name`:姓名- `age`:年龄2. 为`Person`类添加一个初始化方法`__init__`,用于设置姓名和年龄。

3. 添加一个方法`greet`,用于打印问候语。

```pythonclass Person:def __init__(self, name, age): = nameself.age = agedef greet(self):print(f"Hello, my name is {} and I am{self.age} years old.")```## 练习二:继承和多态1. 定义一个`Student`类,继承自`Person`类。

2. 添加一个属性`student_id`来表示学生的学号。

3. 重写`greet`方法,使其打印出学生特有的问候语。

```pythonclass Student(Person):def __init__(self, name, age, student_id):super().__init__(name, age)self.student_id = student_iddef greet(self):print(f"Hello, I am {}, a student of age {self.age} with ID {self.student_id}.")```## 练习三:封装1. 创建一个名为`Car`的类。

2. 包含属性:`make`(制造商),`model`(型号),`year`(年份)。

3. 为这些属性提供私有化处理,即在属性名前加上双下划线`__`。

面向对象设计及UML语言作业答案

面向对象设计及UML语言作业答案

类图作业3
3、画出相应的UML 类图。 神舟六号飞船是神舟 飞船系列的一种,它 由轨道舱、返回舱、 推进舱和逃逸救生塔 等组成。航天员可以 在返回舱内驾驶飞船, 轨道舱则是航天员工 作和休息的场所。在 紧急情况下,可以利 用逃逸救生塔逃生。 在飞船两侧有多个太 阳能电池翼,可以为 飞船提供电能。
神舟飞船
U s e r Ap p s
Linux Server
A c c o u nt i n g C o m p on e n t
User Service
Manager Service
实现的,它有两个接口UserService和ManagerService。 构件UserApps是在一个Windows2000的机器上运行的, 它通过接口UserService来访问AccountingComponent。 这两台机器运行在一个TCP/IP局域网上。
Windows20ห้องสมุดไป่ตู้0
<<TCP/IP>>
神舟六号飞船
太阳能电池翼 1..n
+提 供 电 能 ( )
轨道舱
+工 作 () +休 息 ()
返回舱
+驾 驶 飞 船 ()
逃逸救生塔
+逃 生 ()
推进舱
航天员
包图作业
1、画出UML包图。 要求如下:主要存在两 个包,分别为财务子系统 和数据库子系统。数据库 子系统包中又包括数据库 操作,数据库接口以及 oracle接口和sybase接口包 四个包。财务子系统依赖 于数据库操作,数据库操 作依赖于数据库接口。 oracle接口和sybase接口都 是数据库接口。
画出电话机的状态图。

面向对象程序设计pta作业题目集1~3总结

⾯向对象程序设计pta作业题⽬集1~3总结前⾔:第⼀次作业共⼋道,量多,但知识⾯不⼴,设计到的内容并不多,主要是熟悉java的基本语法。

第⼆次作业共五道,与c语⾔的编写基本⼀致,本题主要是算法问题,如何去计算⽇期。

第三次作业共三道,题少,覆盖的知识⾯⼴,不过最后⼀题是真的难,想了好久,⼩猪我还是写不出来,只是过了两个测试点。

题⽬序列:7-6 使⽤⼀维数组求平均值7-7 对多个整数进⾏排序7-8 判断三⾓形类型7-4 求下⼀天7-5 求前N天7-2 定义⽇期类7-3 ⼀元多项式求导(类设计)7-6 使⽤⼀维数组求平均值本题⽬要求使⽤⼀维数组,存储5个整数,输出5个整数的平均值输⼊格式:输⼊⼀组整数。

输出格式:对每⼀组输⼊,在⼀⾏中输出平均值。

输⼊样例:1 2 3 4 5输出样例:在这⾥给出相应的输出。

例如:3.0题⽬分析:本题较为简单,需要注意的是输出结果有⼩数,那么定义的时候就不能⽤int整形数据类型。

⽽是float,或者double。

接下来是我的代码import java.util.Scanner;public class Main{public static void main(String args[]){int x,i;float aver=0;Scanner scan=new Scanner(System.in);for(i=0;i<5;i++){x=scan. nextInt();aver=aver+x;}System.out.println(Math.round(aver/5.0));}}7-7 对多个整数进⾏排序先从键盘输⼊⼀个整数n,n代表需要排序的整数数量,然后再从键盘输⼊n个整数,对这些数从⼩到⼤排序并输出。

输⼊格式:先从键盘输⼊⼀个整数n,之后回车再从键盘输⼊n个整数,整数之间⽤⼀个或多个空格分隔输出格式:按如下⽰例输出排序后的数据:The sorted numbers are:排序后的n个数,每个输出的整数之后有⼀个空格作为分隔符输⼊样例:在这⾥给出⼀组输⼊。

面向对象分析与设计第四章作业

1.论述类与对象之间的关系以及关联与链之间的关系。

这四者之间的联系。

答:一.类与对象之间的关系:a.类提供了对具有相同属性和操作的一组对象的抽象描述,对象是类的实例。

b.在面向对象方法中,通过对具有相同的属性的对象的抽象,构造出类,而使用类构造出系统模型。

在系统运行时,又有类去创建出对象。

C.一个类的所有对象具有相同属性。

二.关联与链之间的关系:a. 链是对象间的关系,关联时类之间的关系,也就是说,链是关联的实例化。

B.两个存在的有关联关系的类被实例化后,类之间的关联关系就实例化成链。

三.四者之间的关系:链是对象间的关系,关联是类之间的关系。

对象是类的实例化,链是关联的实例化。

类类对象对象实例化实例关联链2.在什么情况下使用组合关系进行建模?答:当一部分类的对象在一个时刻至多属于一个整体类的对象,且整体类的对象管理他的部分类的对象时,用组合关系进行建模。

3.总结继承关系的用途答:a.一般类的定义中存在没有实现也不打算在该类中实现的操作,需要子类进行继承实现该操作。

B.有超过两个特殊类时,使用继承关系进行简化。

从而不必重复的进行定义。

C.继承关系有助于软件复用。

5.举例说明类继承结构中的重载与多态。

答说明:图1:股东类和职员类继承了公司人员类,个人收入可以定义一个虚函数,没有实现操作,下边的股份和工资为具体操作,这个就是类继承中的多态。

图2:重载,长方形公司人员姓名个人收入股东 职员 股份 。

工资************面积长方形 圆形 长:a 宽:b半径 R求面积的函数f1(int a,int b),圆形求面积函数f1(int R)。

6.面包是由面包片组成的。

面包与面包片之间的关系是聚合还是组合。

答:组合,生命期相同。

面包不存在,面包片也不会存在。

面包片是面包的一部分。

只能属于一个面包所有。

7.一本书含有若干章,一章有若干节,一节有一些片段和图组成,一个段落由一些句子组成。

请给出一个描述上述事物以及它们之间关系的类图。

面向对象程序设计课程作业

面向对象程序设计课程作业一、单选题1. (5分)调用一成员函数时,使用动态联编的情况是()A. 通过对象调用一虚函数B. 通过指针或引用调用一虚函数C. 通过对象调用静态函数D. 通过指针或引用调用静态函数得分:0知识点:第6章收起解析.答案B.解析第6章6.2节..2. (5分)下列选项中,可以作为函数重载的条件之一的是():A. 不同的形参名称B. 不同的返回值C. 不同的函数名D. 不同的参数个数得分:0知识点:第2章收起解析.答案D.解析第2章2.5节..3. (5分)如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是()A. 一元运算符B. 二元运算符C. 选项A和选项B都可能D. 重载错误得分:0知识点:第3章收起解析.答案D.解析第3章3.5节..4. (5分)有以下程序main() { int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]); } 程序的执行后的输出结果是()A. 7 5 3B. 3 5 7C. 3 6 9D. 7 5 1得分:0知识点:第2章收起解析.答案B.解析第2章2.2节..5. (5分)若要求从键盘读入含有空格字符的字符串,应使用函数()A. getc()B. gets()C. getchar()D. scanf()得分:0知识点:第2章收起解析.答案B.解析第2章2.5节..6. (5分)可以用P.a的形式访问派生类对象p的基类成员a,其中a是A. 私有继承的公有成员B. 共有继承的私有成员C. 公有继承的保护成员D. 公有继承的公有成员得分:0知识点:第4章收起解析.答案D.解析第4章4.1节..7. (5分)解决二义性问题的方法有A. 只能使用作用域分辨操作符B. 使用作用域分辨操作符或赋值兼容规则C. 使用作用域分辨操作符或虚基类D. 使用虚基类或赋值兼容规则得分:0知识点:第6章收起解析.答案C.解析第6章6.2节..8. (5分)以下有关继承正确的是A. 构造函数和析构函数都能被继承B. 派生类是基类的组合C. 派生类对象除了能访问自己的成员外,不能访问基类中的所有成员D. 基类的公有成员一定能被派生类对象访问得分:0知识点:第4章收起解析.答案D.解析第4章4.2节..9. (5分)假定类B是在类A基础上扩充而得到的,那么就称A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类得分:0知识点:第3章收起解析.答案B.解析第3章3.2节..10. (5分)如果类A被说明成类B的友元,则()A. 类A的成员即类B的成员B. 类B的成员即类A的成员C. 类A的成员函数不得访问类B的成员D. 类B不一定是类A的友元得分:0知识点:第5章收起解析.答案D.解析第5章5.2节..11. (5分)下列有关继承和派生的叙述中,正确的是()A. 派生类不能访问基类的保护成员B. 作为虚基类的类不能被实例化C. 派生类应当向基类的构造函数传递参数D. 虚函数必须在派生类中重新实现得分:0知识点:第3章收起解析.答案C.解析第3章3.1节..12. (5分)下面是一个模板声明的开始部分:templute double __ 由此可知()A. 这可能是一个函数模板的声明B. 这可能是一个类模板的声明C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明D. 这肯定是一个错误的模板声明得分:0知识点:第7章收起解析.答案A.解析第7章7.2节..13. (5分)以下叙述中正确的是()A. 预处理命令行必须位于C源程序的起始位置B. 在C语言中,预处理命令行都以“#”开头C. 每个C程序必须在开头包括预处理命令行:#includeD. C语言的预处理不能实现宏定义和条件编译的功能得分:0知识点:第2章收起解析.答案C.解析第2章2.4节..14. (5分)下列关于模板的说法正确的是()A. 模板的实参在任何时候都可以省略B. 类模板与模板库所指的是同一概念C. 类模板的参数必须是虚拟类型的D. 类模板中的成员函数全部都是模板函数得分:0知识点:第7章收起解析.答案D.解析第7章7.2节..15. (5分)在文件包含命令中,被包含文件的扩展名A. 必须是.hB. 不能是.hC. 可以是.h或.cppD. 必须是.cpp得分:0知识点:第1章收起解析.答案C.解析第1章1.1节..二、判断1. (5分)当函数的返回值是数组类型的,传递的是数组第一个元素的地址.得分:0知识点:第2章收起解析.答案错误.解析第2章2.5节..2. (5分)数据成员在初始化列表中的书写顺序无关紧要,但初始化列表对数据成员初始化的执行次序就是类中定义数据成员的次序。

面向对象第四次作业答案

面向对象第四次作业答案面向对象程序设计技术作业四一、填空题1、在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的构造函数使其初始化。

2、当一个类对象被撤消时将自动调用该类的析构函数。

3、对基类数据成员的初始化是通过执行派生类构造函数中的初始化表来实现的。

4、对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的赋值语句实现。

5、在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先基类成员,后类对象成员,最后为非对象成员。

6、当撤消一个含有基类和类对象成员的派生类对象时,将首先完成派生类本身的析构函数定义体的执行,接着完成类对象成员的析构函数定义体的执行,最后完成基类成员的析构函数定义体的执行。

7、设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的析构函数。

8、当一个类对象离开它的作用域时,系统将自动调用该类的析构函数。

9、假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为N次。

10、假定AB为一个类,则执行”AB a[10];”语句时,系统自动调用该类构造函数的次数为10次。

11、假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为空构造函数。

12、假定用户没有给一个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为空构造函数。

13、若需要把一个函数”void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:friend void F();。

14、若需要把一个类AB定义为一个类CD的友元类,则应在类CD的定义中加入一条语句:feiend class AB;。

15、假定一个类AB中有一个静态整型成员bb,在类外为它进行定义并初始化为0时,所使用的语句为AB:bb=0;。

16、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为AB:bb 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档