面向对象

概念

编辑

⑴ 对象

对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示 抽象的规则、计划或事件。

⑵ 对象的状态和行为。

对象具有状态,一个对象用数据值来描述它的状态。

对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

对象实现了数据和操作的结合,使数据和操作 封装对象的统一体中

⑶ 

具有相同特性( 数据元素)和行为(功能)的 对象的 抽象就是类。因此, 对象的 抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种 数据类型

类具有属性,它是 对象的状态的 抽象,用 数据结构来描述类的属性。

类具有操作,它是 对象的行为的 抽象,用操作名和实现该操作的方法来描述。

⑷类的结构。

在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。

①一般--具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。

②整体--部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。

⑸消息和方法。

对象之间进行通信的结构叫做消息。在 对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的 对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的 对象所知道的 变量名,或者是所有对象都知道的全局变量名。

类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。

 

特征

编辑

⑴ 对象唯一性。

每个 对象都有自身唯一的标识,通过这种标识,可找到相应的 对象。在 对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。

⑵ 抽象性。

抽象性是指将具有一致的 数据结构(属性)和行为(操作)的对象 抽象成类。一个类就是这样一种 抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

⑶ 继承性

继承性是子类自动共享父类 数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

继承性是 面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。

在类层次中,子类只 继承一个父类的 数据结构和方法,则称为单重继承

在类层次中,子类 继承了多个父类的 数据结构和方法,则称为 多重继承

多重继承,JAVA、VB、NET、Objective-C均仅支持单继承,注意在C++多重继承时,需小心二义性

在 软件开发中,类的 继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了 对象、类的创建工作量,增加了代码的可重用性。

采用 继承性,提供了类的规范的等级结构。通过类的 继承关系,使公共的特性能够共享,提高了软件的重用性。

⑷ 多态性多形性

多态性是指相同的操作或函数、过程可作用于多种类型的 对象上并获得不同的结果。不同的 对象,收到同一消息可以产生不同的结果,这种现象称为 多态性

多态性允许每个 对象以适合自身的方式去响应共同的消息。

多态性增强了软件的灵活性和重用性。

要素

编辑

⑴抽象。

抽象是指强调实体的本质、内在的属性。在系统开发中, 抽象指的是在决定如何实现 对象之前的对象的意义和行为。使用 抽象可以尽可能避免过早考虑一些细节。

类实现了 对象的数据(即状态)和行为的 抽象

⑵ 封装性( 信息隐藏)。

封装性是保证软件部件具有优良的模块性的基础。

面向 对象的类是 封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的 作用域提供保护。

对象是 封装的最基本单位。 封装防止了程序相互依赖性而带来的变动影响。面向 对象的 封装比传统语言的封装更为清晰、更为有力。

⑶共享性

面向对象技术在不同级别上促进了共享

同一类中的共享。同一类中的 对象有着相同 数据结构。这些 对象之间是结构、行为特征的共享关系。

在同一应用中共享。在同一应用的 类层次结构中,存在 继承关系的各相似子类中,存在 数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用 继承来实现代码的共享,这也是面向 对象的主要优点之一。

在不同应用中共享。面向 对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。

⒋强调对象结构而不是程序结构

开发方法

编辑

面向 对象开发方法的研究已日趋成熟,国际上已有不少面向 对象产品出现。面向 对象开发方法有Coad方法、Booch方法和OMT方法等。

⒈Booch方法

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是一种定义良好、易于表达、功能强大且普遍适用的 建模语言。它融入了 软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向 对象的分析与设计,还支持从 需求分析开始的软件开发全过程。

posted @ 2015-11-28 10:26  刘某人丶  阅读(175)  评论(0编辑  收藏  举报