面向对象实验题及答案(全)
面向对象试题(标准答案)

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 引用与函数重载
2A:引用作为函数的参数
下面的主函数需要调用函数 setdata,用于求 x 数组前 n 个元素的最大值、最小值、平均 值,编写函数 setdata,使得程序可以正确运行。
#include <iostream>
using namespace std;
#define N 20
3A:单文件编程
了解基于类的编程的基本框架。完成以下操作: (1) 启动 VC,新建操作台工程及源程序文件 (2) 将上述代码粘贴到该文件内。 (3) 查看“类视图”和“文件视图”中有哪些内容,查看相应文件夹中的文件名称 (4) 在类声明与 main 之间编写 CMyDate 的各个方法成员的代码 (5) 在类声明的前面添加#include 等项 (6) 运行程序,观察结果 (7) 为程序添加“星期几”的功能,相应地修改相关函数成员 (8) 运行程序,观察结果
添加了哪些内容。检查目前 CMyDate 类中有哪些成员。 (4) 以集成环境辅助方式为 CMyDate 类添加数据成员 m_year,观察“类视图”的变化。 (5) 以手工方式为 CMyDate 类添加数据成员 m_month,观察“类视图”的变化。 (6) 添加数据成员 m_day 和 m_week,方式自选。 (7) 以集成环境辅助方式添加公共的 Set 函数成员及 Display 函数成员,观察“类视图”以
};
void main() {
CMyDate d1(2049,10,1),d2(2001,1,1); d1.Display(); cout <<endl; d2.Display(); cout<<endl; d2.Set(2001,1,1); d2.Display(); cout<<endl; d2=d1; d2.Display(); cout<< endl; }
面向对象测试题及答案

