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(耦合)
. 组件之间依赖关系的度量;
. 内聚: 一个组件独立完成工作的能力;
. 耦合: 组件之间依赖关系的度量;
. 系统的耦合性越小越好,系统的内聚性越高越好。高内聚,低耦合
Polymorphism(多态)
编译时多态(方法重载)、运行时多态(父类引用指向子类对象)
. 一种行为在不同的环境下所变现出来不同的行为;
. 不同对象完成相同语义上的结果;
. 基于继承或实现;
. 多态功能的实现依赖于它应用的对象;
. 举例:足球-扔-需二只手、网球-扔-只需一只手,同样是扔,有不同的实现。当你将不同的球给一个小孩子,
他知道是用一只手还是二只手。小孩都知道多态。
分享到:
相关推荐
面向对象设计(Object-Oriented Design,OOD)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题域转化为计算机程序。UML(Unified Modeling Language)是面向对象设计的一种标准化建模语言,用于可视化...
### UML面向对象设计基础 #### 基本概念与符号表示 《UML面向对象设计基础》一书详细介绍了面向对象软件设计的基础知识,包括基本概念、符号表示、术语、准则和原理。面向对象设计是一种软件设计范式,强调通过对象...
面向对象设计UML实践是...总之,理解和掌握UML对于软件工程师来说是一项基础且重要的技能,通过《面向对象设计UML实践》第二版的课后题答案,读者可以系统地提升这方面的能力,为日后的软件开发工作打下坚实的基础。
面向对象设计是在分析的基础上进行的,它关注于如何将需求转化为软件系统的内部结构。设计阶段的输出通常包括更详细的类图、活动图、序列图、状态图和组件图等UML模型。设计过程还会确定系统组件的接口和协作方式。 ...
《UML面向对象设计与分析》是清华大学出版社出版的一本专著,由牛丽平编著,主要探讨了面向对象设计的重要工具——统一建模语言(UML)。这本书深入浅出地介绍了UML的各种图表及其在软件开发过程中的应用,为读者...
"C++面向对象程序设计第三版谭浩强教学大纲.pdf" 本资源摘要信息涵盖了C++面向对象程序设计的基本概念、数据存储、程序设计初步、函数、数组、指针、用户自定义数据类型、类和对象的程序设计等方面的知识点。 第一...
封装是面向对象设计的核心概念之一。它指的是将对象的状态(属性)和行为(方法)捆绑在一起,并对外隐藏对象的实现细节。封装可以通过访问修饰符来实现,比如public、protected和private,它们控制类成员的可见性和...
面向对象程序设计第一次离线作业 面向对象程序设计(Object-Oriented Programming,OOP)是一种编程范式,它将程序看作是一组对象的集合,对象之间通过消息进行交互。在这个离线作业中,我们将学习到面向对象程序...
1. **面向对象编程基础**:面向对象编程(OOP)是一种编程范式,它基于“对象”的概念,强调数据和操作数据的方法结合在一起。Java作为一款纯面向对象的语言,其一切皆为对象,包括基本类型都有对应的包装类。 2. *...
面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 178 借鉴RUP的UML建模与分析 213 第四单元:设计模式与软件设计思想 267 设计模式 268 常用的软件架构风格及适用情况...
详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...
1. **可维护性**:就像活字印刷中的文字可以单独修改一样,面向对象设计中的类和方法也是相对独立的单元,修改一个类或方法通常不会影响到整个系统的运行。这使得在需求发生变化时,开发人员能够快速定位并修改相关...
《C++面向对象程序设计(第2版)》是一本深度探讨C++编程技术的教材,尤其专注于面向对象的设计和实现。此资源包含了全面的课件,旨在帮助学习者掌握C++的核心概念以及面向对象编程的基本原则。面向对象编程(Object...
9. **OO设计**:这部分内容可能涵盖了面向对象设计的整体流程,包括分析结果的转化、类的设计原则、接口设计等。 通过这些课件,学习者可以深入了解面向对象分析与设计的全貌,掌握从需求分析到系统实现的关键步骤...
首先,第1章“面向对象程序设计概述”引入了面向对象的基本理念,包括封装、继承和多态性三大核心概念。面向对象编程允许我们将复杂的问题分解为独立的对象,这些对象可以相互协作完成任务,提高代码的可读性和复用...
《面向对象分析与设计(第3版)》是一本全面介绍面向对象方法论的经典著作,由Grady Booch、Robert A. Maksimchuk、Michael W. Engle、Bobbi J. Young、Jim Conallen 和 Kelli A. Houston 共同编写。本书旨在为读者...