面向对象1 期末考试试题及参考答案
面向对象程序设计(专科)复习题一
一、单选题
1. 下列有关模板和继承的叙述,正确的是()。
A、模板和继承都可以派生出一个类系
B、从类系的成员看,模板类系的成员比继承类系的成员较为稳定
C、从动态性能看,继承类系比模板类系具有更多的动态特性
D、相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系。
2. 有如下程序:
#include
using namespace std;
int i = 1;
class Fun{
public:
static int i;
int value(){return i – 1;}
int value() const {return i + 1;} };
int Fun::i = 2;
int main()
{ int i = 3;
Fun fun1;
const Fun fun2;
【】return 0;
}
若程序的输出结果为:123 则程序中下划线处遗漏的语句是()。()
A、cout << fun1.value() << Fun::i << fun2.value();
B、cout << Fun::i << fun1.value() << fun2.value();
C、cout << fun1.value() << fun2.value() << Fun::i;
D、cout << fun2.value() << fun::i << fun1.value();
3.下面关于继承的描述中,错误的是()。
A、公有继承时基类中的public成员在派生类中仍是public的
B、公有继承时基类中的private成员在派生类中仍是private的
C、公有继承时基类中的protected成员在派生类中仍是protected的
D、私有继承时基类中的public成员在派生类中是private的
4. 实现运行时多态的机制是()。
A、虚函数
B、重载函数
C、静态函数
D、模板函数
5. 下列关于静态数据成员的描述中,正确的是()。
A、类的不同对象有不同的静态数据成员
B、静态数据成员不能通过类的对象访问
C、静态数据成员是类的所有对象共享的
D、类的每一个对象都有自己的静态数据成员
6. 下列关于new分配内存的用法,错误的是()()
A、int* p = new int;
B、char* pc = new char(‘a’);
C、int* pi = new int[10];
D、char* pch = new char[10](‘a’);
面向对象期末考试答案
一、填空(15分) 1、类之间的静态联系称作关联。 ?在实例化后,由类产生对象,链是关联的实例。 ?在系统实现时,关联采用对象的属性来实现。 2、用例图用于建立需求模型,描述用户的需求。对象图是面向对象分析中的基本模型,属于静态结构模型。 3、顺序图(时序图)、通信图、活动图、状态图用于描述系统的行为方面的特征,属于动态结构模型。 4、时序图构成:参与者、相互协作的对象、对象的生命线、参与者与对象之间发送的消息、执行规约 5、表示 [可见性] 属性名[:类型][ =初始值] 可见性分为+表示:(公有的)、#表示:(受保护的)、-表示:(私有的)、~(包,只有在同一包中声明的类能够使用这一属性)。 二、名词解释(15分) 1、面向对象方法:是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。 2、类:是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作务两个主要部分。类的作用是用来创建对象,对象是类的一个实例。 3、抽象:指从事物中舍弃个别的、非本质的、与问题域无关的特征,而抽取共同的、本质特征的、相关的做法。 4、多态性:在具有继承关系的类层次结构中可以定义同名的操作或属性,但这些属性或操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。(“同名不同参”或“同名不同类”) 5、OOA模型:就是通过面向对象的分析所建立的系统分析模型。 用况:一个用况是对参与者使用系统的一项功能的描述,是一组动作序列的描述,是一项请求与响应。(
三、简答(45分) 1、继承和泛化关系 特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。 一般类对特殊类的抽象关系叫泛化关系(简称泛化)。 2、聚合与组合有区别,请说明他们间的区别,并指出下图中哪图是聚合? 聚合刻画了现实事物之间的构成关系,体现“整体——部分”关系。而关联没有组成关系或拥有关系。如例题中的c图 3、简述下图中体现的面向对象的基本思想
面向对象方法题库1-0-5
面向对象方法题库1- 0-5
问题: [单选]当()时,用例是捕获系统需求最好的选择。 A.系统具有很少的用户 B.系统具有很少的接口 C.系统算法复杂,功能单一 D.系统有很多参与者 用例描述的是系统的执行者(参与者)与系统的交互,同时也是开发人员与用户进行交流的工具,可用来很好地定义系统的边界。所以,当执行者较多的时候,用例是捕获系统需求最好的选择。
问题: [单选]对OO系统的技术度量的识别特征,Berard定义了导致特殊度量的特征。其中()抑制程序构件的操作细节,只有对访问构件必需的信息被提供给其他希望访问的构件。 A.局部化 B.封装 C.信息隐藏 D.继承 面向对象的软件和用传统方法开发的软件有本质的不同,为此,对OO系统的技术度量必须调整以适应那些区别OO和传统软件的特征。Berard定义了5个导致特殊度量的特征,分别是局部化、封装、信息隐蔽、继承和对象抽象技术。 (1)局部化。局部化是软件的一个特征,它指明信息在程序中被集中的方式,例如,针对功能分解的传统方法围绕功能局部化信息,它们典型地以过程模块来实现。数据驱动方法围绕特定的数据结构局部化信息。在OO语境中,信息是通过封装数据和处理在类或对象的边界内而集中的。因为传统软件强调函数为局部化机制,软件度量着重于函数的内部结构或复杂性(例如,模块长度、内聚性或环路复杂性等)或函数间相互连接的方式(例如,模块耦合)。因为类是OO系统的基本单位,所以,局部化是基于对象的,因此,度量应该应用于作为一个完全实体的类(对象)。此外,在操作(函数、方法)和类间的关系不必要是一对一的。因此,反应类协作方式的度量必须能够适应一对多和多对一的关系。
《面向对象程序设计》实验指导书
《面向对象程序设计》课程实验指导书
实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.360docs.net/doc/b49074589.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)
实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。
面向对象基础_参考题答案
一、【必做题】 1.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 (2)定义一个PersonCreate类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的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.74 2)分别调用对象的sayHello()方法。(答案:Constructor.java、或者是Person3.java)3.(1)定义一个矩形类Rectangle: 1)定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。 2)有2个属性:长length、宽width 3)通过构造方法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的坐标。 public class Point { private int x0; private int y0; public Point()
面向对象程序设计(JAVA)期末考试试卷(A卷)
面向对象程序设计 (J A V A)期末考试试卷 (A卷) -CAL-FENGHAI.-(YICAI)-Company One1
课程代码: 座位号: 新疆大学20 -20 学年度第二学期期末考试 《面向对象程序设计》试卷 姓名: 学号: 专业: 学院: 班级: 20 年 月 日 一、单选题(10小题,共10分) 1.下列 选项中,用于在定义子类时声明父类名的关键字是 【 】 A .interface B . package C . extends D . class 2.在以下哪种情况下可以获得缺省构造器 【 】 A .当作任何类的定义时 B .当类没有其它构造器时 C .当定义至少一个构造器的时 D .从不需要 3.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量【 】 A .不能引用,必须改名,使它们的名称不相同 B .在成员变量前加this ,使用this 访问该成员变量 C .在成员变量前加super ,使用super 访问该成员变量 D .不影响,系统可以自己区分 4.在异常处理中,如释放资源、关闭文件、关闭数据库等由哪个子句来完成【 】 A .try 子句 B .catch 子句 C .finally 子句 D .throw 子句 5.下面哪个流类属于面向字符的输入流 【 】 A .BufferedWriter B .FileInputStream C .ObjectInputStream D .InputStreamReader 6.在Java 中,由Java 编译器自动导入,而无需在程序中用import 导入的包是 【 】。 A .java.applet B .java.awt C .java.util D .https://www.360docs.net/doc/b49074589.html,ng
完成Java面向对象程序设计实验课的心得体会范文
Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。 学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。 Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实; 现实中的一切都是对象,他们有分类,就产生了“类”; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。
所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等 原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。 面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。 我想真正的面向对象编程思想不应该是编程思想,应该是面向对象的分析方法才对! 我的理解: 1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分),
面向对象_补充案例
案例3-1 定义学生类 一、案例描述 1、考核知识点 编号:00103002 名称:类和对象 2、练习目标 掌握类定义的方式 掌握如何在类中定义成员变量和成员方法 3、需求分析 在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。 4、设计思路(实现原理) 1)使用class关键字定义一个表示学生类型的类,类名为Student。 2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。 3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。二、案例实现 class Student{ String name; int age; void speak() { "我的名字是 "+name+",今年 "+age+"岁"); } } 三、案例总结 1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字 2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解 3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示 public class Phone { String brand; double price; void call(){
面向对象程序设计实验
实验一C++基础1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉C++中简单的标准输入输出函数的使用方法; 3.理解const修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用new和delete来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include
{ int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------①cout<<"x1="<
第10章面向对象讲解
第10章面向对象分析 10.1面向对象分析的基本过程 不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。 图:参照当前系统建立目标系统 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。
10.1.1 概述 系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。 [[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。”(P231)——这在一开始能做到吗?——扯蛋 10.1.2 3个子模型与5个层次 面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。 建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:
图10.2 复杂问题的对象模型的5个层次 其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。 其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行: (1)确定类和对象 (2)确定关联 (3)划分主题 (4)定义属性 (5)确定继承关系 (6)建立动态模型
第一次实验--UML
实验1 UML类图实训 实验目的:加深对类图的理解 实验环境:Microsoft Office Visio 2003 及以上版本,或Rational Rose 2003等 实验内容: 1、问题(一)陈述 某图书管理系统的主要功能如下: (1)图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。系统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。 (2)资源可以分为两类:图书和唱片。对于图书,系统还需登记作者和页数;对于唱片,还需登记演唱者和介质类型(CD或者磁带)。 (3)读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括读者的识别码和读者姓名。系统为每个读者创建了一个借书记录文件,用来保存读者所借资源的相关信息。 2、构建类图的步骤: 第一步:识别类 (1)寻找问题描述中的名词 提取本实例中出现的所有名词如下表1: (2)从这些名词中删除不可能成为类的名词,最终得到构成该系统的类。部分类的命名及说明如下表2:
第二步:画出类图 第三步:补充完整 [问题1]表2所给出的类并不完整,根据已知条件和表1,将上面类图1中的(a)--(c)处补充完整。 [问题2]根据说明中的描述,给出图1中的类CatalogItem以及(b)、(c)处所对应的类的关键属性(使用表1中给出的词汇),其中,CatalogItem有4个关键属性;(b)、(c)处对应的类各有2个关键属性。 [问题3]识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图1中的①一⑥。 3、问题(二)陈述 某商场会员管理系统包含一个会员类(Member ),会员的基本信息包括会员编号( memberNo)、会员姓名(memberName )、联系电话(memberTel )、电子邮箱(memberEmail)、地址(memberAddress)等,会员可分为金卡会员( GoIdMember)和银卡会员( SilverMember)两种,不同类型的会员在购物时可以享受不同的折扣;每个会员可以拥有一个或多个订单( Order),每一个订单又包含至少一条商品销售信息(productItem),商品销售信息包括订单编号(orderNo)、商品编号( productNo)、商品数量(productNum)、商品单价( productPrice)和折扣(productDiscount);每一条商品销售信息对应一类商品(product ),商品信息包括商品编号(productNo)、商品名称(productName)、商品单价(productPrice )、商品库存量( productStock)、商品产地(productPlace)等。
面向对象期末测试题(带答案).doc
济南大学2009~2010 学年第二学期课程考试试卷 课 程 java 面向对象程序设计 授课教师 考试时间 考试班级 学 号 姓 名 … … …… …… …………………………装……………… …………订………………… …… …线 …… …… …… … …… …… …… …… …
C.一个if语句只能有一个else if语句与之对应 D.else if结构中必须有default语句 5.while循环和do…while循环的区别是:(D) A.没有区别,这两个结构任何情况下效果一样 B.while循环比do…while循环执行效率高 C.do…while循环执行次数可能为0 D.while循环执行次数可能为0 6.关于for循环和while循环的说法哪个正确?(B) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 7.下列修饰符中与访问控制无关的是(D) A.private B.public C.protected D.final 8.方法内的形参:(B) A.必须定义多个形参B.可以没有 C.至少有一个D.只能是简单变量 9.throws的作用:(A) A.表示方法可能会抛出例外 B.表示后面是方法的输出量 C.方法的标志,每个方法都必须有 D.没有意义 10.在Java语言中,整型常量123占用的存储字节数是:(C)A.1B.2 C.4 D.8 11.关于对象成员占用内存的说法哪个正确?(B) A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
实验二面向对象编程实验报告材料
实验二面向对象编程 1.实验目的 (1)掌握类与对象基本知识; (2)Java中的继承机制及包(package)、接口(interface)等的设计方法; (3)掌握static、this、super等关键字的使用; (4)掌握Java中两种比较器的用法。 2.实验容 实验题1 定义一个类Book,包含两个属性:一个是private的String类型的属性title、一个是private 的float类型的属性listPrice,封装这两个属性的四个方法setTitle()和getTitle()、setListPrice( )和geListPrice()。 基本要求: (1)设计类Book及类BookManagement,在类BookManagement中输出Book类的对象的两个private 属性; (2)重写父类的toString()方法,实现Book类实例的两个属性的输出。 实验结果: 实验过程: 首先建立一个Books工程,再建立俩个类Book和Bookmanagement。在Book类中,有俩个属性:一个是private的String类型的属性title、一个是private的float类型的属性listPrice,使用getter和setter
生成四个方法setTitle()和getTitle()、setListPrice( )和geListPrice()。最后重写Tostring函数。 在Bookmanagement中有主函数,使用JOptionPane.showMessageDialog(null,book)函数使之用对话框形式输出 代码如下: package book; public class Book { private String title; private float listPrice; public Book(String title, float listPrice) { super(); this.title = title; this.listPrice = listPrice; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public float getListPrice() { return listPrice; } public void setListPrice(float listPrice) { this.listPrice = listPrice; } Override public String toString() { return"title:" + getTitle() + ",Price:" + getListPrice(); } } package book;
《面向对象程序设计C 》期末考试试卷
《面向对象程序设计C++》期末考试试卷 一、选择题(每小题3分,共48分。) 01、下列关于C++函数的叙述中,正确的是( C )。 A)每个函数至少要具有一个参数B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明D)函数不能自己调用自己 02、下列关于类和对象的叙述中,错误的是( A )。 A)一个类只能有一个对象B)对象是类的具体实例 C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系 03、在C++中,用于实现运行时多态性的是( D )。 A)内联函数B)重载函数C)模板函数D)虚函数 04、下列关于运算符重载的叙述中,正确的是( B )。 A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载 C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参 05、对于语句cout< 实验1 cin、cout及面向过程的编程实验2 引用与函数重载 实验3 类与对象 实验4 静态成员与对象参数 实验5 拷贝构造函数与内存分配 实验6 对象数组与子对象 实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1) 实验9 运算符重载(2) 实验10 继承与派生 实验11 虚函数与类族 实验12 STL 实验1 cin 、cout 及面向过程的编程 1A :显示某个日期是星期几 (1) 输入、输出要求: 输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例: (2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即 7)%110)1(26244(-+? ?? ???++-??????+??????+=d m c c y y w 公式中的符号含义: w ——星期几 c ——年份的前两位 y ——年份的后两位 m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日 ??——代表取整,即只要整数部分 %——除法求余数 例如:对于2049年10月1日,计算过程如下: 5 7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+??? ???++?-??????+??????+=w 即2049年10月1日是星期5。如果计算结果是负数,则加7。 1B :格式化输出实数 从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下 例:超市进销存系统的需求描述如下: (1)销售 ①售货员接收顾客订购,输入顾客购买的商品,计算总价; ②顾客付款并接收清单; ③售货员保存顾客购买商品的记录清单。 (2)库存 ①库存管理员每天进行盘点一次; ②库存管理员当发现库存商品有损坏时,及时到相关部门报损; ③在供应商的商品到货时,库存管理员首先检查商品是否合格,并将合格的商品入库处理;当商品进入卖场时,进行商品出库处理; ④经理、订货员根据需要进行库存商品的模糊查询或详细查询。 (3)订货 ①订货员用新商品供应商信息更新供应商数据库的信息; ②订货员统计库存商品是否低于库存下限,然后制作订货单。 (4)统计 ①经理能够使用系统的统计功能,了解商品销售情况、库存情况、供应商情况,以便进行合理的营销策略。 ②经理按市场情况适时变动商品价格。 试建立超市进销存系统的用例模型。 顾客 图1 销售子系统 商品出入库 图2 库存子系统 制作订货单图3 订货子系统用例模型 特殊商品查询 图4 统计子系统用例模型 思考??在用例图中的用例通常只是简单地给出了系统应提供什么服务,并没有展示出如何提供服务,如服务的具体功能、处理流程、场景、出错情况以及异常情况等信息,如何能知道前述信息? !!!用例的描述常采用文字列表形式,也可采用UML图形描述,如交互图、活动图等。 3.试为以下各类建立UML类图及描述它们间的关系。 家用电器、电视机、液晶电视机、电视遥控器、DVD播放机、组合音响、音响功放、音箱、喇叭、低音泡、高音泡、厨具、电厨具、微波炉、电磁炉、电饭煲 销售管理子系统的部分用例描述: 一、【必做题】 Ⅰ.选择题 1、列选项中哪个是类public class T est { }的默认构造方法__C__? A. T est(); B. T est(void); C. public T est(); D. public T est(void); E. public void T est(); 2、给定下列代码的执行结果是_E___? public class A { void A() { System.out.println(“Class A”); } public static void main(String[] args) { new A(); } } A. Class A B. 在第2行处抛出异常 C. 编译错误 D. 在第6行处抛出异常 E. 代码执行后没有输出 ***3、给定以下代码: 1. public class ConstOver { 2. public ConstOver (int x, int y, int z) { 3. } 4. } 下列选项中,哪些可以在ConsOver类中定义成重载的构造方法___AC_: A. ConstOver ( ) { } B. int ConstOver ( ) { } C. ConstOver (int z, int y, byte x) { } D. Object ConstOver (int x, int y, int z) { } E. void ConstOver (byte x, byte y, byte z) { } 4、以下代码的执行结果是__A___?//Illegal modifier for parameter i; only final is permitted 实验项目名称:jdk环境配置及第一个java程序 实验目的:通过上机了解如何在windows系统中配置java环境,并在此基础上通过调试运行书中的java application以及java applet掌握java语言程序的编写以及运行步骤。 实验内容: 实验结果: 实验二 实验项目名称:数组及字符串 实验目的:熟悉数组以及字符串的初始化,函数调用等基本操作 实验内容:1.使用3种方式对一个二维数组进行赋值 2.使用3种方式实现两个字符串的连接操作。 实验过程: 实验三 实验项目名称:面向对象程序设计基础实验一 实验目的:熟悉java语言的面向对象基本概念 实验内容:创建类Rectangle,具有属性length和width,缺省值均为1。该类具有计算perimeter(周长)和area(面积)的方法,并有length和width的设置和读取方法。设置方法应检验length和width是否大于0.0并且小于20.0。 实验过程 实验结果 实验四 实验名称:面向对象程序设计二 实验目的:了解java语言中的继承机制 编写一个Java应用程序,设计一个运输工具类Trartspoft,包含的成员属性有:速度、载重量;汽车类V ehicle是Transpoft的子类,其中包含的属性有:车轮个数和车重;飞机Airplane 类是Transport的子类其中包含的属性有:机型和发动机数量,每个类都有相关数据的输出方法。 实验过程 实验结果 实验五 利用接口继承完成对Biology(生物),Animal(动物),Man(人)三个接口的定义 其中Biology接口定义一个breath()抽象方法,Animal接口定义sex() 和eat()两个抽象方法,Man接口定义think()和study()两个抽象方法; 定义一个NormalMan类实现上述三个接口定义的抽象方法。 一、单选题 1.在下列概念中,Java语言只保留了D A.运算符重载B.结构和联合C.指针D.方法重载 2.下列类定义中,不正确的是B A.class x { .... } B.static class x implements y1,y2 { .... } C.public class x extends Applet { .... } D.class x extends y { .... } 3.下列语句序列执行后,k 的值是B int m=3, n=6, k=0; while( (m++) < (- - n) ) ++k; i++ 先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增 1作为i的值。 如i=1,则表达式(i++)的值等于1,而i的值变为2。 ++i i先自增1,再把自增后的值赋给表达式(++i)。 如i=1,则表达式(++i)的值等于2,i的值也为2, A.0 B.1 C.2 D.3 4.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是A A.a[0] = 7; B.i = i + 2 C.i++ - --j; D.a(0) = 66; 5.Java语言的类间的继承关系是B A.多重的B.单重的C.线程的D.不能继承 6.下列语句序列执行后,k 的值是C int i=10, j=18, k=30; switch( j - i ) { case 8 : k++; case 9 : k+=2; case 10: k+=3; default : k/=j; } A.31 B.3 C.2 D.33 7.设有定义float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是C A.x > y || x > z B.z > ( y + x ) C.x != y D.x < y & ! ( x < z ) 实用标准文档 文案大全实验二类与对象㈡——对象初始化、对象数据与指针 一、实验目的 1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类; 2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法; 3.熟悉类与对象的应用及编程。 二、实验学时 课内实验:2课时课外练习:2课时 三本实验涉及的新知识 ㈠构造函数与析构函数 在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。 构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。 析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。 1.构造函数 ⑴构造函数的定义 格式: 类名(形参表) { 构造函数体 } ⑵构造函数的调用 构造函数的调用是在定义对象时调用的。 格式:类名对象名(实参表); 类名对象名=构造函数名(实参表); ⑶说明 ①构造函数必须与类同名。 ②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。 ③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。 ④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。 ⑤不能象普通成员函数一样单独调用。 2.析构函数 ⑴析构函数的定义 格式: ~类名(void) { 析构函数体 } ⑵析构函数的调用 析构函数是在撤销对象时自动调用的。 ⑶说明 第三章补充案例 案例3-1 定义学生类 一、案例描述 1、考核知识点 编号:00103002 名称:类和对象 2、练习目标 掌握类定义的方式 掌握如何在类中定义成员变量和成员方法 3、需求分析 在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。 4、设计思路(实现原理) 1)使用class关键字定义一个表示学生类型的类,类名为Student。 2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。 3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。二、案例实现 class Student{ String name; int age; void speak() { "我的名字是 "+name+",今年 "+age+"岁"); } } 三、案例总结 1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字 2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解 3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示 public class Phone { String brand; double price; void call(){ "hi,how are you doing"); } } 案例3-2 同一对象被多个变量引用 一、案例描述 1、考核知识点 编号:00103003 名称:对象创建与使用 2、练习目标 掌握如何创建类的对象 掌握如何使用两个或者多个变量引用同一个实例对象。 3、需求分析 在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。为了让初学者更好地掌握对象的创建和使用,本案例将基于案例3-1,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3, s3也调用speak()方法。 4、设计思路(实现原理) 1)编写Example01类 2)在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age 变量分别为它们赋值为“张三”和“19”,然后调用speak()方法。 3)创建Student类的第二个对象,其引用变量为s2,使用s2分别为name和age赋值为“李四” 和“20”,然后调用speak()方法。 4)创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。 二、案例实现 public class Example01 { public static void main(String [] args) { Student s1 = new Student(); ="张三"; =19; (); Student s2 = new Student();面向对象实验题及答案(全)
面向对象建模案例
面向对象基础_参考答案
面向对象程序设计实验(完整版)
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案
《面向对象程序设计》实验指导书(实验二)
第3章面向对象(上)_补充案例