面向对象测试题及答案一、选择题(每题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`方法以显示电动汽车启动的信息。
自测题-8(面向对象一)(答案)

自测题-8(面向对象一)(答案)C/C++测试题面向对象选择题:C++概述1、以下C++新增的关键字为。
A break B continue C stuctD inline //答案:D2、面向对象程序设计将数据与______放在一起,作为相互依存、不可分割的整体来处理。
A对数据的操作B信息C数据隐藏D数据抽象//答案:A3、面向对象程序设计优于传统的结构化程序设计,其优越性主要表现在,它有希望解决软件工程的两个主要问题:软件复杂性和______。
A 软件生产率的提高B 精化已有的代码C 共享代码D 编写可重用代码//答案:A4、面向对象系统的______是一种信息隐藏技术,目的在与将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需用设计者提供的协议命令对象去做即可。
A多态性B 封装性C继承性D复用性//答案:B5、______不是面向对象系统所包含的要素A重载B对象C 类D继承//答案:A6、关于C++与C语言的关系的描述中,______是错误的。
A C语言是C++的一个子集B C++与C语言是兼容的C C++对C语言进行了一些改进D C++与C语言都是面向对象的//答案:D7、下面关于对象概念的表述中,______是错误的。
A 对象就是C语言中的结构变量B 对象代表着正在创建的系统中的一个实体C 对象是一个状态和操作(或方法)的封装体D 对象之间的信息传递是通过信息进行的//答案:A8、下面关于类概念的表述中,______是错误的。
A 类是抽象数据类型的实现B 类是具有共同行为的若干对象的统一描述体C 类是创建对象的样板D 类就是C语言中的结构类型//答案:D9、下列关于C++类的描述中错误的是______。
A 类与类之间可以通过一些手段进行通信和联络 B 类用于描述事物的属性和对事物的操作C 类与类之间必须是平等关系,而不能组成层次关系D 类与类之间可以通过封装而具有明确的独立性//答案:C10、下列关键字中,_______既在C语言中使用,又在C++语言中使用 A inline B break C private D public //答案:B11、C++对C语言做了很多改进。
(完整版)c++面向对象程序设计试题和答案

系名___ ___ ___ ___班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密封线内不答题填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;_P1.show()______________//通过对象p1访问show函数__p->show()____________//通过指针p访问show函数}2、在C++类中可以包含__私有____________、___公有___________和__保护____________三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字___class__________来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_____抽象类___________。
5、C++类的组成包括数据成员和___成员函数___________,友元_不是____(是、不是)该类的成员函数。
6、友员函数是用关键字____friend________修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=__11________,j=_11_________。
8、 new的功能是_____动态申请内存空间_______________,delete的功能是___释放由new申请的空间_________________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是()。
(A)数据封装(B)继承(C)多态性(D)模板2、()是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
面向对象分析与设计练习题及参考答案

《面向对象分析与设计》练习题及参考答案一、思考题:1. How many phases are included in system development? (brief description)2. Describe a system and the components of a system model.3. What two key components distinguish an information system from an automated information system?4. What is systems analysis and design?5. Who are the six stakeholder groups in information systems?6. What are a system designer’s and system builder’s roles in information systems development?7. What is the system analyst role in systems development as it related to the other stakeholders?8. List the six steps of the general problem-solving approach.9. List two types of quality certification applicable to information systems.10. What are legacy systems? Name two types of problems encountered in legacy systems.11. What is ERP? What is electronic commerce?12. Differentiate between management information systems and decision support systems.13. What role dose a data warehouse play in a decision support system?14. List three focuses for an information systems.15. What is the role of the network in information systems?16. 面向过程的系统分析与设计存在的问题是什么?通过什么OO技术来解决?17. 请画图说明面向对象系统的基本构造。
java面向对象编程练习题及答案

java面向对象编程练习题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. structB. classC. interfaceD. enum2. Java中的继承是:A. 多重继承B. 单一继承C. 无继承D. 可选继承3. 以下哪个是Java中的访问修饰符?A. publicB. privateC. protectedD. 所有选项都是4. 以下哪个不是Java对象的三个基本特征?A. 封装B. 继承C. 多态D. 线程5. 以下哪个方法用于获取对象的内存地址?A. hashCode()B. equals()C. getClass()D. toString()二、简答题1. 解释Java中的封装是什么,并给出一个封装的例子。
2. 描述Java中的继承是如何工作的,并给出一个继承的例子。
3. 解释Java中的多态性,并给出一个多态性的例子。
三、编程题1. 创建一个名为`Car`的类,它具有以下属性:- 品牌(String)- 型号(String)- 年份(int)并为这些属性提供getter和setter方法。
2. 创建一个名为`ElectricCar`的类,它继承自`Car`类,并添加以下属性:- 电池电量(int)实现`ElectricCar`类,并重写`toString()`方法,以显示电动汽车的详细信息。
3. 创建一个名为`VehicleTest`的类,它包含`main`方法。
在`main`方法中,创建`Car`和`ElectricCar`的实例,并打印它们的状态。
四、代码分析题1. 阅读以下Java代码片段,并解释它的作用:```javapublic class Person {private String name;private int age;public Person(String name, int age) { = name;this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}```2. 阅读以下Java代码片段,并指出可能的错误:```javapublic class Animal {public void speak() {System.out.println("The animal makes a sound");}}public class Dog extends Animal {@Overridepublic void speak() {System.out.println("The dog barks");}}public class Cat extends Animal {@Overridepublic void speak() {System.out.println("The cat meows");}}public class TestAnimals {public static void main(String[] args) {Animal myDog = new Dog();Animal myCat = new Cat();myDog.speak();myCat.speak();}}```五、论述题1. 论述Java面向对象编程中接口与抽象类的区别,并给出使用场景。
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)三个类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4C:判断“点的远近”
在 4B 前述代码的基础上,添加全局函数 Near,入口参数是两个点,功能是判断“前一个点 比后一个点距离原点更近”,出口参数是 Yes(1)或者 No(0)。然后在 4B 基础上主函数原代码 的后面添加如下代码,使得程序能够正确运行。
char cc; cc=Near(A,B)?'A':'B'; cout<<cc<<" is nearer to O(0,0).\n";
1B:格式化输出实数
从键盘读取本金和年利率,求 20 年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2 格、右对齐”的方式显示年,以“共 10 格、 小数点后取 2 位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金 973.45 元、年利率 2%的显示结果如下
int m1,m2,m3; int x1[]={29,78,0,24,80,12,2,86,21,73}; float x2[]={31.91,22.71,58.72,25.67,77.67,25.61,5.31,40.62,92.43,9.15,56.33,28.64}; double x3[]={1.548,1.884,2.476,1.761,9.689,0.591,4.325,0.196,1.973}; sort(x1,sizeof(x1)/sizeof(int)); display(x1,sizeof(x1)/sizeof(int)); sort(x2,sizeof(x2)/sizeof(float)); display(x2,sizeof(x2)/sizeof(float)); sort(x3,sizeof(x3)/sizeof(double)); display(x3,sizeof(x3)/sizeof(double)); }
cout<<"Max="<<max<<endl;
cout<<"Min="<<min<<endl;
cout<<"Avg="<<avg<<endl;
}
2B:返回引用的函数
下面的主函数需要调用函数 Ref_Max,其返回值是 int 型数组前 n 个元素的最大值的引 用,主函数的功能是每次把最大值置为-1,并显示当前数组的值。编写 Ref_Max 函数,使 得程序可以正确运行。 #include <iostream> using namespace std; #define N 10 //此处编写 Ref_Max 函数的代码 void main() {
//此处编写 setdata 函数的代码
void main()
{
int max,min; //用于存放最大值和最小值
double avg;
//用于存放平均值
int x[N]={29,78,0,24,80,12,2,86,21,73}; setdata(x,10, ?????); //求前 10 个数的最大值、最小值、平均值
实验 1 cin、cout 及面向过程的编程
1A:显示某个日期是星期几
(1) 输入、输出要求: 输入:3 个正整数,依次为年、月、日,比如 2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例:
(2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,
下面的程序只写出了主函数 main,其中包含对名为 sort 的函数及名为 display 的函数多 次调用。sort 函数用于将一个数组排序,display 函数用于显示数组中的各个元素。试编写相 应的函数。 #include <iostream> using namespace std; //此处根据需要编写函数 void main() {
实验 2 引用与函数重载
2A:引用作为函数的参数
下面的主函数需要调用函数 setdata,用于求 x 数组前 n 个元素的最大值、最小值、平均 值,编写函数 setdata,使得程序可以正确运行。
#include <iostream>
using namespace std;
#define N 20
void Set(int y,int m,int d); void Display();
//用参数更改日期 //显示日期及星期几
private:
// void SetWeek();
//由当前日期计算是星期几,设置 week
int m_year,m_month,m_day,m_week; //数据成员,存放年月日和星期几
预期的运行结果如下: P1=(2,4) P2=(5,3) (3.5,3.5) A B =3.16228 B A =3.16228 A is nearer to O(0,0).
实验 3 答案 3A:类声明及函数成员的代码如下:
3B:多文件编程
View: CMyDate.h: CMyDate.cpp:
Main:
实验 4 静态成员与对象参数
4A:关于平面上的点
定义一个类 CMyPoint,其中含有 2 个私有数据成员 m_x 和 m_y 分别记载平面直角坐标
系中一个点的 x 坐标和 y 坐标,另有 3 个静态数据成员:m_count 记载现有点数,m_sumX
实验 2 答案 2A:引用作为函数的参数
2B:返回引用的函数
2C:不同类型的数组排序
实验 3 类与对象
下面是关于 CMyDate 类的声明和主函数 main:
class CMyDate
{
public:
CMyDate(int y,int m,int d); ~CMyDate(){};
//构造函数,以参数设置日期 //析构函数,无操作
1D:验证常变量
设计一个完整程序验证“常变量形参的值不得更改”,其中包含 main 及一个函数,该函 数以常变量作为形参,在函数中试图修改该形参变量的值(这是违反规则的),该代码在编译 时应见到如下错误提示:
实验 1 答案 1A:显示某个日期是星期几
1B:格式化输出实数
1C:格式化输出素数表 1D:验证常变量
1C:格式化输出素数表
从键盘读取两个正整数,记作 a、b,显示 a、b 之间(含 a、b)的所有素数。 每行 10 个,每个数用 6 格,右对齐。 输入:用空格分隔的两个正整数 输出:每行 10 个素数,每个数用 6 格,右对齐,在素数表的下方显示“共有?个素数” 示例:在 a=1,b=100 时,输出应为:
}
完成以上各项要求,使得程序可以正确运行。
4B:求两点间距离
在前述代码的基础上,添加函数成员 Distance,以一个点为参数,求该点到本点的距离。然 后在主函数原代码的后面添加如下代码,使得程序能够正确运行。
double d1=A.Distance(B); double d2=B.Distance(A); cout<<"\nA B ="<<d1<<endl; cout<<"\nB A ="<<d2<<endl;
其中最著名的是蔡勒(Zeller)公式。即
w
(
y
y 4
c 4
2c
26(m 1) 10
d
1)%7
公式中的符号含义: w——星期几 c——年份的前两位 y——年份的后两位 m——月,3≤m≤14,某年的 1、2 月视为上一年的 13、14 月,比如 2003 年 1 月 1 日要看 作 2002 年的 13 月 1 日 d——日
——代表取整,即只要整数部分
%——除法求余数 例如:对于 2049 年 10 月 1 日,计算过程如下:
w
(49
49 4
20 4
2
20
26(10 10
1)
1
1)%7
(49 12 5 40 28)%7
54%7
5
即 2049 年 10 月 1 日是星期 5。如果计算结果是负数,则加 7。
(2) 设计成员函数 SetData,用于设定两个数据成员的值,并检测坐标的绝对值必须不超过
100,对于试图超过 100 的情况都予以拒绝(即不更改数据成员的当前值);
(3) 设计成员函数 Display,显示平面上一个点的坐标,希望的显示形式为(x,y),小数点后取
3 位;
(4) 设计静态函数成员 ShowAvg,功能是显示当前各点坐标的平均值;
int i,j; //用于存放最大值和最小值 int x[N]={29,78,0,24,80,12,2,86,21,73}; for(i=0;i<N;i++) {
Ref_Max(x,N)=-1; for(j=0;j<N;j++)
printf("%5d",x[j]); cout<<endl; } }
2C:不同类型的数组排序
};
void main() {
CMyDate d1(2049,10,1),d2(2001,1,1); d1.Display(); cout <<endl; d2.Display(); cout<<endl; d2.Set(2001,1,1); d2.Display(); cout<<endl; d2=d1; d2.Display(); cout<< endl; }
3A:单文件编程
了解基于类的编程的基本框架。完成以下操作: (1) 启动 VC,新建操作台工程及源程序文件 (2) 将上述代码粘贴到该文件内。 (3) 查看“类视图”和“文件视图”中有哪些内容,查看相应文件夹中的文件名称 (4) 在类声明与 main 之间编写 CMyDate 的各个方法成员的代码 (5) 在类声明的前面添加#include 等项 (6) 运行程序,观察结果 (7) 为程序添加“星期几”的功能,相应地修改相关函数成员 (8) 运行程序,观察结果