1、面向对象的基本概念?
软件工程学家Coad和Yourdon曾给出了一个简单的定义:面向对象 = 对象 + 类 + 继承 + 通信。如果一个软件系统用了以上4个概念设计并加以实现,则认为这个软件系统是面向对象的。
面向对象的基本观点可以概括如下:
(1)客观世界由对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成。
(2)具有相同数据和操作的对象可归纳成类,对象是一个类的实例。
(3)类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性。
(4)对象之间的联系通过消息传递来维系。由于类的封装性,它具有某些对外界不可见的数据,这些数据只能通过消息请求调用可见方法来访问。
面向对象方法的基本出发点就是尽可能地按照人类认识世界的方法和思维方式来分析和解决问题,使人们分析、设计一个系统的方法尽可能地接近认识一个系统的方法。
2、面向对象的几个核心元素?
- 对象
在面向对象技术中,对象是必不可少的。客观世界里的任何实体都可以被称之为对象,对象可以是具体有形的物,如:人、车等。也可以是无形的事务和概念,如:抽象的规则、计划、或事件。
2)封装
封装是面向对象必须可少的一个重要原则。封装是指把属性和操作封进一个对象里,它的内部信息对外界是隐藏的,不允许外界直接存取对象的属性,只能通过对象提供的有限的接口对对象的属性数据进行操作。
封装的二层含义:
(1)结合性,即把对象的所有属性和方法结合起来,形成一个独立的不可分割的单位。
(2)信息隐蔽性,即尽可能的隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。
封装的基本单位是对象。
3)消息
消息就是向对象发出的请求,一个消息包含消息名、接收对象的标志、服务的标志、输入信息、回答信息等。
在对象传递的消息中只包含发送者的要求,它指示接收者要完成哪些处理,但并不告诉接收者应该如何完成这些处理,接收者接收到消息后要独立决定采用什么方式完成所需的处理。
一个对象接收多个形式、内容不同的消息;相同形式的消息可以送往不同的对象。不同的对象对于形式相同的消息可以有不同的解释,做出不同的反应。
4)类
类是一组具有相同数据结构和相同操作的对象的集合。
类是对象的抽象,它将一组数据属性和在数据上的一组合法操作抽象封装。
类好比是一个对象的模板,基于类就可以生成多个具有不同属性值的对象,在类的定义中,可以为某个属性指定一个值,作为它的默认值。
5)继承
继承是指子类可以自动拥有父类的全部属性与操作。这种使用已存在的定义多为基础建立新定义的技术使得父类和子类之间能够共享数据和方法。
继承分类:
(1)单继承:构成的类之间的关系是一棵树。
(2)多继承:构成的类之间的关系是一个图。
继承简化了对现实世界的描述,定义子类时不必重复定义哪些在父类已经定义过的属性与操作,而只专注于自己特有的属性与操作。有了继承机制,软件的可复用性得到提高。
6)多态性
多态性是面向对象技术的一个重要概念。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通常通过派生类重载基类的同名函数来实现。
多态分为以下二种:
一、编译时的多态。编译时的多态是通过重载来实现的。系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。
二、运行时的多态。运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。
多态的实现方式:
(1)通过接口实现多态性。
(2)通过继承实现多态。
(3)通过抽象类实现多态。
7)结构与连接
为了使系统能够有效的映射问题域,系统开发者需认识并描述对象之间的以下几种关系:
对象的分类关系、对象之间的组成关系、对象属性之间的静态联系、对象行为之间的动态联系。面向对象方法分别利用一般/特殊结构、整体/部分结构、实例连接和消息连接描述对象之间的这4中关系。
(1)一般/特殊结构
一般/特殊结构又称作分类结构,是一组由一般/特殊关系的类所组成的结构。
(2)整体/部分结构
整体/部分机构又称组装结构,描述对象之间的组成关系。
(3)实例连接
实例连接反映了对象与对象间的静态关系,例如教室与学生的关系。这种关系的实现可以通过对象的属性来表达。
(4)消息连接
消息连接描述对象的动态联系。若一个对象在执行服务时需要通过消息请求另一个对象为它完成某个服务,则表明第一个对象与第二个对象之间存在着消息连接。消息连接是有向的,连接从消息发送者指向消息接收者。
3、面向对象开发语言?
1)面向对象的建模语言
2)面向对象的程序设计语言
4、面向对象的分析?
1)面向对象分析的层次
类与对象层、属性层、服务层、结构层、主题层。
上述5个层次对应着在面向对象分析过程中建立对象模型的5项主要活动:
发现对象、定义类、定义属性、定义服务、识别结构。
2)面向对象分析的基本过程
(1)发现对象,从对象中抽象出类的定义
(2)识别对象的内部特征。包括定义对象的属性和定义对象的服务。
(3)识别对象的外部关系。包括建立一般/特殊结构、建立整体/部分结构、建立实例连接、建立消息连接。
(4)划分主题,建立主题图。
(5)定义用例,建立交互图。包括发现活动者、定义Use Case、建立交互图。
(6)建立详细说明。详细说明是对模型的详细定义与解释,它可以作为一个单独的活动,通常的做法是将其分散在其他的活动中。
(7)原型开发。原型开发可以在面向对象分析过程中反复进行。
建立正确、简洁的模型的几点建议。
(1)发现活动者和定义用例二个子活动最好放在分析工作的开始。建立交互图的子活动最好安排在建立基本模型之后。
(2)建立基本模型的3个活动应该安排得靠近一点,这样可以根据需要随时从一个活动切换到另一个活动。
(3)划分主题的活动在分析很小的系统时可以省略;在分析中小规模的系统时可放在基本模型建立之后;在分析大型系统时最好在建立基本模型之前进行。
(4)建立详细说明的活动可以结合在其他活动之中分散进行。
(5)原型开发需要反复的进行。在认识了基本模型中一些主要的对象之后就可以做一个最初的原型,随着分析工作的深入不断地进行增量式原型开发。
3)面向对象分析的基本原则
(1)抽象原则
(2)分类原则
(3)聚合原则
(4)关联原则
(5)消息通信原则
4)发现对象和定义类
(1)发现对象
问题域和系统责任是发现对象的根本出发点,二者从不同角度分析应该抽象出那些对象。
前者侧重于客观存在的事物与系统中对象的映射;后者侧重于系统责任范围内的每一项职责由哪些对象来完成。
(2)抽象出对象类
对象正确识别后,就要将每种对象抽象成类。
定义对象类常见的问题以及解决办法?
– 类的属性和方法不适合该类的全部对象。(“光盘”和“洗衣机” 同意归为“商品”)
–出现属性和方法相似的类。考虑建立一般/特殊结构、整体/部分结构,以简化类的定义
–出现对同一事物的重复描述。例如:学生证对学生、图书索引卡对图书、驾照对司机。
(3)对象之间的通信
各个对象并非孤立存在,只有定义和描述了对象类之间的关系,各个对象类才能构成一个完整的系统模型。
**5)面向对象的高层设计**
高层设计的主要任务就是设计:问题域部分、人机交互部分、任务管理部分和数据管理部分。
高层设计的准则:
-- 弱耦合。各个系统模块之间相互独立,模块之间应该遵循弱耦合。
--强内聚。子系统应当把那些成组的类打包,形成高度的内聚。
--减少通信开销。应使得在子系统的各个高层部件之间的通信量达到最小。
--良好的可扩充性。尽量合理的使用继承机制,继承机制以二种方式支持扩充设计:第一、继承关系有助于复用已有定义,使开发新定义更加容易;
第二、在面向对象的语言中,类型系统的多态性也支持可扩充的设计。
问题域子系统的设计:
本文围绕面向对象展开,介绍其基本概念,包括对象、类、继承和通信等。阐述核心元素,如封装、消息、多态性等。还提及面向对象开发语言,分析其层次、基本过程、原则,以及发现对象和定义类的方法与常见问题解决办法。
3007

被折叠的 条评论
为什么被折叠?



