Java面向对象_练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java基础面向对象习题1:
1.面向对象的软件开发有哪些优点?
使用面向对象思想进行开发有以下优点:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
面向对象的软件开发具有以下优点:
●把软件系统看成是各种对象的集合,这更接近人类的自然思维方式。
●软件需求的变动往往是功能的变动,而功能的执行者——对象一般不会有大的变
化。这使得按照对象设计出来的系统结构比较稳定。
●对象包括属性(数据)和行为(方法),对象把数据以及方法的具体实现方式一起封装起
来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。
●支持封装、抽象、继承和多态,提高了软件的可重用性、可维护性和可扩展性
2.在软件系统中,为什么说一个孤立的不对外提供任何服务的对象是没有意义的?
开发软件系统的目的,就是为了让它提供特定服务。从使用者的角度出发,整个软件系统就是一个服务提供者。大的系统由多个子系统组合而成。在系统内部,每个子系统(对象或对象的组合)也都是服务提供者,它们为其它子系统或者所属的大系统提供服务,各个系统之间通过发送消息来互相获得服务。因此,一个孤立的不对外提供任何服务的系统是没有任何意义的
3.列举一些现实生活中的例子,来说明什么是依赖关系、什么是聚和关系,以及什么
是关联关系。
依赖关系:人依赖食物;电视机依赖电;理发师依赖剪刀和吹风机;鱼依赖水聚集关系:电脑由显示器、主机和键盘等聚集而成;
关联关系:公司和员工;银行和客户;老公和老婆
4.列举一些现实生活中的例子,来说明什么是封装,什么是接口。
封装:电脑主机的组件被封装在机箱内;电视机的内部构件也被封装在大壳子内
接口:电脑的键盘上的按键是电脑向人提供的接口;电脑上的USB插口是向移动硬盘提供的接口;电脑上的光盘驱动器是向光盘提供的接口。
5.抽象的最主要的特征是什么?
抽象是指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。抽象是一种由具体到抽象、由复杂到简洁的思维方式。
6.在建立对象模型时,要经历哪些抽象思维过程?
(1)从问题领域的事物到软件模型中对象的抽象
(2)从对象到类的抽象
(3)从子类到父类的抽象
7.类就是程序员自定义的类型,这句话对吗?
对的。
对象模型中的类可看作是开发人员自定义的数据类型,Java虚拟机的运行时环境封装了把自定义的数据类型映射到计算机的内置数据类型的过程,使得开发人员不必受到计算机的内置数据类型的限制,对任意一种问题领域,都可以方便的根据识别对象、再进行分类(创建任意的数据类型)的思路来建立对象模型。
8.小王本来体重 70Kg,经过减肥,体重降到 45Kg,试从这个问题领域中识别对象、
类、属性、行为、状态,和状态变化。
对象:小王
类:人
属性:体重行为:减肥
状态:减肥前状态:小王体重70Kg;
减肥后状态:小王体重45Kg
状态变化:减肥行为使得小王的体重发生了变化
9.画出UML框图中的继承(泛化)、实现和依赖的连接线。
状态转换图、时序图和协作图则构成了系统的动态结构;用例图、类框图、组件图和部署图等四个图形,构成了系统的静态结构;
Java基础面向对象习题2:
1.继承有哪些优点和缺点?
2.继承与组合有哪些异同?
3.方法覆盖必须满足哪些规则?
4.以下哪些代码能够编译通过?
a) class Fruit { }
public class Orange extends Fruit {
public static void main(String[] args){ Fruit f=new Fruit();
Orange o=f;
}
}
b) class Fruit {}
public class Orange extends Fruit {
public static void main(String[] args){ Orange o=new Orange();
Fruit f=o;
}
}
c) interface Fruit {}
public class Apple implements Fruit {
public static void main(String[] args){ Fruit f=new Fruit();
Apple a=f;
}
}
d) interface Fruit {}
public class Apple implements Fruit {
public static void main(String[] args){ Apple a=new Apple();
Fruit f=a;
}
}
e) interface Fruit {}
class Apple implements Fruit {}
class Orange implements Fruit {}
public class MyFruit {
public static void main(String[] args){ Orange o=new Orange();