首页 > 代码库 > 面向对象
面向对象
1
什么是面向对象程序设计,它与传统的结构式程序有什么不同。
面向对象程序设计是一种适用于设计、
开发各类软件的范型。
它是将软件看成是一个由
对象组成的社会:
这些对象具有足够的智能,
能理解从其他对象接受的信息,
并以适当的
行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,
将所模拟的现实世界中的事物直接映射到软件系统的解空间。
与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点
(自顶向下、逐步求精的设计原则)
。而二者之间的最大差别表现在:
·
面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避
免了结构式程序由于数据和过程分离引起的弊病。
· 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式
程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的
2
用面向对象方法建立模型的思维过程是怎样的。
用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象
要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:
·
知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。
·
具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是
把握具体对象的多样性的统一和不同规定的综合。
3
解释以下概念:
①
对象
:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以
区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作
决定对象的一种功能或行为
(为自身服务的操作和为其他对象提供服务的操作)
。
而在
面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,
而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。
②
消息
:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是
由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。
③
类
:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而
在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码
共享的手段。
④
实例
:任何一个对象都是该对象所属类的一个具体实例。
⑤
公有消息
:是由对象外向对象发送的消息,用于激活该对象的某种方法。
⑥
私有消息
:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该
对象发送。
⑦
消息序列
:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完
成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。
4
类与实例的关系如何?
类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有:
·
相同的操作集合;
·
相同的静态属性集合;
·
不同的对象名和属性动态值。
wk_ad_begin({pid : 21});wk_ad_after(21, function(){$(‘.ad-hidden‘).hide();}, function(){$(‘.ad-hidden‘).show();});
5
解释以下概念:
①
封装
:封装是数据隐藏设计思想的实现,它必须具备三个要素:
·
具有一个确定的边界,
对象的所有私有数据、内部程序
(成员函数)
细节都被固定
在这个边界内部;
·
具有一个接口,这个接口描述对象之间的相互作用的规格说明,即消息;
·
对象内部的实现代码受到封装的保护,
其他对象不能直接修改该对象所拥有的数据
和代码。
②
协议
:对象对外服务的说明
③
继承
:继承表达了一种对象类之间的相交关系,它使得某类对象可以继承另一类对象
的特征和功能。
④
单继承
:一个类只从一个已有类(父类)中继承特征和功能。
⑤
多继承
:一个类只从不止一个已有类(父类)中继承特征和功能。
⑥
委托
:委托是将一个对象的工作分配给与该工作相关的特定的对象去完成的代码重用
机制,它是一种既可以静态实现又可以动态实现的复杂关系。
⑦
重载
:通过为函数或运算符创建附加定义,使相同名字的函数或运算符在不同的场合
可以表现出不同的行为。
⑧
抽象类
:抽象类是一个用于一组具有相同接口的类的公共基类,它刻划了所有由它派
生的类的统一的接口定义,但只描述这些接口协议的部分实现,而完整的实现要由派
生类完成。因此抽象类不能创建实例(对象)
。
⑨
类的层次
:有类的继承关系构成类结构。
6
面向对象程序设计的软件生命周期有哪几个阶段,它与传统的程序设计有什么不同?
面向对象软件的开发生命周期是由分析、
设计、
演化和维护四个阶段组成的。
每个阶段
都可以反馈,是一个迭代、渐增的开发过程。
这种迭代、
渐增过程不仅贯穿整个软件生命
周期,并且表现在每个阶段中特别是分析
(
全局分析、局部设计
)
和设计(全局设计、局部
设计)阶段。这与传统的程序设计所遵循的分析、设计、编码、调试和维护五个阶段组成
的瀑布式生命周期有着很大不同,
更符合随着人的认识逐步深化,
软件分析、
设计逐步求
精的规律,更有利于软件的编码、调试和维护、扩展。
7
在认真阅读使用
UML
为网上拍卖程序建模的实例的基础上,
试叙述你对在面向对象程序
设计中建模的重要性和使用
UML
进行建模的优点的理解。
软件的概念模型能帮助开发人员认识所设计系统的需求,
便于用户和开发人员充分交流
并达成一致;能管理系统分析、设计阶段繁杂信息;能准确描述系统分析、设计的结果,
从而成为编码、调试和维护的依据。使用
UML
进行建模可以提高我们在
OO
软件开发的
每个阶段的工作效率
——
从记录新的问题领域中心概念的一些最初想法,
到组织开发人
员与领域专家进行交流,直到最终软件产品的图形文档记录等。这些优点主要表现在:
·
直观、易于理解问题领域和发现设计中的错误,特别是那些有关对象间关系的错误;
·
便于准确地从模型到实际应用编码的转换;
·
用于系统的调试和出问题时检错的依据。
8
试创建一个用例图,描述下面这些角色和用例:
①
一个名称为
Student
的角色。
②
一个名称为
College
的角色。
③
下面这些用例是
Student
角色特有的:
·
List All Courses
:列出全部课程,以便学生选课。
·
Pay Fees
:付费。
·
Registration
:注册。
·
Search for a Course
:帮助学生决定登记一门课程,该用例应该是对用例
List All
Courses
迭代(
generalization
)过程的一般化。
④
下面这些用例是
College
角色特有的:
·
Maintain a Database of Students
:维护学生数据库。
·
Registration
:注册(与
Student
的同名用例是同一个用例)
。
·
Administer Examinations
:考试管理。
·
Check Student Qualification
:学生资格审查,该用例包含(
include
)接受学生的
注册申请。
面向对象