面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
定义
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、
继承,帮助人们实现对现实世界的
抽象与数字建模。通过面向对象的方法,更利于人理解的方式对于复杂系统的进行分析、设计与编程。同时,面向对象能有效提高
编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。
首先根据客户需求
抽象出
业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用
多态、
继承、
封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到
高内聚、低耦合的效果,从而满足客户要求。
面向
对象的概念具体要求的确定,各自有各自的理解。
抽象级别
抽象是人类解决问题的基本法宝。良好的
抽象策略可以控制问题的复杂程度,增强系统的通用性和
可扩展性。
抽象主要包括过程抽象和数据抽象。
结构化设计方法应用的是过程
抽象。所谓过程
抽象是将问题域中具有明确功能定义的操作抽取出来,并将其作为一个实体看待。这种
抽象级别对于软件系统结构的设计显得有些武断,并且稳定性差,导致很难准确无误地设计出系统的每一个操作环节。一旦某个
客体属性的表示方式发生了变化,就有可能牵扯到已有系统的很多部分。而数据
抽象是较过程抽象更高级别的抽象方式,将描述
客体的属性和行为绑定在一起,实现统一的抽象,从而达到对现实世界客体的真正
模拟。
封装体
封装是指将现实世界中存在的某个
客体的属性与行为绑定在一起,并放置在一个逻辑单元内。该逻辑单元负责将所描述的属性隐藏起来,外界对
客体内部属性的所有访问只能通过提供的
用户接口实现。这样做既可以实现对
客体属性的保护作用,又可以提高
软件系统的可维护性。只要用户接口不改变,任何
封装体内部的改变都不会对
软件系统的其他部分造成影响。
结构化设计方法没有做到
客体的整体
封装,只是封装了各个
功能模块,而每个功能模块可以随意地对没有保护能力客体属性实施操作,并且由于描述属性的数据与行为被分割开来,所以一旦某个客体属性的表达方式发生了变化,或某个行为效果发生了改变,就有可能对整个系统产生影响。
基本概念
⑴
对象。
⑵
对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
⑶
类。
⑷类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般--具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体--部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
⑸消息和方法。
对象之间进行通信的结构叫做消息。在
对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的
对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的
对象所知道的
变量名,或者是所有对象都知道的全局
变量名。
类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。
特性
⑴
对象唯一性。
⑵
抽象性。
抽象性是指将具有一致的
数据结构(属性)和行为(操作)的对象
抽象成类。一个类就是这样一种
抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
⑶
继承性。
继承性是子类自动共享父类
数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是
面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在目前的主流语言中,C++支持
多重继承,JAVA、VB. NET、Objective-C均仅支持单继承,注意在C++多重继承时,需小心二义性。
⑷
多态性(多形性)
多态性增强了软件的灵活性和重用性。
要素
⑴抽象。
封装性是保证软件部件具有优良的模块性的基础。
⑶共享性
面向对象技术在不同级别上促进了共享
在不同应用中共享。面向
对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。
⒋强调对象结构而不是程序结构
开发方法
⒈Booch方法
⒉Coad方法
Coad方法是1989年Coad和Yourdon提出的面向
对象开发方法。该方法的主要优点是通过多年来大系统开发的经验与面向
对象概念的有机结合,在对象、结构、属性和操作的认定方面,提出了一套系统的原则。该方法完成了从需求角度进一步进行类和
类层次结构的认定。尽管Coad方法没有引入类和
类层次结构的术语,但事实上已经在分类结构、属性、操作、消息关联等概念中体现了类和类层次结构的特征。
⒊OMT方法
OMT方法是1991年由James Rumbaugh等5人提出来的,其经典著作为“面向
对象的建模与设计”。
该方法是一种新兴的面向
对象的开发方法,开发工作的基础是对真实世界的对象建模,然后围绕这些对象使用分析模型来进行独立于语言的设计,面向对象的建模和设计促进了对需求的理解,有利于开发得更清晰、更容易维护的
软件系统。该方法为大多数应用领域的
软件开发提供了一种实际的、高效的保证,努力寻求一种问题求解的实际方法。
⒋
UML(Unified Modeling Language)语言
软件工程领域在1995年~1997年取得了前所未有的进展,其成果超过软件工程领域过去15年的成就总和,其中最重要的成果之一就是
统一建模语言(UML)的出现。UML将是
面向对象技术领域内占主导地位的
标准建模语言。
UML不仅统一了Booch方法、OMT方法、OOSE方法的表示方法,而且对其作了进一步的发展,最终统一为大众接受的
标准建模语言。UML是一种定义良好、易于表达、功能强大且普遍适用的
建模语言。它融入了
软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向
对象的分析与设计,还支持从
需求分析开始的软件开发全过程。