理解面向对象

2016/09/23 uml oop

面向对象并不只局限于对象的属性和行为建模,它还包含对象的其他方面。这些方面包括抽象(Abstraction)、继承(inheritance)、多态(polymorphism)和封装(encapsulation)。其他3种重要的面向对象的概念是消息传递(message sending)、关联(association)和聚集(aggregation)。

什么是类

  • 类是用来创建对象的模板,是一种数据类型。类是具有相同属性和操作的一类对象集的统称。
  • 类同样继承了其他类的属性和操作。

什么是对象

  • 对象是一个类的实例。
  • 对象具有自身的结构。它具有属性(特性)和行为(方法)。
  • 对象的属性和操作数目由你所处理的问题域确定。
  • 对象继承了所属类的属性和操作。

面向对象并不只局限于对象的属性和行为建模,它还包含对象的其他方面。这些方面包括抽象(Abstraction)、继承(inheritance)、多态(polymorphism)和封装(encapsulation)。其他3种重要的面向对象的概念是消息传递(message sending)、关联(association)和聚集(aggregation)。

抽象(abstraction)

简单地讲,抽象(abstraction)的意思就是过滤掉对象的一部分特性和操作直到只剩下你所需要的属性和操作。抽象对于建模者来说是最重要的技术,也就是说要搞清楚什么应该纳入模型中,什么应该舍去。

继承(inheritance)

面向对象概念中,有一种关系叫做继承。子类继承了超类(父类)的特征(属性和方法)。同时,每个子类都可以增加自己的属性和操作(方法)。

多态(重载)(polymorphism)

在多态的情况下,不同的类中可以有同名的操作(方法),每个类中发生的操作各不相同。 有一种情况重载,一个类中有相同方法,参数不同(参数个数、次序、类型不同)。重载对返回值没有要求。

封装(encapsulation)

封装是当一个对象执行自己的操作时,它对外界隐藏了操作的细节。封装有助于减少某些不利因素的影响。在一个包含对象的系统中,对象之间以各种方式相互依赖。如果其中一个对象出现故障,软件工程师不得不修改它的时候,对其他对象隐藏这个对象的操作意味着只需修改这个对象而不需要改变其他对象。封装(encapsulation)意味着对象对其他对象和外部世界隐藏了自己要做什么,因此它也被称为信息隐藏(information hiding)。但是对象总要给外部世界提供一个“接口”,用来初始化这些操作。

消息传递(message sending)

在系统中对象是要相互协作的。对象之间的协作是通过相互发送消息。一个对象发送一个操作消息(或请求)给另一个对象,收到消息的对象就执行这个操作。

关联(association)

通常情况下对象之间以某种方式发生联系,这种联系就是关联。一个类可以和多个其他的类关联。多重性(multiplicity)是对象之间关联的一个重要方面。它说明了在关联中一个类的对象可以对应另一个类的多少个对象。

聚集(aggregation)

聚集是对象之间的另一种关联,聚集的一种形式是聚集对象和它的组成对象之间具有强关联。这种聚集被称为组成(composition)。组成关键特征是部分对象只参存在于组成对象之中。有时候部分体的寿命比组成短。因为聚集和组成反映了极其普遍的现象,因而是很重要的。它们能够帮助你建立更接近现实的模型。

面向对象的意义

对象和对象之间的关联构成了系统功能的骨架。为了对系统按规定建模,必须理解这些联系是什么。如果对关联类型很明确,那么当你和客户交谈、收集他们的需求,并帮助他们建立满足业务要求的系统模型时,你的脑海里就会充满有用的点子。 运用面向对象的概念来帮助你理解客户的领域知识,或者叫做客户的领域(domain),并且用客户能够理解的术语来说明你对问题的理解,这一点是最重要的,这也是UML流行的原因。

Search

    Post Directory