面向对象设计第一话

Object-Oriented Analysis and Design
OOAD方法论的定义:
1) 面向对象是一种系统建模技术;
2) 将系统描述为许多相互作用的有关系对象;
3) 系统中相互作用的对象被组织成类;
4) OO方法论由以下三部分组成:
. 一个过程
. 一个符号
. 一系列规则


一、面向对象的概念
对象
1) 是单个的、唯一确认的实体或项目;
2) 作为面向对象的构建块被使用;
3) 有身份、数据和行为;
4) 可以是简单或复杂的;
5) 可以是具体或抽象的;
6) 有属性和方法;
7) 是一个类的动态实例;

类 ,多个相同对象的一种抽象,多个对象共性的抽取,对象都创建自类

面向对象编程的特征 (OOA,OOD,OOP)
1) Abstraction(抽象):
有三种形式:■ 对现实生活中一些事物共性的提取;■ 类是对对象的抽象;■ 泛化的过程
. 忽略细节,处理对象或实体本质的特征,抽取共性;
. 简化功能以及信息;
. 帮助用户和对象交互;

2) Encapsulation(封装):
. 控制对象的边界;
. 控制对象对外的接口;
. 隐藏对象的数据;
. 处理每个对象的二种视图:
a. 外部视图:显示一个对象做什么;
b. 内部视图:显示对象如何完成它的任务;

3) Association(关联)
A对象通过B对象的引用来访问B对象的方法时,称A关联B。
4种方法关联:构造方法设置;set方法设置;方法参数传引用;在方法内部new出对象
. 对象间交互的方式;
. 对象间相互使用其功能;
. 一个对象使用另一个对象的服务或操作另一个对象,这时候对象相互关联。

■ 关联是有方向性的
A对象通过B对象的引用来访问B对象的方法时,A关联B ,单向关联
A、B互拿对方引用,双向关联

■ 关联关系有多重性
class A{
private List<C> list = new ArraryList<C>();
}
A与C是一对多的单项关联
一个A对应多个C,一个C对应一个A
若Class C{
private A a;
}
则称为A与C是一对多的双向关联。
若Class C{
private List<A> a;
}
则称为A与C是多对多的双向关联。

■ 关联的2种方式:聚合和依赖
序列化一个对象,就是序列化和他有聚合关系的对象
只关注聚合关系的关联是狭义的关联
class A{
private B b; //聚合关系,has a关系,A有B,B是A的属性,是个实例变量,关联性强
public A(B b){ //A是外部对象,B是内部对象,A聚合B
this.b=b;
}
public void action(C c){
c=new C(); //依赖关系,use a关系,A使用C,C是A的局部变量
}
}


4) Aggregation(聚合)
. 定义一个对象是另一个对象的一个组成部分;
. 是一种比较强的关联;
. 一个对象是另外一个对象的组成部分(特殊的关联)。
. 通过“Has A”关系可进行确认。一辆车有轮子、座椅以及门,它们是一部车的组成部分。
假如你移除其间的任何一部分,车没有了相应的功能,但仍是一部车。

5) Composition(组合 )
■ 组合的关联关系是最强的
. 一个对象包含另一个对象(has a的关系);
. 是最强的关联形式;
. 外部对象全程负责内部对象的生命周期(特殊的聚合)
. 通过“contain”关系可进行确认。
. 假设部件不存在,对象亦不存在。

一种特殊的聚合,外部对象管理内部对象的生命周期
有外部对象不一定有内部对象
有内部对象一样要有外部对象
内部对象的创建往往是由外部对象自己控制的

6) Inheritance(继承)
泛化和特化
. 是一种根据既存类定义新类的机制;
. 通过“Is A”或者“Kind of”关系可进行确认;
. 允许你组织相关类,这样这些类可共同地被管理以及重用。

7) Cohesion(内聚)和Coupling(耦合)
. 组件之间依赖关系的度量;
. 内聚: 一个组件独立完成工作的能力;
. 耦合: 组件之间依赖关系的度量;
. 系统的耦合性越小越好,系统的内聚性越高越好。高内聚,低耦合

8)Polymorphism(多态)
编译时多态(方法重载)、运行时多态(父类引用指向子类对象)
. 一种行为在不同的环境下所变现出来不同的行为;
. 不同对象完成相同语义上的结果;
. 基于继承或实现;
. 多态功能的实现依赖于它应用的对象;
. 举例:足球-扔-需二只手、网球-扔-只需一只手,同样是扔,有不同的实现。当你将不同的球给一个小孩子,
他知道是用一只手还是二只手。小孩都知道多态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值