面向对象方法学试题及答案
面向对象试题(标准答案)
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() 100B() 200B.A() 200B() 200C.B() 200A() 100D.B() 200A() 2002.下列说法正确的是(D )A.所有类都必须定义构造方法(构造器)B.构造方法必须初始化类的所有数据成员C.子类定义了构造器后,不再调用父类的构造器D.构造方法可以访问类的非静态成员3.在Java中,哪个关键字使类不能派生子类?, (A )A : finalB : publicC : privateD : native4.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()5.下列哪些叙述是正确的(CD )A.在一个类中,方法不能与类名相同B.a bstract 可以修饰属性、方法和类C.实例方法可直接调用本类的static方法和非static方法D.static方法不能调用非static方法6.以下说法正确的是(ABC)A.子类不能继承父类的构造方法B.子类的构造方法可以访问父类的构造方法C.子类不可直接访问父类的私有属性D.子类可以重写父类的所有方法7.分析选项中关于Java中this关键字的说法正确的是( A )A.this关键字是在对象内部指代自身的引用B.this关键字可以在类中的任何位置使用C.this关键字和类关联,而不是和特定的对象关联D.同一个类的不同对象共用一个this8 下列关于继承的说法哪个是正确的?( B )A.子类只继承父类public方法和属性B.子类继承父类的非私有属性和方法C.子类只继承父类的方法,而不继承父类的属性D.子类将继承父类的所有属性和方法9.在Java中,关于final关键字的说法正确的是(AC )A.final修饰的变量,一旦赋值就不能被更改B.final修饰的类只能被一个子类继承C.final修饰的方法,不能在子类中被覆盖D.final修饰的方法,不能被子类继承10. String s=new String(“xyz”)创建了几个对象(C);A. 0B. 1C. 2D. 311.下列语句的序列执行后,k的值是( B )int m=3,n=6,k=0;While((m++)<(--n))++k;A.0B.1C.2D.312.下列哪一项不是面向对象的典型特征(D )A.封装 B.继承C. 多态D.抽象13.(多选)在java中,关于构造方法,下列说法正确的是(ABD )A.构造方法的名称必须与类名相同B.构造方法可以带参数C.构造方法不可以重载D.构造方法绝对不能有返回值14.下面关于变量的说法正确的是(BC )A.实例变量可以通过类名直接调用B.类变量可以通过类名直接调用C. Java中的参数传递都是值传递D. 在不同的作用域不能定义相同的变量15.下列代码有编译错误的是第(C )行1)public class Test{2)public static void main(String[] args){3)int[] arr1 = new int[12];4)char[] arr2 = new char[];5)int[] arr3 = {};6)Object[] obj = new Object[4];7)Object obj1 = new object[9];8)}9)}A.5)B.5) 7)C.4) 7)D.4)16.下列代码的运行结果是(A )public class Test{private int num;private static Test test;public Test(int num){this.num = ++ num;}static{int num = 16;test = new Test(num);++ test.num;}public static void main(String[] args){test = new Test(13);System.out.println(test.num);}}A.14B.15C.16D.1717.仔细分析下列代码,请指出错误的行(D )。
面向对象测试题及答案
面向对象测试题及答案一、选择题(每题2分,共20分)1. 面向对象编程(OOP)的核心概念不包括以下哪一项?A. 类B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. typeC. structD. interface3. 下列哪个选项不是Java中访问控制的关键字?A. publicB. privateC. protectedD. global4. 封装是面向对象编程的一个重要特性,它主要指的是:A. 将数据和操作数据的方法组合在一起B. 将所有数据都设为公开访问C. 只允许通过特定的方法访问数据D. 将数据和方法分离5. 在Java中,以下哪个不是构造方法的特点?A. 与类名相同B. 没有返回类型C. 可以重载D. 可以被继承6. 继承在面向对象编程中允许:A. 一个类只能继承一个类B. 一个类可以继承多个类C. 一个类可以继承多个接口D. 一个类可以同时继承多个类和接口7. 接口在Java中的主要作用是:A. 定义类B. 实现多继承C. 定义方法的实现D. 定义方法的签名8. 以下哪个是Java中实现多态的方式?A. 继承B. 接口C. 重载D. 重写9. 抽象类在Java中不能:A. 被实例化B. 包含抽象方法C. 包含具体方法D. 被继承10. 下列哪个不是Java集合框架中接口?A. ListB. SetC. MapD. Array二、简答题(每题5分,共30分)1. 简述面向对象编程的三大特性。
2. 解释什么是多态,并给出一个Java中多态的例子。
3. 什么是封装?封装在Java中是如何实现的?4. 什么是接口?接口和抽象类有什么区别?5. 什么是构造方法?构造方法的作用是什么?6. 什么是继承?继承在Java中是如何实现的?三、编程题(每题25分,共50分)1. 编写一个Java程序,定义一个名为`Car`的类,包含以下属性和方法:- 属性:品牌(String类型),颜色(String类型),速度(int 类型)- 方法:启动汽车(startCar),加速(accelerate),减速(decelerate)2. 在上述`Car`类的基础上,创建一个名为`ElectricCar`的子类,继承`Car`类,并添加一个额外的属性:电池电量(int类型),并重写`startCar`方法以显示电动汽车启动的信息。
面向对象基础测试题和答案
共40 道选择题,每题 2.5 分。
多选题有错则全错,全对才满分.面向对象部分测试题1. 下面描述函数重写错误的是 CA. 要有子类继承或实现B. 子类方法的权限必须大于等于父类的权限C. 父类中被private 权限修饰的方法可以被子类重写D. 子类重写接口中的抽象方法,子类的方法权限必须是public 的2. 关于封装下面介绍错误的是( D )。
A. 封装将变化隔离B. 封装提高重用性。
C. 封装安全性D. 只有被private 修饰才叫做封装3. 试图编译运行下面的代码会发生什么情况 Dpublic class MyClass{static int i;public static void main(String[] args){System.out.println(i);}}A. 错误,变量i 没有被初始化B. 输出nullC. 输出1D. 输出04. 在Java 中,下面对于构造函数的描述正确的是(D)。
A. 类必须显式定义构造函数B. 构造函数的返回类型是voidC. 构造函数和类有相同的名称,并且不能带任何参数D. 一个类可以定义多个构造函数5. 下面Java 代码的运行结果是( C )。
class Penguin {private String name=null; // 名字private int health=0; // 健康值private String sex=null; // 性别public void Penguin() { //是一般方法,不是构造方法health = 10;sex = " 雄";System.out.println(" 执行构造方法。
");}public void print() {System.out.println(" 企鹅的名字是" + name +" ,健康值是" + health + " ,性别是" + sex+ " 。
java面向对象试题及答案
JAVA面向对象一:填空1、_____ 是JVM自带的一个线程(自动运行着的程序),用于回收没有任何引用所指向的对象。
2、_____空间用于存储使用new关键字所创建的对象;_____空间用于存储程序运行时在方法中声明的所有的局部变量;_____用于存放类的信息(包括方法),方法有_____份。
3、面向对象三大特征:_____,_____,_____.4、下面是一个类的定义,请将其补充完整。
class _____ {String name;int age;Student( _____ s, int i) {name=s;age=i;}}5、Java 语言的接口是特殊的类,其中包含______常量和_______方法。
6.如果子类中的某个方法的名字、__________和参数列表与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。
7. Java 仅支持类间的单重继承,接口可以弥补这个缺陷,支持_____重继承.8. 接口中所有方法均为________和________的。
9. Java语言中,表示一个类不能再被继承的关键字是________。
10.Java语言中,表示一个类A继承自父类B,并实现接口C的语句是_________________。
11、以下代码的输出结果是________________。
int i=9;char c=’a’;char d=(char)(c+i);System.out.println(d);12.继承主要强调子类在父类的基础上取”长”补”短”,而______主要强调的是类与类之间的传输13、我们在java程序中,把关键字________加到方法名称的前面,来实现子类调用父类的方法14.java语言中,调用方法时,参数传递是_____调用,而不是地址调用15.接口是一种只含有抽象方法或______的一种特殊抽象类16.abstract方法_______(不能或能)与final并列修饰同一个类17.创建一个类就是创建一个新的数据类型,而类在java中属于_____数据类型。
面向对象期末考试题及答案
面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。
答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。
面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。
通过对象之间的交互来实现程序的功能。
2. 解释什么是多态性,并给出一个简单的例子。
答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
例如,在Java中,可以通过重载和重写来实现多态。
假设有一个动物类Animal,它有一个方法makeSound()。
然后有一个子类Dog,它重写了makeSound()方法。
当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。
3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。
三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。
uml《面向对象的分析与设计》考题与答案
uml《⾯向对象的分析与设计》考题与答案《⾯向对象的分析与设计》练习题⼀、选择题1.UML 语⾔不⽀持的建模⽅式有(D )。
A. 静态建模B.动态建模C. 模块化建模D. 功能建模2.⼀个设计得好的OO系统具有( B )。
A. 低内聚、低耦合的特征B.⾼内聚、低耦合的特征C. ⾼内聚、⾼耦合的特征D.低内聚、⾼耦合的特征3.下列不属于⾯向对象技术的基本特征的是(B)。
A. 封装性B. 模块性C. 多态性D. 继承性4. ⾯向对象程序设计将描述事物的数据与( C ) 封装在⼀起,作为⼀个相互依存、不可分割的整体来处理。
A. 信息B. 数据隐藏C. 对数据的操作D. 数据抽象5. 关于⾯向对象⽅法的优点,下列不正确的叙述是(C )。
A. 与⼈类习惯的思维⽅法⽐较⼀致B. 可重⽤性好C. 以数据操作为中⼼D.可维护性好6.⽤例之间的关系不包括以下哪种关系?DA.泛化B.包含C. 扩展D. 聚集和组合7.顺序图中不包括以下哪种元素?(A)A.⽤例B. 对象C. ⽣命线D. 消息8. ⽤例图中不包括以下哪种元素?(B)A. ⽤例B. 类C. 参与者D. 关联9. 继承机制的作⽤是( C )。
A. 信息隐藏B. 数据封装C. 派⽣新类D. 数据抽象10. ⾯向对象⽅法学中,对象之间仅能通过(C)相联系。
A. 类B.抽象C. 消息D. 封装11. 脚本与⽤例之间的关系类似与(A)之间的关系。
A. 对象与类B. 参与者与⽤例C. 顺序图和抽象类D. 消息和对象12. 下列元素中,(D )不属于消息的组成。
A. 提供服务的对象B. 服务C. 输⼊信息D. 事件13. (D )描述了⼀组交互对象间的动态协作关系,它表⽰完成某项⾏为的对象和这些对象之间传递消息的时间顺序。
A.对象图 B. 协作图 C. 状态图 D. 顺序图14. (D)是从⽤户使⽤系统的⾓度描述系统功能的图形表达⽅法。
A. 类图B. 对象图C. 序列图D. ⽤例图15. ( C ) 是表达系统的类及其相互联系的图⽰,它是⾯向对象设计的核⼼,建⽴状态图、协作图和其他图的基础。
面向对象 期末考试 答案
、填空(15分)1、类之间的静态联系称作关联。
・在实例化后,由类产生对象,链是关联的实例。
・在系统实现时,关联釆用对象的属性来实现。
2、用例图用于建立需求模型,描述用户的需求。
对象图是面向对象分析中的基本模型,属于静态结构模型。
3、顺序图(时序图)、通信图、活动图、状态图用于描述系统的行为方面的特征,属于动态结构模型。
4、时序图构成:参与者、相互协作的对象、对象的生命线、参与者与对象之间发送的消息、执行规约5、表示[可见性]属性名[:类型][=初始值]可见性分为+表示:(公有的)、#表示:(受保护的)、-表示:(私有的)、〜(包,只有在同一包中声明的类能够使用这一属性)。
二、名词解释(15分)1、面向对象方法:是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。
2、类:是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作务两个主要部分。
类的作用是用来创建对象,对象是类的一个实例。
3、抽象:指从事物中舍弃个别的、非本质的、与问题域无关的特征,而抽取共同的、本质特征的、相关的做法。
4、多态性:在具有继承关系的类层次结构中可以定义同名的操作或属性,但这些属性或操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。
(“同名不同参”或“同名不同类”)5、OOA模型:就是诵过面向对象的分析所律立的系统分析模型。
用况:一个用况是对参与者使用系统的一项功能的描述,是一组动作序列的描述,是一项请求与响应。
(三、简答(45分)1、继承和泛化关系特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。
一般类对特殊类的抽象关系叫泛化关系(简称泛化)。
2、聚合与组合有区别,请说明他们间的区别,并指出下图中哪图是聚合?聚合刻画了现实事物之间的构成关系,体现“整体——部分”关系。
而关联没有组成关系或拥有关系。
如例题中的c图3、简述下图中体现的面向对象的基本思想0■■半0.法律顾问汽车。
面向对象基础_参考题答案
⾯向对象基础_参考题答案⼀、【必做题】1.(1)定义⼀个⼈类Person:1)定义⼀个⽅法sayHello(),可以向对⽅发出问候语“hello,my name is XXX”2)有三个属性:名字、⾝⾼、体重(2)定义⼀个PersonCreate类:1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.742)分别调⽤对象的sayHello()⽅法。
(答案:Person.java、PersonCreate.java)2.(1)定义⼀个⼈类Person:1)定义⼀个⽅法sayHello(),可以向对⽅发出问候语“hello,my name is XXX”2)有三个属性:名字、⾝⾼、体重3)通过构造⽅法,分别给三个属性赋值(2)定义⼀个Constructor类:1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.742)分别调⽤对象的sayHello()⽅法。
(答案:Constructor.java、或者是Person3.java)3.(1)定义⼀个矩形类Rectangle:1)定义三个⽅法:getArea()求⾯积、getPer()求周长,showAll()分别在控制台输出长、宽、⾯积、周长。
2)有2个属性:长length、宽width3)通过构造⽅法Rectangle(int width, int length),分别给两个属性赋值(答案:Rectangle.java)4.定义⼀个点类Point,包含2个成员变量x、y分别表⽰x和y坐标,2个构造器Point()和Point(int x0,y0),以及⼀个movePoint(int dx,int dy)⽅法实现点的位置移动。
()public class Point {private int x0;private int y0;public Point(){}public Point(int x0,int y0){t his.x0=x0;this.y0=y0;}public void movePoint(int dx,int dy){t his.x0 = this.x0 + dx;t his.y0 = this.y0 + dy;}}5.编写⼀个程序,创建两个Point对象p1、p2,分别调研movePoint⽅法后,打印p1和p2的坐标。
Java 面向对象编程练习题及答案
Java 面向对象编程练习题及答案题目一:洗衣机类设计描述:设计一个洗衣机类,具有以下属性和方法:属性:- 品牌(brand):字符串类型,表示洗衣机的品牌- 容量(capacity):整型,表示洗衣机的容量(以公斤为单位)- 是否开机(isOn):布尔类型,表示洗衣机是否处于开机状态方法:- 开机(turnOn):将洗衣机的状态设置为开机- 关机(turnOff):将洗衣机的状态设置为关机- 洗衣服(washClothes):接收一个整型参数 clothesWeight,表示待洗衣物的重量(以公斤为单位)。
如果洗衣机处于开机状态,并且洗衣机容量足够洗这些衣物,则打印出洗衣机正在洗衣服;否则,打印出洗衣机无法洗衣物。
答案一:```javapublic class WashingMachine {private String brand;private int capacity;private boolean isOn;public WashingMachine(String brand, int capacity) { this.brand = brand;this.capacity = capacity;this.isOn = false;}public void turnOn() {this.isOn = true;}public void turnOff() {this.isOn = false;}public void washClothes(int clothesWeight) {if (isOn && clothesWeight <= capacity) {System.out.println("洗衣机正在洗衣服");} else {System.out.println("洗衣机无法洗衣物");}}}```题目二:学生类设计描述:设计一个学生类,具有以下属性和方法:属性:- 姓名(name):字符串类型,表示学生的姓名- 年龄(age):整型,表示学生的年龄- 成绩(score):整型,表示学生的成绩方法:- 构造方法(Constructor):接收姓名、年龄和成绩作为参数,创建一个学生对象- 获取姓名(getName):返回学生的姓名- 获取年龄(getAge):返回学生的年龄- 获取成绩(getScore):返回学生的成绩答案二:```javapublic class Student {private String name;private int age;private int score;public Student(String name, int age, int score) { = name;this.age = age;this.score = score;}public String getName() {return name;}public int getAge() {return age;}public int getScore() {return score;}}```题目三:图书馆管理系统设计描述:设计一个图书馆管理系统,包含图书(Book)、图书馆(Library)和借阅者(Borrower)三个类。
java面向对象试题及答案
java面向对象试题及答案1. 试题一题目:什么是面向对象编程?请简要描述面向对象编程的优势和特点。
答案:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,将程序中的数据和操作数据的方法进行了封装,使得程序更加模块化和易于理解。
面向对象编程的主要特点包括封装、继承和多态。
封装使得数据和对数据的操作集中在一个对象中,可以隐藏内部实现细节,提供公共的接口进行访问,增加了程序的安全性和灵活性。
继承允许新建的类继承已有类的属性和方法,通过扩展和重写已有类的功能,减少了代码的重复性,提高了代码的复用和可维护性。
多态允许不同的对象对相同的消息作出不同的响应,通过接口和抽象类的使用,实现了更加灵活和可扩展的程序设计。
面向对象编程的优势包括了代码的重用性、可维护性、可扩展性和灵活性。
通过封装和继承的应用,可以减少代码重复,提高开发效率,并且通过多态的应用,可以实现程序的灵活性,方便后续的扩展和修改。
2. 试题二题目:什么是类?请简要描述类的特点和组成部分。
答案:类是面向对象编程中的核心概念,是对一类具有相同属性和行为的对象进行抽象和封装的模板。
类是用来创建对象的蓝图,可以通过实例化类来创建对象。
类的特点包括了封装、继承和多态。
类通过封装将属性和方法进行了封装,提供了公共的接口与外部进行交互,隐藏了内部实现细节。
继承允许新建的类继承已有类的属性和方法,在原有基础上进行修改和扩展。
多态允许不同的对象对相同的消息作出不同的响应,实现了程序的灵活性和可扩展性。
类的组成部分包括了属性(Field)和方法(Method)。
属性(也称为成员变量)用于描述对象的状态,可以是基本类型或其他类的对象。
方法用于描述对象的行为,可以是处理属性的操作,也可以是其他业务逻辑的实现。
3. 试题三题目:请简要解释传值和传引用的区别,并用代码示例说明。
答案:传值和传引用是在方法调用时,参数传递的两种方式。
面向对象技术(答案)
●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。
(2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同正确答案:B【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。
●面向对象技术中,对象是类的实例。
对象有三种成份:____(3)____、属性和方法(或操作)。
(3) A. 标识B. 规则C. 封装D. 消息正确答案:A解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。
●在面向对象技术中,类属是一种__(1)__机制。
一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。
(1)A.包含多态B.参数多态C.过载多态D.强制多态(2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关(3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关解析:在面向对象技术中,对象在收到信息后要予以响应。
不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。
多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。
参数多态应用比较广泛,被称为最纯的多态。
这是因为同一对象、函数或过程能以一致的形式用于不同的类型。
包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。
过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。
即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。
强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。
第六章python面向对象-编程测试练习题及答案解析精选全文完整版
可编辑修改精选全文完整版第六章 python面向对象青少年编程知识练习题及答案解析一、单选题1、下列创建类,方法正确的是()A.Class food( ):B.Class Food():C.class Food()D.class Food():答案解析:D,创建类用class关键字,与类名中间隔一个空格,后面添加括号和冒号。
2、根据car()类创建实例对象,下列代码正确的是()A.Car=car()B.car=car()C.car=Car()D.Car=Car()答案解析:C,类名为大写Car(),对象名为小写的car。
3、在Car类中自定义speed方法,输出:行驶速度为60km/h,代码书写正确的是()A.B.C.D.答案解析:B,在类中定义方法,注意不要漏掉self和冒号。
4、以下代码创建了一个football对象:football=Ball(),调用football对象的play方法,下列选项正确的是()A.Football.play()B.football.Play()C.football.play()D.football.play答案解析:C,对象调用方法,对象名.方法名,不要忘记括号。
5、在Food类中创建eat方法,下列选项正确的是()A.Class Food():Def eat(self):B.class Food():def eat(self):C.class Food():def eat():D.class Food():def Eat(self)答案解析:B,创建类的关键字class,创建方法的关键字def。
6、以下代码创建了一个monkey对象:monkey=Animals(),调用monkey对象的name属性,下列选项正确的是()()D.monkey:name()答案解析:C,访问属性方法:对象名.属性名7、以传参的方式定义实例化方法时,参数之间用()符号进行分隔:A.分号;B.冒号:C.空格D.逗号,答案解析:D,参数属性之间用逗号分隔。
软件工程 第10章 面向对象的方法
第10章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.面向对象方法认为系统是由应用域的___对象___组成。
2.对象具有状态,描述对象的状态用它的_属性值_____。
3.对象的抽象是_类_____。
4.类之间有两种结构关系,它们是分类关系和__组装____关系。
5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有_继承性_____。
6.动态模型描述了系统的__动态行为____。
二、选择题1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( D)关系。
A.组装B.整体成员C.has aD.一般具体2.面向对象分析阶段建立的三个模型中,核心的模型是( C )模型。
A.功能B.动态C.对象D.分析3.对象模型的描述工具是( C)。
A.状态图B.数据流图C.对象图D.结构图4.在有多重继承的类层次结构中,它的类层次结构是(B )层次结构。
A.树型B.网状型C.环型D.星型5.描述类中对象的行为,反映了状态与事件关系的是( B )。
A.对象图B.状态图C.流程图D.结构图6.在确定属性时,所有( C)是候选的属性。
A.动词B.名词C.修饰性名词词组D.词组三、应用题1.建立窗口系统的对象模型。
问题陈述如下:窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。
2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。
答案:一、填空题1.对象2.属性值3.类4.组装5.继承性6.动态行为二、选择题1.D2.C3.C4.B5.B6.C三、应用题1.2.第10章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.对象2.类3.属性4.操作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.动作对象31.数据存储对象 32.重用性二、填空题1.对象具有封装性,实现了__数据与操作____的结合。
UML考试试题及答案3..
2008-2009第2学期《UML与面向对象方法学》复习题二、单选题1.( A )不是UML体系的组成部分。
A.应用领域B.规则C.基本构造块D.公共机制2.在UML中,有四种事物,下面哪个不是(B )。
A.结构事物B.静态事物C.分组事物D.注释事物3.以下(C )不是RUP中的优秀方法。
A.迭代的开发软件B.不断的验证软件质量C.配置管理与变更管理D.支持正向与逆向工程4.下面(D)属于UML中的动态视图。
A.类图B.用例图C.对象图D.状态图5.在UML中,()把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包括的活动,它能够明确地表示哪些活动是由哪些对象完成的。
AA.泳道B.同步条C.活动D.组合活动6.用例之间有几种不同的关系,下列哪个不是他们之间可能的关系()。
BA.include B.connect C.generalization D.extend7.event表示对一个在时间和空间上占据一定位置的有意义的事情的规格说明,下面哪个不是事件的类型()。
CA.信号B.调用事件C.源事件D.时间事件8.通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是UML中的类成员访问限定性()。
DA.public B.protected C.private D.friendly9.在UML中,类之间的关系有一种关系称为关联,其中多重性用来描述类之间的对应关系,下面哪个不是其中之一()。
AA.*....*B.0....* C.1....* D.0. (1)10.关于包的描述,不正确的是()。
BA.和其他建模元素一样,每个包必须有一个区别于其他包的名字B.export使一个包中的元素可以单向访问另一个包中的元素C.包的可见性分为public、protected、privateD.包中可以包含其他元素,比如类、接口、组件、用例等等11.Use Case用来描述系统在事件做出响应时所采取的行动。
c#面向对象试题及答案
一、选择题:1、下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型B.类是创建对象的模板C.类是抽象数据类型的实现D.类是具有共同行为的若干对象的统一描述体2、下列常量中,不是字符常量的是( B )。
A.'\n' B."y"C.'x' D.'\7'3、下列表达式中,其值为0的是( A )。
A.5/10 B.!0C.2>4?0:1 D.2&&2||04、下列关于数组维数的描述中,错误的是( C )。
A.定义数组时必须将每维的大小都明确指出B.二维数组是指该数组的维数为2C.数组的维数可以使用常量表达式D.数组元素个数等于该数组的各维大小的乘积5、下列关于字符数组的描述中,错误的是( D )。
A.字符数组中的每一个元素都是字符B.字符数组可以使用初始值表进行初始化C.字符数组可以存放字符串D.字符数组就是字符串6、已知:int a[5] = {1, 2, 3, 4}; 下列数组元素值为2的数组元素是( B )。
A.a[0] B.a[1]C.a[2] D.a[3]7、下列while循环语句的循环次数是( A )。
while(int i(0)) i--;A.0 B.1C.2 D.无限8、已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是( C )。
A.&(a+1) B.&(p+1)C.&p[2] D.*p++9、已知:int a=1,b=2,*p[2];下列表达式中正确的是( C )。
A.p=&a B.p=&bC.p[0]=&a,p[1]=&b D.p[ ]={&a,&b};10、当一个函数没有返回值时,该函数类型应说明为( A )。
A.void B.intC.无D.任意11、下列关于类的定义格式的描述中,错误的是( C )。
java面向对象试题及答案
java面向对象试题及答案一、单选题(每题2分,共10分)1. 在Java中,下列哪个关键字用于定义一个类?A. classB. interfaceC. structD. enum答案:A2. Java中,哪个关键字用于定义一个私有方法?A. privateB. publicC. protectedD. default答案:A3. 下列哪个选项不是Java中的访问修饰符?A. privateB. publicC. protectedD. static答案:D4. 在Java中,哪个关键字用于实现多态?A. abstractB. finalC. staticD. interface答案:A5. 在Java中,下列哪个关键字用于定义一个接口?A. classB. interfaceC. structD. enum答案:B二、多选题(每题3分,共15分)1. 在Java中,下列哪些关键字用于定义一个类的方法?A. publicB. privateC. protectedD. static答案:A, B, C, D2. 下列哪些关键字用于实现类的继承?A. extendsB. implementsC. abstractD. final答案:A3. 在Java中,下列哪些关键字用于定义类的成员变量?A. privateB. publicC. protectedD. static答案:A, B, C, D4. 下列哪些关键字用于定义类的构造方法?A. constructorB. thisC. newD. super答案:B, D5. 在Java中,下列哪些关键字用于定义接口的常量?A. privateB. publicC. staticD. final答案:B, C, D三、判断题(每题2分,共10分)1. Java中,一个类可以继承多个类。
(错误)2. Java中,接口可以继承接口。
(正确)3. Java中,一个类可以继承多个接口。
java面向对象期末试题及答案
java面向对象期末试题及答案一、选择题(共10题,每题2分,共20分)1. 下列选项中,不属于Java的基本数据类型的是:A) intB) doubleC) booleanD) String答案:D2. 下列选项中,哪个关键字表示一个类不能被继承:A) finalB) staticC) privateD) abstract答案:A3. 在Java中,抽象类的特点是:A) 可以直接实例化B) 可以包含具体方法C) 可以被继承D) 可以实现多重继承答案:C4. 下列选项中,哪个关键字表示一个方法可以被子类重写:A) staticB) finalC) privateD) abstract答案:D5. 在Java中,接口的特点是:A) 可以包含成员变量B) 可以被实例化C) 可以包含具体方法D) 可以被类直接继承答案:B6. 下列选项中,哪个关键字表示一个方法或类只能被同一个包内的其他类访问:A) protectedB) publicC) privateD) default答案:D7. 在Java中,多态的实现方式是通过:A) 继承B) 接口C) 抽象类D) 重载答案:A8. 下列选项中,哪个关键字表示一个方法可以在同一个类中多次定义,但参数列表必须不同:A) staticB) finalC) privateD) overloading答案:D9. 在Java中,使用关键字“this”表示的是:A) 调用当前对象的方法B) 调用父类的方法C) 调用子类的方法D) 调用类的静态方法答案:A10. 下列选项中,哪个关键字表示一个方法不能被子类重写:A) finalB) abstractC) privateD) protected答案:A二、填空题(共5题,每题4分,共20分)1. 在Java中,创建对象的关键字是________。
答案:new2. 在Java中,使用关键字________定义了一个类的成员变量只能被本类的方法访问。
第9章 面向对象方法学
第9章面向对象方法学一、填空题(10小题)1、对象具有状态,描述对象的状态用它的()。
答案:属性值2、类具有属性,描述类的属性用()。
答案:数据结构3、子类自动共享父类的属性和操作的机制称为()。
答案:继承4、封装性是指所有软件部件内部都有明确的()以及清楚的()。
每个软件部件都有友好的(),软件部件的()与()分离。
答案:范围、外部边界、界面接口、内部实现、外部可访问性5、结构化方法的本质是(),其()、可修改性和可重用性都比较差。
答案:功能分解、稳定性6、动态模型描述了系统的()。
答案:动态行为7、类具有属性,它是对象的()的抽象,用()来描述类的属性。
答案:状态、数据结构8、动态模型描述了系统的()结构。
答案:控制9、对象具有状态,对象用()来描述它的状态。
答案:数据值10、在C++和C中有一个()函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。
答案:main()二、单项选择题(20小题)1、在确定类时,所有()是候选的类。
A、名词B、形容词C、动词D、代词答案:A2、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个类获得其父类的全部描述(数据和操作)。
A、传递性B、继承性C、复用性D、并行性答案:B3、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组()和它可以执行的一组操作来定义。
A、服务B、参数C、属性D、调用答案:C4、面向对象开发方法子概念和表示上的一致性保证了分析和设计的()过渡。
A、困难B、不容易C、平滑D、顺序答案:C5、以下说法正确的是()。
A、组装结构可用来描述现实世界中的一般的抽象关系B、分类结构可用来描述现实世界中的类的组成的抽象关系C、面向对象的继承性是子类自动共享父类数据结构和方法的机制D、面向对象的唯一性是指将具有一致性的数据结构(属性)和行为(操作)的对象抽象成类答案:C6、与事件联系在一起的瞬时操作是()。
java面向对象试题及答案
java面向对象试题及答案# Java面向对象试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?- A. class- B. interface- C. enum- D. package答案:A2. 以下哪个是Java中的继承特性?- A. 一个类可以继承多个类- B. 类可以继承接口- C. 接口可以继承类- D. 接口可以继承多个接口答案:D3. 以下哪个是Java中封装的体现?- A. 使用public关键字- B. 使用private关键字- C. 使用static关键字- D. 使用final关键字答案:B4. 在Java中,哪个关键字用于实现多态?- A. abstract- B. final- C. override- D. implements答案:C5. 以下哪个是Java的构造方法的特点?- A. 可以有返回类型- B. 可以有多个同名的构造方法- C. 必须有返回类型- D. 必须与类名相同答案:D二、简答题1. 简述面向对象编程的三大特性,并给出Java中的例子。
面向对象编程的三大特性是封装、继承和多态。
- 封装:封装是将对象的实现细节隐藏起来,只暴露出一个可以被外界访问的接口。
例如,在Java中,可以通过使用private关键字来隐藏类的成员变量,只通过public方法来访问这些变量。
- 继承:继承允许新创建的类(子类)继承现有类(父类)的属性和方法。
例如,如果有一个`Animal`类,可以创建一个`Dog`类继承`Animal`类。
- 多态:多态允许同一个接口接受不同的数据类型。
在Java中,可以通过重写父类的方法来实现多态。
例如,`Animal`类有一个`makeSound()`方法,而`Dog`类可以重写这个方法来发出狗的叫声。
2. 解释Java中的接口和抽象类的区别。
接口和抽象类都是Java中实现抽象化的方式,但它们有以下区别: - 接口可以包含抽象方法和默认方法,但不能有具体实现。
软件设计师面向对象方法学(二)
[模拟] 软件设计师面向对象方法学(二)选择题第1题:在面向对象系统中,用______关系表示一个较大的“整体”类包含一个或多个较小的“部分”类。
A.泛化B.聚合C.概化D.合成参考答案:B面向对象分析与设计中的(2) 是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而(3) 是指子类应当可以替换父类并出现在父类能够出现的任何地方。
第2题:A.开-闭原则B.替换原则C.依赖原则D.单一职责原则参考答案:A第3题:A.开-闭原则B.替换原则C.依赖原则D.单一职责原则参考答案:B第4题:在选择某种面向对象语言进行软件开发时,不需要着重考虑的因素是,该语言______。
A.将来是否能够占据市场主导地位B.类库是否丰富C.开发环境是否成熟D.是否支持全局变量和全局函数的定义参考答案:D(5) 限制了创建类的实例数量,而(6) 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
第5题:A.命令模式(Command)B.适配器模式(Adapter)C.策略模式(Strategy)D.单例模式(Singleton)参考答案:D第6题:A.命令模式(command)B.适配器模式(Adapter)C.策略模式(Strategy)D.单例模式(Singleton)参考答案:B在UML的各种视图中,(7) 显示外部参与者观察到的系统功能;(8) 从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能;(9) 显示的是源代码以及实际执行代码的组织结构。
第7题:A.用例视图B.进程视图C.实现视图D.逻辑视图参考答案:A第8题:A.用例视图B.进程视图C.实现视图D.逻辑视图参考答案:D第9题:A.用例视图B.进程视图C.实现视图D.逻辑视图参考答案:C第10题:下面关于面向对象分析与面向对象设计的说法中,不正确的是______。
A.面向对象分析侧重于理解问题B.面向对象设计侧重于理解解决方案C.面向对象分析描述软件要做什么D.面向对象设计一般不关注技术和实现层面的细节参考答案:D在面向对象分析与设计中,(11) 是应用领域中的核心类,一般用于保存系统中的信息,以及提供针对这些信息的相关处理行为;(12) 是系统内对象和系统外参与者的联系媒介;(13) 主要是协调上述两种类对象之间的交互。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++程序设计试题(下)样卷(卷面50分)(考试用时100分钟)一、选择题(每题1分,共5分)1.设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是。
A.为屏幕显示和文件写入各自设计一个成员函数。
B.为屏幕显示和文件写入统一设计一个成员函数。
C.重载插入运算符(<<)。
D.重载提取运算符(>>)。
2.关于异常处理,那些说法是错误的。
A.在C++程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。
B.当抛出异常后,寻找匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(Stack Unwinding)。
C.当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。
D.catch子句实际是一个特殊的函数。
3.下列关于动态资源分配的说法中错误的是。
A.动态分配的资源不仅包括内存,还包括文件。
B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。
C.动态分配的资源通常要求在析构函数中释放。
D.对含有动态分配的数据成员的类对象应该采用深复制。
4.下列有关模板的描述那些是错误的。
A.模板把数据类型作为一个设计参数,称为参数化程序设计。
B.模板参数除模板类型参数外,还有非类型参数。
C.类模板与模板类是同一概念。
D.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。
5.关于多态,下面那些说法是正确的。
A.多态分静态的(编译时)和动态的(运行时)。
B.运行时的多态与类的层次结构有关。
C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。
D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。
二、填空题(每空0.5分,共5分)1.有标准字符串类string对象str,str1,str2。
对其字符元素的访问可用两种方式:str[i]和str.at(i)。
两者的区别是(1)。
str1+=str2 实现的运算是(2)。
str.substr(pos,length1) 实现的运算是(3)。
2.C/C++中的多维数组用的是一个(4)的定义,即多维数组的基本定义是(5)构成的数组,三维数组的元素是(6)。
3.单链表的结点包含两个域:(7)和(8)。
使用链表的最大的优点是(9),即使是动态数组也做不到这一点。
4.纯虚函数定义时在函数参数表后加=0,它表明程序员对函数体不定义,其本质是将指向函数体的指针定为(10)。
三、阅读程序段(每题4分,共16分)1.写出下面的程序输出的数据,这是什么图形?int main(){int a[10][11]={0,1},i,j;for(i=1;i<10;i++)for(j=1;j<=i+1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++){for(j=1;j<=i+1;j++) cout<<a[i][j]<<'\t';cout<<endl;}return 0;}2.写出下列程序的输出结果,并做简单的说明。
class Student{string coursename; //课程名int classhour; //学时int credit; //学分public:Student(){coursename="#";classhour=0;credit=0;}virtual void Calculate(){credit=classhour/16;}void SetCourse(string str,int hour){coursename=str;classhour=hour;}int GetHour(){return classhour;}void Print(){cout<<coursename<<'\t'<<classhour<<"学时"<<'\t'<<credit<<"学分"<<endl;}};class GradeStudent:public Student{public:GradeStudent(){};void Calculate(){SetCredit(GetHour()/20);}};int main(){Student s,*ps;GradeStudent g;s.SetCourse("英语",80);g.SetCourse("英语",80);ps=&s;ps->Calculate();ps->Print();ps=&g;ps->Calculate();ps->Print();return 0;}3.写出该程序的输出结果,并说明该类的定义中top和maxSize的意义。
template<typename T>class Stack{int top;T *elements;int maxSize;public:Stack(int=30);~Stack(){delete[] elements;}void Push(const T &data);T Pop();};template<typename T> Stack<T>::Stack(int maxs){maxSize=maxs;top=-1;elements=new T [maxSize];}template<typename T> void Stack<T>::Push(const T &data){elements[++top]=data;}template<typename T> T Stack<T>::Pop(){return elements[top--];}int main(){int i;char a[5]={'k','c','a','t','s'};Stack<char>cstack();for(i=0;i<5;i++) cstack.Push(a[i]);for(i=0;i<5;i++) cstack.Pop());return 0;}4.写出下列程序的输出结果,指出错误所在;将A的析构函数改为虚函数结果又如何?class A{int *p;public:A(){p=new int[3];cout<<”A().”;}~A(){delete[]p;cout<<”~A().\n”;}}class B:public A{int *q;public:B(){q=new int[256];cout<<”B(). ”;}~B(){delete[]q;cout<<”~B().”;}}int main(){int i;for(i=0;i<3;i++){A*r=new B; //重复创建动态对象delete r;//重复释放动态对象}}四、填空,完善程序(每空1.5分,共24分)1.对半查找递归算法,x为定值,算法作为升序有序表(ordered list)模板类的成员函数。
其中T为模板类型参数,sixe代表有序表中数组slist元素的个数。
小于比较运算符(<)在具体的类中重载。
template <typename T,int size> int Orderedlist<T,size>::Binarysearch(T & x,const int low,const int high){int mid=-1;if (low<=high){mid=(low+high)/2;if (slist[mid]<x) mid=Binarysearch(x, (1) );else if (x<slist[mid]) mid=Binarysearch(x, (2) );}return (3) ;}2.冒泡排序算法,作为Orderedlist<T,size>类的成员函数。
last 是有序表元素个数。
template <typename T,int size> void Orderedlist<T,size>::BubbleSort(){bool noswap; //交换标志int i,j;T temp;for (i=0;i<last;i++){noswap= (4) ;for (j= (5) ; (6) ; (7) ){ //从下往上冒泡 if (slist[j]<slist[j-1]){temp=slist[j];slist[j]=slist[j-1];slist[j-1]=temp;noswap= (8) ;}}if (noswap) break ;}}3.用虚函数来实现辛普生法求函数的定积分。
在梯形法中是用直线来代替曲边梯形的曲边,在辛普生法中是用抛物线来代替,得出的公式为(区间必须为偶数n 个相等区间)。
⎰--+++++++++∆≈ba n n n y y y y y y y y x dx x f )](2)(4[31)(2421310class Simpson{double Intevalue,a,b; //Intevalue 积分值,a 积分下限,b 积分上限 public :virtual double fun(double x)=0; //被积函数声明为纯虚函数Simpson(double ra=0,double rb=0){a=ra;b=rb;Intevalue=0;}void Integrate(){double dx;int i;dx=(b-a)/2000;Intevalue= (9) ;for(i=1;i<2000;i+=2) Intevalue+=4*fun( (10) );for(i=2;i<2000;i+=2) Intevalue+=2*fun( (10) );Intevalue*=dx/3;}void Print(){cout<<"积分值="<<Intevalue<<endl;}};class A:public Simpson{public:A(double ra,double rb):Simpson(ra,rb){};double fun(double x){ (11) ;} //以sin(x)作为被积函数};int main(){A a1(0.0,3.1415926535/2.0);Simpson *s=&a1;s->Integrate(); //动态s->Print();return 0;}4.单链表的结点采用类Node,以链表类List为友元类,List可直接访问Node 的私有成员。