面向对象例题
- 格式:doc
- 大小:310.50 KB
- 文档页数:14
面向对象程序设计练习题面向对象程序设计练习题面向对象程序设计是一种常用的软件开发方法,它将现实世界中的事物抽象成对象,通过定义对象的属性和方法来描述其行为。
这种编程方法可以提高代码的可重用性、可维护性和可扩展性。
下面将介绍几个面向对象程序设计的练习题,帮助读者更好地理解和应用这一编程方法。
1. 汽车租赁系统设计一个汽车租赁系统,包括汽车类、客户类和租赁记录类。
汽车类包括车牌号、品牌、型号和日租金等属性,客户类包括姓名、联系方式等属性,租赁记录类包括租车日期、租期和总租金等属性。
实现以下功能:- 客户可以查看可租赁的汽车列表;- 客户可以选择汽车租赁,并记录租车日期和租期;- 客户可以查看自己的租赁记录和总租金。
2. 图书管理系统设计一个图书管理系统,包括图书类、读者类和借阅记录类。
图书类包括书名、作者、出版社和价格等属性,读者类包括姓名、学号等属性,借阅记录类包括借书日期、归还日期等属性。
实现以下功能:- 图书管理员可以添加、删除和修改图书信息;- 读者可以查询图书信息,并借阅或归还图书;- 读者可以查看自己的借阅记录和逾期情况。
3. 银行账户管理系统设计一个银行账户管理系统,包括账户类、客户类和交易记录类。
账户类包括账户号码、余额等属性,客户类包括姓名、联系方式等属性,交易记录类包括交易日期、交易类型和交易金额等属性。
实现以下功能:- 客户可以查询账户余额;- 客户可以进行存款和取款操作,并记录交易记录;- 客户可以查看自己的交易记录和账户余额变动情况。
通过以上练习题,读者可以锻炼面向对象程序设计的能力,熟悉类的定义、属性和方法的使用,以及对象之间的交互。
在实现这些功能的过程中,读者需要考虑如何合理组织代码结构,如何处理异常情况,以及如何提高代码的可读性和可维护性。
在实际的软件开发中,面向对象程序设计是一种非常常用的编程方法。
它不仅可以提高代码的质量,还可以提高开发效率。
因此,掌握面向对象程序设计的技巧对于软件开发人员来说是非常重要的。
一、【必做题】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的坐标。
面向对象练习题及答案一、用例图1.请就以下需求建立用例图:一个新的音像商店准备采用计算机系统向比较广泛的人群销售或租借录像带和光碟。
该音像商店将存有大约1000 盘录像带和500 张光碟,这些订购涉及多家订购商。
所有的录像带和光碟都有一个条码,可以使用条码扫描仪来支持销售和返还,客户会员卡也同时条码化。
客户可以预定录像带并在指定日期来取。
系统必须拥有灵活的搜索机制来回答客户的询问,包括关于该音像商店还没有进货的电影(但可能是已经请求订购了)。
评分标准:画图格式标准3 分,用例全面正确4 分,角色与用例之间的关系正确3 分2.试用用例图描述小型图书资料管理系统。
某学院打算开发一个小型图书资料管理系统MiniLibrary,该系统基于Internet实现教师和学生对各种图书资料的借阅、查询和管理。
图书管理员负责管理各种图书资料,查询图书资料信息,并进行图书的借阅管理。
注册用户可以通过Internet 随时查询图书资料信息和个人借阅情况,预订目前借不到的图书资料,并可以快捷地查找和浏览所需要的电子资料。
系统可以提供适当的浏览器供用户阅读电子文献资料。
3.试用用例图描述系统简介:航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。
各个旅行社把预定机票的旅客信息输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单到航空公司交款取票,系统核对无误即打印出机票给旅客。
此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。
技术要求和限制条件(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。
(2)对于本系统还应补充一下功能:1)旅客延误了取票时间的处理2)航班取消后的处理4 .请就此需求建立功能模型:某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下:报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称、订期、单价、份数等项目,订户通过填写订单来订阅报刊。
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,并输出结果。
面向对象测试题及答案一、选择题(每题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`方法以显示电动汽车启动的信息。
面向对象练习题面向对象练习题面向对象编程是一种常用的编程范式,它将程序设计问题分解成一系列的对象,每个对象都有自己的属性和方法。
面向对象编程的核心思想是把现实世界中的事物抽象成程序中的对象,并通过对象之间的交互来解决问题。
为了提升对面向对象编程的理解和掌握,下面将给出一些面向对象编程的练习题。
1. 设计一个汽车类,要求具有以下属性和方法:- 属性:品牌、颜色、价格- 方法:启动、加速、刹车、熄火2. 设计一个学生类,要求具有以下属性和方法:- 属性:姓名、年龄、性别、成绩- 方法:学习、休息、考试、查看成绩3. 设计一个图书类,要求具有以下属性和方法:- 属性:书名、作者、出版社、价格- 方法:借阅、归还、查看借阅状态、查看图书信息4. 设计一个银行账户类,要求具有以下属性和方法:- 属性:账户名、账号、余额- 方法:存款、取款、查询余额、转账5. 设计一个矩形类,要求具有以下属性和方法:- 属性:宽度、高度- 方法:计算面积、计算周长、判断是否为正方形这些练习题涵盖了面向对象编程中常见的概念和操作。
通过解答这些题目,可以加深对面向对象编程的理解,并提升对类、对象、属性和方法的使用熟练度。
在解答这些题目时,可以先思考每个类应该具有哪些属性和方法,然后根据需求进行实现。
可以使用任何编程语言来完成这些练习题,但建议使用面向对象编程语言如Java、Python等。
除了以上的练习题,还可以尝试设计更复杂的类和对象,如实现一个电商平台的商品类、用户类和订单类,或者实现一个图形界面的计算器类。
通过不断练习和实践,可以逐渐掌握面向对象编程的技巧和思维方式。
总之,面向对象编程是一种重要的编程范式,掌握它对于提升编程能力和解决实际问题非常有帮助。
通过解答上述练习题,可以加深对面向对象编程的理解和掌握,为以后的编程工作打下坚实的基础。
希望大家能够充分利用这些练习题,不断提升自己的编程能力。
1、在用例分析模型运用1.M1.用例图中,用例与参加者之间的关系是(A)通信(或者关联)(B)泛化(C)实现(D)运用2、IM1.用例图中,用例之间有三种关系,以下属于用例之间关系的是(A)包含(B)实现(C)通信(D)参加3、UM1.类图中,表示整体与局部关系的是(A)聚合(B)依靠(C)关联(D)继承4、在某信息系统中,存在如下的业务陈述:①一个客户提交O个或多个订单;②一个订单由一个且仅由一个客户提交。
系统中存在两个类:“客户”类和“订单”类。
对应每个“订单”类和“客户”类之间是__________________(A)关联(B)依靠(C)聚集(D)继承5、和都能够表示对象之间的交互,因此他们被合称为交互图(A)依次图类图(B)协作图状态图(C)依次图协作图(D)类图状态图6、1.M1.依次图以二维图表来显示交互。
纵向是时间轴,时间自上而下。
横向显示了代表协作中单个对象的分类角色。
每个对象用方框表示,对象的名字在方框内部,并在名字的下方加下划线。
每个分类角色表现为垂直列o在角色存在的时间内,显示为虚线(A)生命线(B)协作消息(C)激活(D)对象7、MaChine软件公司为BenZ公司的一款跑车设计了一个过程限制的紧急按钮,该按钮的功能依据汽车的行驶状态不同,而具有不同的功能,比如汽车静止时,该按钮可以快速启动汽车;当汽车的时速超过200km∕h 时,该按钮可以在2秒内将车平稳地停下来:当汽车向后行驶时,该按钮可以马上刹车,基于以上功能考虑,架构师Bob在设计该按钮时,应当采纳哪种设计模式(A)吩咐模式(B)状态模式(C)视察者模式(D)外观模式具体8、RiVer软件公司开发一个Web服务器,该服务器能够依据客户端的恳求,执行相应的处理,还可以对同时到达的恳求排队,并对胜利执行的每个恳求记录日志。
系统设计师Bob在设计该系统时,应当运用哪个设计模式以更好地支持对恳求的处理(A)适配器模式(B)视察者模式(C)吩咐模式(D)外观模式9、Wy1.ie学院准备开发一个新的OO课程注册系统,由于开发费用和时间的限制,这个新的课程注册系统将运用已有的一个非OO的课程书目遗留系统(1.egacysystem)所供应的一些功能,因此须要和这个课程书目系统集成。
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.什么不是面向对象程序设计的主要特征(D)A.封装B.继承 C 多态D结构2.UML中有四种关系是:依赖,泛化,关联和(C)A.继承 B.合作 C.实现 D.抽象3. 在UML中,(B)图显示了一组类,接口,协作以及它们之间的关系.A. 状态图B.类图C.用例图D.部署图4. 软件生存期包括计划,需要分析和定义(B),编码,软件测试和运行维护.A. 软件开发B.软件设计(详细设计) C软件支持D软件定义5. ( A )模型的缺点是缺乏灵活性,特别是无法解决软件需要不明确或不准确的问题.A.瀑布模型B原型模型 C 增量模型D螺旋模型6. 下图是(B)A类图B用例图C活动图D状态图7.下面哪个不是UML中的静态视图(A)A. 状态图B用例图C对象图D类图8.下列关于状态图的说法中,正确的是(C)A.状态图是UML中对系统的静态方面进行建模的五种图之一.B. 状态图是活动图的一个特例,状态图中的多数状态是活动状态.C.活动图和状态图是对一个对象的生命周期进行建模,描述对象活动时间变化的行为.D.状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个瓜型对象建模.9.对反应型对象建模一般使用(A)图A.状态图B顺序图C活动图D类图10.类图应该画在Rose的哪种视图中(B)A. Use Case View B.Logic View C .Component View D. Deployment View11.类通常可以分为实体类,(C)和边界类.A. 父类B.子类C控制类D祖先类12.顺序图由类角色,生命线,激活期和(B)组成A.关系B.消息C.用例D.实体13.( D)是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现.A部署图 B.类 C.接口D.组件14.关于协作图的描述,下列哪个不正确(B)A.协作图作为一种交互图,强调的是参加交互的对象的组织.B. 协作图是顺序图的一种特例.C. 协作图中有消息流的顺序号.D. 在Rose工具中,协作图可在顺序图的基础上按”F5”键自动生成.15.(C)是一组用于描述类或组件的一个服务的操作.A.包 B. 节点 C. 接口 D.组件16. 一个对象和另一个对象之间,通过消息来进行通信,消息通信在面向对象的通信中C17. D18. 下图中的空心箭头连线表示(A)关系A.泛化 B 包含C扩展D实现19.组件图展现了一组组件之间组件和依赖,它专注于系统的(B)实现图.A.动态 B.静态 C 基础D实体20. 下列关于类方法的声明,不正确的是 ( C )A.方法定义了类所许可的行动B.从一个类所创建的所有对象可以使用同一组属性和方法C.每个方法应该有一个参数D.如果在同一个类中定义了类似的操作,则他们的行为应该是类似的第二题:填空1.面向对象系统包含的3个要素有:对象,类和继承.2.OOA模型的五个层次有:主题层,结构层,服务层,属性层和类及对象层.3.UML的全称是:Unified Modeling Language4.组件是被节点执行的事物.5.构造,析构6.UML提供一系列的图支持面向对象的分析与设计,其中(类图)给出系统的静态设计视图;(用例图)对系统的行为进行组织和建模是非常重要的;(序列图)和(协作图)都是描述系统动态视图的交互图,其中(序列图)描述了以时间顺序组织的对象之间的交互活动,(协作图)强调收发消息的对象的组织结构.7.在协作图中通过(消息编号)表示出消息的时间顺序.8.UML中的交互图有顺序图和协作图两种.9.在UML提供的图中,(用例图)用于描述系统与外部系统及用户之间的交互,(序列图)用于按时间顺序描述对象间的交互.10. 用例图的建模步骤包括寻找参与者,确定用例,分析关系,细化用例规约,精化用例模型.11. 时序图包括对象或(Object),生命线或(Lifeline),激活或(Activation),消息或(Messsage) 12. RUP开发过程中各阶段的核心工作流包括:初始阶段,细化阶段,构造阶段.13. 标准建模语言UML的重要内容可以由哪五类图(共9种图形)来定义:用例图,静态图(包括类图,对象图和包图),行为图,交互图和实现图.14. 动态视图包含交互图和行为图,交互图包括时序图,协作图,状态图和活动图.第三题:分析题1、下面那些特征不能被派生类继承。
第6章面向对象程序设计一. 选择题1.下面有关类和对象的说法中, 不对的的是【】。
A) 类是系统提供的一种数据类型B) 对象是类的实例C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类2. 面向对象的特点重要概括为【】。
A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3. 要使一个类能被同一命名空间中的其他类访问, 但不能被这个命名空间以外的类访问, 该类可以【】。
A) 不使用任何修饰符B) 使用private修饰符C) 使用public修饰符D) 使用internal修饰符4. 在C#中, 【】访问修饰符修饰的字段只能由当前程序集访问。
A) private B) public C) protected D) internal5. 类的字段和方法的默认访问修饰符是【】。
A) public B) private C) protected D) internal6. 下列关于构造函数的描述中, 不对的的是【】。
A) 构造函数中, 不可以包含return语句B) 一个类只能有一个构造函数C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7. 下列关于构造函数的描述中, 【】是对的的。
A) 构造函数名必须与类名相同B) 构造函数不可以重载C) 构造函数不能带参数D) 构造函数可以声明返回类型8. 下列的【】不是构造函数的特性。
A) 构造函数的函数名与类名相同B) 构造函数可以重载C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型9. 类ClassA有一个名为M1的方法, 在程序中有如下一段代码, 假设该段代码是可以执行的, 则声明M1方法时一定使用了【】修饰符。
ClassA Aobj=new ClassA();ClassA.M1();A) public B) public static C) private D) virtual10. 在C#中, 从属性的读写特性上来进行分类, 可以划分为以下3种, 除了【】。
例题1.习题管理系统该系统的功能需求是:在一个公共习题库的支持下,使各科教师可以在系统中编写习题及其标准答案,并将编写的习题及答案加入题库;或者从题库中选取一组习题,组成一份向学生布置的作业,并在适当时刻公布答案。
学生可以在系统中完成教师布置的作业,也可以从题库中选择更多的题目练习。
教师可以通过系统检查学生的作业,学生也可以在教师公布答案后对自己的练习进行核对。
系统维持对题库的管理,并对教师及学生的权限进行检查:只有本课程的教师可以提交或修改习题,并指定哪些习题的答案可以向学生公开。
例2.超级市场销售管理系统该系统是超级市场业务管理系统的一个子系统。
为了讨论的简练,我们对它的功能做了适当的限制:只负责前台的销售管理,而且不处理信用卡付款和会员优惠等业务。
其功能需求是:为顾客选购的商品计价、收费、打印清单;记录每一种商品的编号、单价及现有数量;帮助供货员发现哪些商品将要脱销,以及时补充货源;随时按上级系统的要求报告当前的款货数量、增减商品种类或修改商品定价;例3建立顺序图收款员▪收款收款机商品一览表商品销售事件账册供货员输入开始本次收款的命令;作好收款准备,应收款总数置为0,输出提示信息;for顾客选购的每种商品do输入商品编号;If 此种商品多于一种then输入商品数量end if检索商品名称及单价;货架商品数减去售出数:If货架商品书低于下限值then通知供货员请求上货end if名称、数量、单价、总价;总价累加到应收款总数;end for打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两个数目,收款数计入账册。
《面向对象程序设计(Java)》经典编程集(共60题,含答案)/*一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第5次落地时,共经过多少米?第5次反弹多高?*//*输出7*7口诀*//*求1+2!+3!+...+10!的和*//*有5个人坐在一起,问第五个人多少岁?他说比第4个人大3岁。
问第4个人岁数,他说比第3个人大3岁。
问第三个人,又说比第2人大3岁。
问第2个人,说比第一个人大3岁。
最后问第一个人,他说是10岁。
请问第五个人多大? *//*求0--7所能组成的6位的奇数个数是多少个*//*有1、2、3、4、5、6、7、8、9个数字,能组成多少个互不相同且无重复数字的四位数?程序分析:可填在千位、百位、十位、个位的数字都是1、2、3、4、5、6、7、8、9。
组成所有的排列后再去掉不满足条件的排列。
*//*一个整数,它加上1000后是一个完全平方数,再加上1680又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上1000后再开方,再将该数加上2680后再开方,如果开方后的结果满足如下条件,即是结果。
请看具体分析*//*利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,80-89分之间的用B表示,70-79分之间的用C表示,60-69分之间用D表示,60分以下的用E表示。
(假定输入数字为95,判断等级)*//*题面:编写程序解决如下问题,小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,求可以有多少种不同的借法?将结果打印输出*//*题面:编写程序解决如下问题,某人将一缸金鱼分5次出售,第一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。
问原来的鱼缸中共有几条金鱼?将结果打印输出*//*题面:编写程序,一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反,求这个三位数,以十进制输出。
1、面向对象的核心要素:(7个)2、封装把类构成那两个部分,又提供了哪两种保护3、消息提供了服务的哪四个方面5、下面是一个用例描述的片断:Use Case: Withdraw Cash(提取现金)参与者:Customer主事件流:1. 储户插入ATM卡,并键入密码。
2. 储户按“Withdrawal”按钮,并键入取款数目。
3. 储户取走现金、ATM卡并拿走收据。
4. 储户离开。
上述描述中存在的问题:只描述了参与者的动作序列,没有描述系统的行为。
改进的描述:7、什么是场景,一个用例可以有多少个主要场景和次要场景?8、按照耦合度从高到低,说明类之间的关系有哪些?9、标准类图中成员四个可见性分别用什么表示?10、association aggregation generalization dependency 分别代表什么关系11、给出下面带关联类类图的另一种普通类图表示。
12、给出下面带限定关联的普通类图表示13、说明类图的抽象层次,并说明三个层次都在什么时候使用?14、说明OCP原则的含义,并说明如何才能做到OCP?开闭原则OCP(Open-Close Principle)被称作是OOD的基石,是OOD最重要的原则之一。
目前,对OCP的实现,主要的一条就是抽象,就是我们常常挂在嘴边的要面向抽象(接口)。
把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规定出所有的具体类必须提供的方法的特征作为系统设计的抽象层,这个抽象层要预见所有可能的扩展,从而使得在任何扩展情况下,系统的抽象层不需修改;同时由于可以从抽象层导出一个或多个新的具体类可改变系统的行为,因此对于可变的部分,系统设计对扩展是开放的。
15、HP类、Epson类、Canon类分别表示不同的打印机,Output类与3个类关联。
运行时Output类根据当前与系统相连的哪种类型的打印机而分别使用不同类中的print()方法。
Output类中会有if…else或switch…case之类的分支结构来判断与系统相连的是哪种类型的打印机。
一、介绍面向对象编程1.1 什么是面向对象编程1.2 面向对象编程的特点1.3 面向对象编程的优点二、Python中的面向对象编程2.1 Python中的类和对象2.2 类的定义与实例化2.3 封装、继承与多态2.4 魔法方法与特殊方法三、面向对象编程的实际例题3.1 创建一个简单的学生类3.2 实现学生类的基本功能3.3 对学生类进行拓展3.4 使用继承实现更复杂的业务逻辑四、面向对象编程的应用4.1 在实际项目中的应用4.2 面向对象编程与其他编程范式的比较 4.3 如何更好地利用面向对象编程思想五、结语一、介绍面向对象编程1.1 什么是面向对象编程面向对象编程是一种在程序设计中使用类和对象的编程方式。
通过对现实世界实体的抽象,将程序中的各种数据和操作封装到对象中,使代码更加模块化、可维护、可重用。
1.2 面向对象编程的特点面向对象编程具有封装、继承和多态三大特点。
封装通过将数据与操作封装在对象中,提高了代码的安全性和复用性;继承可以方便地实现代码的拓展和复用;多态可以实现同一接口多种实现。
1.3 面向对象编程的优点面向对象编程具有高内聚低耦合的特点,代码结构清晰,易于维护和扩展。
面向对象编程还能够提高代码的可读性和可复用性,降低了代码的开发和维护成本。
二、Python中的面向对象编程2.1 Python中的类和对象在Python中,一切皆对象。
类是对象的抽象,而对象是类的实例化。
Python中使用关键字class来定义类,使用关键字def来定义类方法。
2.2 类的定义与实例化Python中可以通过class关键字来定义类,并使用__init__方法来初始化对象的属性。
实例化对象时,可以直接调用类名并传入相应的参数。
2.3 封装、继承与多态在Python中,可以通过访问控制符来实现类的封装。
继承通过使用class子类名(父类名)的语法来实现。
多态则是Python的动态类型和动态绑定机制的体现。
面向对象上机考试题(1)——关于宠物进笼Anne的宠物小屋有12个笼子,每个笼子可以放不同的动物,但只能放1只或0只,包括猫Cat,狗Dog,蛇Snake.1,实现一个简单的管理系统,可增加、删除笼子中的宠物,查询每个笼子中存放的宠物类型,(包括笼子为空的情况),统计笼中宠物的种类和数量.2,定义描述宠物小屋的类shelves,其中有12笼子用于存放各种宠物.3,定义虚拟基类Animal,包括纯虚函数ShowMe,显示每个宠物的情况,包括类型、颜色、体重和喜爱的食物。
4,定义派生类Cat,Dog,Snake,具体实现上述纯虚函数。
5,重载输入‘>>'*作符,使得可能通过cin直接读入宠物颜色、体重和喜爱的食物。
6,编写main函数,测试上述要求和各种功能。
*/#include "iostream.h"#include "string.h"enum {NONE=0, CAT=1, DOG=2, SNAKE=3};class Animal{protected:char color[20];char food[20];double weight;public:virtual void ShowMe()=0;};class Cat:public Animal{public:friend istream& operator>>(istream &is, Cat &cat); void ShowMe(){cout<<"猫的颜色、喜欢的食物、体重分别为:";cout<<color<<”,”<<food<<”,”<<weight<<endl;}};istream & operator>>(istream &is, Cat &cat){cout<<" 请输入猫的颜色: ";is>>cat.color;cout<<" 喜爱的食物:";is>>cat.food;cout<<" 体重:";is>>cat.weight;return is;}class Dog:public Animal{public:friend istream& operator>>(istream &is, Dog &Dog); void ShowMe(){cout<<"狗的颜色、喜欢的食物、体重分别为:";cout<<color<<”,”<<food<<”,”<<weight<<endl;}};istream& operator>>(istream &is, Dog &dog){cout<<" 请输入狗的颜色: ";is>>dog.color;cout<<" 喜爱的食物:";is>>dog.food;cout<<" 体重:";is>>dog.weight;return is;}class Snake:public Animal{public:friend istream& operator>>(istream &is, Snake &snake); void ShowMe(){cout<<"蛇的颜色、喜爱的食物、体重分别为:";cout<<color<<”,”<<food<<”,”<<weight<<endl;};istream& operator>>(istream &is, Snake &snake){cout<<" 请输入蛇的颜色: ";is>>snake.color;cout<<" 喜爱的食物: ";is>>snake.food;cout<<" 体重: ";is>>snake.weight;return is;}class Shelves{int cage[12]; //每个笼子里动物的数量int sum[3]; 每种动物的数量Cat cats[12];Dog dogs[12];Snake snakes[12];public:Shelves (){for (int i=0; i<12; i++)cage[i]=NONE;for (i=0; i<3; i++)sum[i]=0;}int push_cat(Cat &cat, int n){cats[n] = cat;if (cage[n]!=NONE) return 0;else {sum[0]++;return cage[n]=CAT;}int push_dog(Dog &dog, int n){dogs[n]=dog;if (cage[n]!=NONE) return 0;else{sum[1]++;return cage[n]=DOG;}}int push_snake(Snake &snake, int n) {snakes[n]=snake;if (cage[n]!=NONE) return 0;else {sum[2]++;return cage[n]=SNAKE;}}void del(int n){if (cage[n]==CAT) sum[0]--;if (cage[n]==DOG) sum[1]--;if (cage[n]==SNAKE) sum[2]--;if (cage[n]==NONE)cout<<"笼子里没有动物";elsecage[n]=NONE;cout<<"已删除笼子里的动物";}cout<}void seek(int n){if (cage[n]==NONE) cout<<"第"<<N<<"个笼子里没有动物"; if (cage[n]==CAT){cout<<"第"<<N<<"个笼子里的动物为猫,";cats[n].ShowMe();}if (cage[n]==DOG){cout<<"第"<<N<<"个笼子里的动物为狗,";dogs[n].ShowMe();}if (cage[n]==SNAKE){cout<<"第"<<N<<"个笼子里的动物为蛇,";snakes[n].ShowMe();}cout<}void count(){cout<<"笼子里的猫总共有:"<<SUM[0]<<"只"<<endl;cout<<"笼子里的狗总共有:"<<SUM[1]<<"只"<<endl;cout<<"笼子里的蛇总共有:"<<SUM[2]<<"只"<<endl;}};void main(){Cat cat;Dog dog;Snake snake;Shelves shelves;int i=1,j;cout<<"这是关于往笼子里放动物的问题: "<<endl;cout<<" 1: 往笼子里放猫;"<<endl;cout<<" 2: 往笼子里放狗;"<<endl;cout<<" 3: 往笼子里放蛇;"<<endl;cout<<" 4: 查询笼子里的动物;"<<endl;cout<<" 5: 删除笼子里的动物;"<<endl;cout<<" 6:统计笼子里的动物种类及数量;"cout<<" 7: 退出程序;"<<endl;cout<<"------------------------------------------"<<endl; while(i){cout<<"请选择您的操作:";cin>>i;switch(i){cout<<" 往哪只笼子里面放: ";cin>>j;cin>>cat;while (shelves.push_cat(cat, j)==0){cout<<" 笼子里已有动物,请换一个笼子: "; cin>>j;}break;case 2:cout<<" 往哪只笼子里面放: ";cin>>j;cin>>dog;while (shelves.push_dog(dog, j)==0){cout<<" 笼子里已有动物,请换一个笼子: "; cin>>j;}break;case 3:cout<<" 往哪只笼子里面放: ";cin>>j;cin>>snake;while (shelves.push_snake(snake, j)==0) {cout<<" 笼子里已有动物,请换一个笼子: "; cin>>j;}break;cout<<" 查询哪只笼子: ";cin>>j;shelves.seek(j);break;case 5:cout<<" 删除哪只笼子里的动物: ";cin>>j;shelves.del(j); break;case 6:shelves.count(); break;default: i=0; break;}cout<<endl;}}面向对象上机考试题(2)——关于堆栈1.请实现一个栈,既可以存放整数,又可以存放字符串。
一、选择题(20分,共10题,每题2分)1. 关于方法论与方法的关系的描述错误的是(B )A.方法论是一种观点,是一个有理论意义的架构。
B.方法包括理论与模型两个重要的方面。
C.面向对象的方法论的重要观点是:封装、数据隐藏、多态、关系等。
D.不同的方法可以属于同一种方法论。
2.关于信息隐藏的描述错误的是(C)A.信息隐藏是指对象在与外界的交互中,尽可能地隐藏对象的内部细节,仅保留有限的对外接口与外部进行联系。
B.信息隐藏既可以隐藏属性,也可以隐藏操作。
C.一个对象信息隐藏的内容对任何对象都是一样的,并不随与之交互的对象的不同而改变。
D.信息隐藏的原则是公开不变的操作,隐藏易变的操作。
3.关于多态的描述正确的是(D)A.多态是指在聚合关系中的各个类中名字相同的属性和操作具有不同的意义。
B.多态的实现机制是编译时静态链接。
C.函数名重载(overload) 会导致多态现象出现。
D.多态可实现接口复用,节省大量的编码工作量.4.关于重载(overload)与覆盖(override)的说法正确的是(D)。
A.如果子类中的成员函数f(x)具有父类中成员函数f(x)相同的函数名,那么称子类对父类的f(x)进行了覆盖。
B.如果子类中的成员函数f(x)具有父类中成员函数f(x)相同的基调,那么称子类对父类的f(x)进行了重载.C.重载导致多态,覆盖与多态无关。
D.覆盖由动态链接实现,重载由静态链接实现。
5.关于用况图与类图的描述正确的是( D)。
A.参与者是用况图中的元素,类是类图中的元素,二者没有关系。
B.用况图中用况应全部识别为类图中的同名类。
C.用况图中参与者应全部识别为类图中的同名类.D.用况图中参与者有可能识别为类图中的主动类6.关于状态图的陈述正确的是(C)A.一个对象自身的属性值变化不能作为其状态图中的事件.B.历史状态是指一个对象以前曾经所处的状态集合。
C.动作是在状态内或在转化时所做的操作,是原子的和即时的。
(1)阅读下列说明和图,完成问题1至问题4,并在答题纸上自行列表写出答案。
【说明】在线会议审稿系统(Online Reviewing System, ORS)主要处理会议前期的投稿和审稿事务,其功能描述如下:(1)用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。
(2)作者登录(login)后提交稿件和浏览稿件审阅结果。
提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要,选择稿件所属主题类型,选择稿件所在位置(存储位置)。
上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。
(3)审稿人登录后可设置兴趣领域,审阅稿件给出意见,以及罗列录用和(或)拒绝的稿件。
(4)会议委员会主席是一个特殊的审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件,以及关闭审稿过程。
其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。
系统采用面向对象的方法开发,使用UML进行建模。
在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。
参与者名称、用例和活动名称分别参见表1、表2和表3。
系统的部分用例图和提交稿件的活动图分别如图1和图2所示。
名称说明名称说明User 用户Author 作者Reviewer 审稿人PCChair 委员会主席名称说明名称说明login 登录系统Register 注册submit paper 提交稿件Browse review results 浏览稿件审阅结果close reviewing process 关闭审稿过程assign paper toreviewer分配稿件给审稿人set preferences 设定兴趣领域enter review 审阅稿件给出意见list accepted/rejected papers 罗列录用和/或拒绝的稿件browse submittedpapers浏览提交的稿件名称说明名称说明select paper location 选择稿件位置upload paper 上传稿件select subject group 选择主题类型send notification 发送通知enter title and abstract 输入标题和摘要图1 ORS的用例图图2 提交稿件过程的活动图【问题1】(4分)根据【说明】中的描述,使用表1中的英文名称,给出图1中A1~A4所对应的参与者。
【问题2】(3分)根据【说明】中的描述,使用表2中的英文名称,给出图1中U1~U3所对应的用例。
【问题3】(4分)根据【说明】中的描述,给出图1中(1)和(2)所对应的关系及其含义。
【问题4】(4分)根据【说明】中的描述,使用表2和表3中的英文名称,给出图2中Action1~Action4对应的活动。
答案:【问题1】(4分)根据【说明】中的描述,使用表1中的英文名称,给出图1中A1~A4所对应的参与者。
A1 User(1分)A2 Author(1分)A3 Reviewer(1分)A4 PCChair(1分)【问题2】(3分)!!注意:U2和U3的答案可以互换。
!!根据【说明】中的描述,使用表2中的英文名称,给出图1中U1~U3所对应的用例。
U1 list accepted / rejected papers(1分)U2 browse submitted papers(1分)U3 assign paper to reviewer(1分)【问题3】(4分)根据【说明】中的描述,给出图1中(1)和(2)所对应的关系及其含义。
(1)<<extend>>(1分):将常规动作放在一个基本Use Case中,将非常规动作放在其扩展Use Case中。
(1分)(2)<<include>>(1分):两个Use Case,如果其中一个在其事件流中包含了另一个,那么它们间就有包含关系。
(1分)【问题4】(4分)根据【说明】中的描述,使用表2和表3中的英文名称,给出图2中Action1~Action4对应的活动。
Action1 enter title and abstract(1分)Action2 select subject group(1分)Action3 select paper location(1分)Action4 upload paper(1分)(2)阅读下列说明和图,回答问题1至问题4,将答案填到答题纸的对应栏内。
【说明】某汽车停车场欲建立一个信息系统,已经调查到的需求如下:(1)在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机/一台读卡器以及一个车辆通过传感器,示意图如图1所示。
图1 自动停车场示意图(2)当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。
当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。
(3)在停车场内分布着若干个付款机器。
驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。
付清停车费之后,将获得一张出场卡,用于离开停车场。
(4)当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。
如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口处的传感器通知系统发出命令,栏杆自动放下。
若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。
(5)系统自动记录停车场内空闲的停车位的数量。
若停车场当前没有车位,系统将在入口处显示“车位已满”信息。
这时,停车卡打印机将不再出卡,只允许场内汽车出场。
根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1所示的用例/类/状态列表、如图2所示的用例图、如图3所示的初始类图,以及如图4所示的描述入口自动栏杆行为的UML状态图。
图2 用例图图3 初始类图图4 入口自动栏杆行为的状态图用例名说明类名说明状态名说明Car entry 汽车进入停车场CentralComputer停车场信息系统Idle空闲状态,汽车可以进入Car exit 汽车离开停车场PaymentMachine 付款机器Disable 没有车位Report Statistics 记录停车场的相关信息CarPark停车场,保存车位信息Await Entry等待汽车进入Barrier 自动护栏Await TicketTake等待打印停车卡Car entry 没有车位时,汽车请求进入EntryBarrier 入口的护栏Await Enable等待停车场内有空表1 用例/类/状态列表【问题1】(3分)根据【说明】中的描述,使用表1给出的用例名称,给出图2中U1、U2和U3所对应的用例。
U1 U2 U3【问题2】(4分)中A~D 所对应的类。
A B C D【问题3】(4分)S1~S4所对应的状态。
S1 S2 S3 S4【问题4】(4分)简要解释图2中用例U1和U3之间的extend 关系的内涵。
答案:阅读下列说明和图,回答问题1至问题4,将答案填到答题纸的对应栏内。
参考答案: 【问题1】(3分)U1 Car entry U2 Car exitU3 Car entry when full 【问题2】(4分)!!C 、D 答案可以互换!!A CarParkB BarrierC EntryBarrier DExitBarrier【问题3】(4分)S1 IdleS2 Await Ticket Take S3 Await Enable S4Await Entry 【问题4】(4用例之间的扩展关系用于对可选系统行为的用例的一部分建模。
通过这种方式,可以把可选行为从必需的行为中分离出来。
when full停车场ExitBarrier 出口的护栏闲车位(3)阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。
连接电脑的过程中还可自动完成充电。
关于唱片,还有以下描述信息:1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。
只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。
艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。
一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。
2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。
3. 每条音轨都有一个开始位置和持续时间。
一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话)。
根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1-1所示的类列表、如图1-1所示的初始类图以及如图1-2所示的描述播放器行为的UML 状态图。
类 名 说 明 Artist 艺术家 Song 歌曲 Band 乐队 Musician 歌手 Track 音轨 Album 唱片图1-1 初始类图图1-2 播放器行为UML 状态图【问题1】(6分)根据说明中的描述,使用表1-1给出的类的名称,给出图1-1中的A~F 所对应的类。
【问题2】(3分)根据说明中的描述,给出图1-1中(1)~(6)处的多重度。
ACDFE B (1) (2)(3) (4)(5) (6)10..*10..* 编写演奏【问题3】(4分)图类多重度【问题4根据图1-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。
答案:【问题1】(6分)根据说明中的描述,使用表1-1给出的类的名称,给出图1-1中的A~F所对应的类。
A: Artist B: Song C: Band D: Musician E: Track F: Album【问题2】(3分)根据说明中的描述,给出图1-1中(1)~(6)处的多重度。
(1) 0..*(2) 2..*(3) 0..1(4) 1..*(5) 1..*(6) 1【问题3】(4分)图1-1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。
类多重度Track 或E (1 分) 0..1Track 或E (1 分) 0..1【问题4】(2分)根据图1-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。
按任意键,选择歌曲(4)阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。