面向对象的基本原则有,抽象、分类、封装,消息通信,多态性,行为分析和复杂性控制。
一、抽象
抽象是指从事物中舍弃个别的、非本质的特征,抽取共同的,本质特征的思维方式。
从几个方面理解抽象,
1,编程语言本身越来越抽象。
过程抽象,如,函数。
数据抽象,如,类,栈。
在类的范围内,使用过程抽象来形成操作。
数据抽象是指把数据类型和施加在其上的操作结合在一起,形成一种新的数据类型。
2,在面向对象方法中,对象是对现实事物的抽象,类是对对象的抽象,一般类是对特殊类的抽象。
3,不同开发阶段需要不同程度的抽象。
分析阶段,先定义属性和操作。实现相关的放到设计阶段。
和在现实生活中一样,我们在较高的抽象层次上分析和解决问题,然后在较低抽象层次上予以落实。
抽象的好处,一是便于访问(接口),二是便于维护(可以修改替换实现不影响用户使用)。
二、分类
相同属性和相同操作 的对象划分为一类。
可以用不同程度的抽象,可进一步分为分为一般类 / 特殊类。
三,封装
两层含义,
1,把对象的属性和操作包装起来,形成一个独立的单元。
2,信息隐蔽。
在对象外部不能随意访问对象的内部数据和操作。只允许通过public操作来访问,降低了对象之间的耦合度。
只能通过消息来通信,保护内部数据安全。
四,消息通信
封装原则促使 对象之间只能通过消息通信。一个对象可以是消息的发送者,也可以是消息的接收者,还可以作为消息中的参数。
五,多态性
一般类和特殊类可以具有相同格式的属性和操作。
同一消息,不同对象对其响应,表现出不同行为。
六,行为分析
基于静态模型进行行为分析。
用状态机图分析对象的状态变迁情况。对于一个对象,由于其内部的属性值在不断发生着变化,按照一定的规则根据属性值可以把对象划分为不同的状态。在请求对象操作时,可能会使对象的状态发生变化,二对象的当前状态对随后的执行是有影响的。用状态机图跟踪变化。
用交互图来描述对象之间的协作。对象之间通过发消息共同完成某项功能。
用交互图描述对象之间的并发行为。很多系统有并发行为。从事物的并发行为起因上看,事物的每个并发行为是主动发生的。体现在对象上,就是一种对象是主动的,每个对象代表着一个进程或线程。在交互图上也能体现出对象之间的并发行为。
七,复杂性控制
为了控制系统模型的复杂性,引入了包(package)的概念。
用分析包和设计包来分别组织分析模型和设计模型,以显示地描述不同抽象层次的模型。
对复杂类图也可以按类之间关系的紧密程度来用包来组织类。