Java面向对象程序设计练习题
【练习题】01.类的成员变量 猜数字游戏 一个类A有一个成员变量v 有一个初值100。定义一个类 对A类的成员变量v进行猜。如果大了则提示大了 小了则提示小了。等于则提示猜测成功。
【练习题】02.类的成员变量 请定义一个交通工具(Vehicle)的类 其中有: 属性 速度(speed) 体积(size)等等方法 移动(move()) 设置速度(setSpeed(int speed)) 加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象 并通过方法给它初始化speed,size的值 并且通过打印出来。另外 调用加速 减速的方法对速度进行改变。
【练习题】03.类的成员变量与方法、构造方法在程序中 经常要对时间进行操作 但是并没有时间类型的数据。那么 我们可以自己实现一个时间类 来满足程序中的需要。定义名为MyTime的类 其中应有三个整型成员 时 hour 分 minute 秒 second 为了保证数据的安全性 这三个成员变量应声明为私有。为MyTime类定义构造方法 以方便创建对象时初始化成员变量。再定义diaplay方法 用于将时间信息打印出来。为MyTime 类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。
【练习题】04.构造方法编写Java程序 模拟简单的计算器。定义名为Number的类 其中有两个整型数据成员n1和n2 应声明为私有。编写构造方法 赋予n1和n2初始值 再为该类定义加 addition 、减 subtration 、乘 multiplication 、除 division 等公有成员方法 分别对两个成员变量执行加、减、乘、除的运算。在main方法中创建Number类的对象 调用各个方法 并显示计算结果。
【练习题】05.构造方法 编写Java程序 用于显示人的姓名和年龄。定义一个人类 Person 该类中应该有两个私有属性 姓名 name 和年龄 age 。定义构造方法 用来初始化数据成员。再定义显示 display 方法 将姓名和年龄打印出来。在main方法中创建人类的实例 然后将信息显示。
【练习题】06.get方法和set方法定义一个类 该类有一个私有成员变量 通过构造方法将其进行赋初值 并提供该成员的getXXX()和setXXX()方法提示 假设有private String name;则有public void setName(String name){ https://www.360docs.net/doc/957496906.html, = name; } public String getName(){ return https://www.360docs.net/doc/957496906.html,; }
【练习题】07.构造方法与重载为“无名的粉”写一个类 class WuMingFen 要求 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true); 3.重载构造方法 使得初始化过程可以多样化 WuMingFen f2 = new WuMingFen("牛肉",2); 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen(); 5.写一个普通方法 check() 用于查看粉是否符合要求。即 将对象的三个属性打印在控制台上。
【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含
String类型的成员属性brand 商标 和color 颜色 还应包含成员方法run 行驶 在控制台显示“我已经开动了” 和showInfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。编写Car 小汽车 类继承于V ehicles类 增加int型成员属性seats 座位 还应增加成员方法showCar 在控制台显示小汽车的信息 并编写构造方法。编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员方法showTruck 在控制台显示卡车的信息 并编写构造方法。在main方法中测试以上各类。
【练习题】09.构造方法与重载定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例时 把以上三个信息都作为构造函数的参数输入 其中用户ID 和用户密码时必须的 缺省的email地址是用户ID加上字符串"@https://www.360docs.net/doc/957496906.html,"
【练习题】10.构造方法与重载、包编写Addition类 该类中应包含一组实现两数相加运算的重载方法。实现加法运算的方法 应接受两个参数 即加数和被加数 方法将两个参数进行加法运算后 返回相加结果。考虑可能针对不同的数据类型进行计算 重载一组方法 包括整型、长整型、浮点型、双精度浮点型、还有字符串。在main方法中创建Addition 类的实例 分别调用重载方法测试其效果。应将Addition类打入到包中 以自己名字的拼音为包命名。
【练习题】11.构造方法与重载将上次练习题三中编写的MyTime类打到以自己名字的拼音命名的包中 并为该类重载一组构造方法 以方便使用者能够以多种形式初始化该类的实例。
【练习题】12.构造方法与重载建立一个汽车类 包括轮胎个数 汽车颜色 车身重量等属性。并通过不同的构造方法创建事例。至少要求 汽车能够加速 减速 停车。要求 命名规范 代码体现层次 有友好的操作提示。
【练习题】13.构造方法与重载创建一个类 为该类定义三个构造函数 分别执行下列操作
1、传递两个整数值并找出其中较大的一个值
2、传递三个double值并求出其乘积
3、传递两个字符串值并检查其是否相同
4、在main方法中测试构造函数的调用
【练习题】14.Static关键字与普通变量的区别 创建一个名称为StaticDemo的类 并声明一个静态变量和一个普通变量。对变量分别赋予10和5的初始值。在main()方法中输出变量值。
【练习题】15.继承 创建一个名称为MainPackage的包 使它包含MainClass和MainSubClass类。MainClass类应当包含变量声明 其值从构造函数中输出。MainSubClass 类从MainClass派生而来。试执行下列操作 创建一个名称为SamePackage的类 使它导入上述包 并创建一个MainSubClass类的对象。
【练习题】16.包、继承、构造函数创建一个名称为MainPackage的包 使它包含MainClass 和MainSubClass类。MainClass类应当包含变量声明 其值从构造方法中输出。MainSubClass
类从MainClass派生而来。试执行下列操作 创建一个名称为SamePackage的类 使它导入上述包 并创建一个MainSubClass类的对象。
【练习题】17.继承 创建一个父类和子类 父类有一个数据成员 子类继承父类的该数据成员 通过构造函数初始化并显示该数据成员的值。
【练习题】18.覆盖、继承建立一个汽车Auto类 包括轮胎个数 汽车颜色 车身重量、速度等成员变量。并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。再定义一个小汽车类Car 继承Auto 并添加空调、CD等成员变量 覆盖加速 减速的方法
【练习题】19.抽象类与继承设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。使用继承将这些图形分类 找出能作为基类部分的共同特征(如校准点)和方法(如画法、初始化) 并看看这些图形是否能进一步划分为子类。本题只考虑实现思想 不考虑具体实现的细节 实现方式可自由发挥。
【练习题】20.抽象类 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承 并在这两个类中实现NoOfWheels方法。在Car类中 应当显示“四轮车”信息 而在Motorbike类中 应当显示“双轮车”信息。创建另一个带main方法的类 在该类中创建Car 和Motorbike的实例 并在控制台中显示消息。
【练习题】21.抽象类 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承 并在这两个类中实现NoOfWheels方法。在Car类中 应当显示“四轮车”信息 而在Motorbike类中 应当显示“双轮车”信息。创建另一个带main方法的类 在该类中创建Car 和Motorbike的实例 并在控制台中显示消息。
【练习题】22.接口 创建一个名称为Vehicle的接口 在接口中添加两个带有一个参数的方法start()和stop()。在两个名称分别为Bike和Bus的类中实现V ehicle接口。创建一个名称为interfaceDemo的类 在interfaceDemo的main()方法中创建Bike和Bus对象 并访问start()和stop()方法。
【练习题】23.接口 创建一个名称为Vehicle的接口 在接口中添加两个带有一个参数的方法start()和stop()。在两个名称分别为Bike和Bus的类中实现V ehicle接口。创建一个名称为interfaceDemo的类 在interfaceDemo的main()方法中创建Bike和Bus对象 并访问start()和stop()方法。
【练习题】24.抽象类、继承、接口综合设计一个系统 XXX门的实现过程 流程 设计一张抽象的门Door 那么对于这张门来说 就应该拥有所有门的共性 开门openDoor()和关门closeDoor() 然后对门进行另外的功能设计,防盗--theftproof()、防水--waterproof()、防弹--bulletproof()、防火、防锈…… 要求 利用继承、抽象类、接口的知识设计该门
【练习题】25.抽象类、继承、接口综合设计一个系统 xxx纯净水生产线目前流程是 从
某个地方把水取出来 然后经过缓冲 过滤 加热和放糖的步骤abstract 水{ public void 水(); } interface 过滤{} interface 缓冲{} interface 加热{} interface 放糖{} class 纯净水1 extends 水imps 过滤,缓冲{} class 纯净水2 extends 水imps 缓冲{} class 纯净水2 extends 水imps 过滤{} 。。。。
【练习题】26.综合题定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量1. 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有) 再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法 该方法不返回任何值 同时至少定义两个构造方法。Role类中要体现出this的几种用法。2. 从Role类派生出一个"Employee"类 该类具有Role类的所有成员 构造方法除外 并扩展salary成员变量 同时增加一个静态成员变量“职工编号 ID ”。同样要有至少两个构造方法 要体现出this和super的几种用法 还要求覆盖play()方法 并提供一个final sing()方法。3. "Manager"类继承"Employee"类 有一个final成员变量"vehicle" 4. 在main()方法中制造Manager和Employee对象,并测试这些对象的方法
【练习题】27.综合题题目 品尝饮料时间 2006-06-18 一、语言和环境 1. 实现语言 Java 2. 环境要求 JDK1.4或以上版本及其联机帮助文档二、要求1、使用命令行参数 饮料类型 输出该饮料类型的味道 如 当命令行参数为1时 结果见图1 2、如果没有该种饮料 结果见如图2 三、推荐实现步骤1、建立一个Java抽象类Drink 应当 a、声明一个抽象方法taste() 该方法负责输出饮料的味道 b、声明int型常量来代表不同的饮料类型 咖啡、啤酒、牛奶 如 c、声明静态工厂方法getDrink(int drinkType) 根据传入的参数创建不同的饮料对象 并返回该对象 建议使用switch语句。该方法要求声明DrinkNotFoundException 当没有相对应的饮料类型时 抛出该异常。2、建立Drink的具体子类 a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ;
b、实现taste()方法 要求在控制台打印各自的味道特征。3、建立异常类DrinkNotFoundException a、继承Exception b、在Drink的方法getDrink(int drinkType)中声明引发DrinkNotFoundException异常 当传入的参数没有相对应的饮料类型时 抛出异常。
c、在使用getDrink方法的类中捕捉该异常。4、建立Test测试类 测试以上内容的正确性a、编写main方法 通过命令行传参的方式传入某种饮料的类型。b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。注意捕获DrinkNotFoundException。
c、然后调用该饮料对象的taste()方法 输出该饮料的味道。5、编译程序 并运行。四、注意事项1、仔细审题 把题目要求理解准确 2、请注意多态性的运用 3、请注意代码的书写、命名符合规范 应有适当的注释。
面向对象程序设计考前复习题及答案
简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。
c++面向对象程序设计大作业
《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日
目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)
一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
面向对象程序设计 复习资料
1.对象 (1)从概念层面讲,对象是某种拥有责任的抽象。 (2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。 (3)从语言实现层面讲,对象封装了代码和数据。 2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。 3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、 迪M特原则、接口隔离原则、单一职责原则。 4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限 编程)。 开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。 OOD——运用面向对象方法进行系统设计。 OOP——运用面向对象方法进行程序设计。 6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。 优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。(3)对需求的变化具有较强的适应性。(4)支持软件复用。 OOA的三大策略是:属性策略、方法策略、对象策略。 7.(1)封装:是指对象在其操作中隐藏属性。它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。 例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里 面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。 以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。 (2)继承:可以指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的 基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。 例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的 子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它 具有家用电器类的属性和操作,这种关系就是继承。每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。 (3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上, 则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自1 / 9