面向对象分析设计

转载地址:点击打开链接


面向对象分析设计-------01基础

本文章的三大目标:

灯泡OO:建立对象的思维方式,对面向对象思想和理论有进一步的理解

灯泡UML:能够熟练地使用UML表达面向对象的设计思想

灯泡Model:运用对象技术的一般原则和模式进行应用系统的分析和设计建模

目录:

一、开篇亮剑:面向对象vs结构化

    1、从设计设计思想的角度比较

    2、(程序)实现角度比较

    3、从建模的角度

二、了解对象技术(Object Technology)

     定义

     特点

     Object Technology发展史

三、核心概念:对象与类

    1、对象

    2、类

    3、对象与类的关系

四、对象技术相关原则

    对象技术基本原则

    对象技术相关机制


一、开篇亮剑:面向对象vs结构化

1、从设计设计思想的角度比较

                      结构化                        面向对象

结构化思维用过程刻画数据间关系

对象思维直接用类表达数据间关系

结构化中,数据是死的,全部依赖算法操作

数据是活的,“她”知道自己的信息(属性),并能完成自己的工作(操作)

结构化思维更像是一个人在解决所有问题

对象思维更像是一个团队的分工协作

2、(程序)实现角度比较

             结构化               面向对象

数据结构+算法=程序设计

以对象为中心组织数据与操作

数据

对象属性

类型与变量

类与对象实例

函数(过程)调用

消息传递

类型与子类型

一般类与特殊类,继承

构造类型

整体-部分结构,聚合

指针

关联

3、从建模的角度

 

传统结构化方法

面向对象方法(UML)

需求模型

输入I、处理P、输出O的视角。

面向功能的文档(用户需求规格说明书)需求变化,其功能变化,所以系统的基础不稳固

从用户和整体角度出发。

使用系统抽象出用例图、活动图,获取需求;如需求变化,对象的性质相对功能稳定,系统基础稳定

分析模型

面向过程的数据流图DFD、 实体—关系图ERD、数据字典DD表示分析模型

功能分解,数据和功能/过程分开

把问题作为一组相互作用的实体,显式表示实体间的关系

数据模型和功能模型,状态、顺序、通信、活动图细化说明一致

类、对象图表示分析模型

设计模型

功能模块(SC图),模块之间的连接/调用是模块的附属形式

类和对象实现, 类/对象的关联、聚集、继承等连接、连接规范和约束作为显式定义

实施模型

体系结构设计

构件图,部署图

测试模型

根据文档进行单元测试,集成测试,确认测试

单元测试采用类图,集成测试用实现图和交互图,确认测试采用用例图

 

二、了解对象技术(Object Technology)

定义:A set of principles (abstraction, encapsulation, polymorphism, ..) guiding software construction, together with languages, databases, and other tools that support those principles.

特点:

1、模拟

可以顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为。

面向对象实例表示:

东北人都是活雷锋

老张开车去东北…… 撞啦!

class 人 {

Region 籍贯;

}

class Region {

}

interface 雷锋 {

helpPeople(){ }

}

class 东北人 extends 人 implements 雷锋 {

籍贯 = 东北;

helpPeople(){ }

}

class Car{

DriveTo(Region) throws Exception (撞车){}

人 Driver;

}

Main Program {

人 老张;

Car 夏利;

夏利.Driver = 老张;

try {

夏利.DriveTo(东北);

}

catch (Exception) { }

}

2、稳定

较小的需求变化才不会导致系统结构大的改变。

image

所以,可以把交不稳定的数据和功能用较稳定的类包起来,是的设计更加健壮。

3、复用

代码重用:类库、框架等重用机制

通过继承、关联、封装等手段

 

Object Technology发展史

image

 

三、核心概念:对象与类

1、对象

定义:

An object is an entity with a well-defined boundary and identity that encapsulates state and behavior.

State is represented by attributes and relationships.

Behavior is represented by operations, methods, and state machines.

星星每一个对象都有一个唯一的标识, 即使其状态有可能与其它对象一样

星星一个对象的状态是它反映于现实世界的一系列属性

星星对象的行为定义当其它对象发出请求时,该对象如何反应

在UML中的表示形式:

An object is represented as a rectangle with an underlined name.

image

2、类

定义:

A class is a description of a set of objects that share the same attributesoperationsrelationships, and semantics.

An object is an instance of a class.

image

在UML中的表现形式:

A class is represented using a rectangle with compartments.

image

3、类和对象的关系

image

星星类是生成对象的模板:类的定义中包含有产生和删除对象的操作。

星星每一个对象都是某一个类的实例。

星星每一个类在某一时刻都有零个或更多的实体

星星类是静态的;它们的存在、语义和关系在执行前就已经定义好了

星星对象是动态的;它们在程序执行时可以被创建和删除

 

四、对象技术相关原则

对象技术基本原则:

抽象(Abstraction) image
封装(Encapsulation) 为了保持数据一致性 

struct ShippingAddress {

long cityCode;

String address;

}

改成

class ShippingAddress {

private long cityCode;

private string address;

public long ModifyAddress(String address)

}

模块(Modularity)

Breaks up something complex into manageable pieces

image
层次(Hierarchy) image

对象技术相关机制:

泛化(Generalization)

relationship among classes where one class shares the structure and/or behavior of one or more classes.

什么是继承

A subclass inherits its parent’s attributes, operations, and relationships .

imageimage

 

单一继承                                                            多重继承

imageimage

多态(Polymorphism)

The ability to hide many different implementations behind a single interface.

image

class abstract Shape {

public abstract void draw();

}

class Rectangle extends Shape {

// 覆盖(override)基类方法

public void draw() { ... 
/* 绘制矩形 */ }

}

class Circle extends Shape {

// 覆盖(override)基类方法

public void draw() { … 
/* 绘制圆形 */ }

}

应用:1、假设我们有一个数组sharr,里面放着一排Shape,但是不知道哪些是Rectangle,哪些是Circle。利用多态性,我们可以:

for (int i = 0; i < sharr.length; ++i) {

Shape shape = (Shape)sharr[i];

shape.draw();

}

2、遍历整个数组的过程中,各个Shape自己知道应当如何在画布上绘制自己。shape.draw()这同一行代码在shape指向不同的对象时表现出不同的行为,这就是所谓多态性。


面向对象分析设计-------02UML

......


一、UML是什么?UML有什么用?

二、UML的历史

三、UML的上层结构(Superstructure)

四、UML建模工具

五、UML的图(重点)

   1、用例图(use case diagram)

   2、活动图(activity diagram)

   3、静态结构图

   4、顺序图(Sequence Diagram)

   5、交互纵览图(Interaction Overview Diagram)

   6、通信图(Communication Diagram)

   7、时间图(Timing Diagram)

   8、状态机图(State Machine Diagram)

   9、构件图(Component Diagram)

   10、部署图(Deployment Diagram)


一、UML是什么?UML有什么用?

UML是什么?

Unified Modeling Language(统一建模语言)是对象管理组织(OMG)制定的一个通用的、可视化建模语言标准,可以用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品)

UML是一种标准的图形化建模语言,是面向对象分析与设计的标准表示,它:

星星不是一种可视化的程序设计语言,而是一种可视化的建模语言(用于分析设计)

星星不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准

星星不是过程,也不是方法,但允许任何一种过程和方法使用

UML有什么用?

软件开发系统规模比较复杂时,需要用图形抽象地表达复杂概念,增强设计的灵活性、可读性和可理解性,以便暴露深层次的设计问题,降低开发风险。有必要采用一套通用的图形语言和符号体系描述组织的业务流程和软件需求,促进业务人员、开发人员之间一致、高效地交流。

二、UML的历史

UML发展背景:

P. Coad和E.Yourdon提出OOA和OOD

G. Booch提出面向对象开发方法

Jacobson提出OOSE

Rumbaugh提出的OMT

……

UML的出现结束了这场方法学战争

UML发展历程:

image

三、UML的上层结构(Superstructure)

至于UML底层的基础结构(Infrastructure),软件开发工程师们没必要了解,只需要懂得上层结构就行了。

image

构造块(building blocks) 通用机制(common mechanisms) 构架(architecture)

星星事物(things)

    结构、行为、分组、注释

星星关系(relationships)

   依赖、关联、泛化、实现

星星图(diagram)

   静态(7种):类图、对象图、构件图、部署图、包图、组合结构图、外廓图

   动态(7种):顺序图、通信图、时间图、交互纵览图、活动图、状态机图、用例图

星星规格说明(Specifications)

文本维度的模型描述

星星修饰(Adornments)

描述建模元素的细节信息

星星通用划分(Common Divisions)

建模时对事物的划分方法

星星扩展机制(Extensibility Mechanisms)

构造型、约束、标记值

4+1视图 
UML中的视图包括用例视图(Use Case View)、逻辑视图(Logical View)、实现视图(Implementation View)、进程视图(Process View)、部署视图(Deployment View)等,这5个视图被称作”4+1”视图.image

四、UML建模工具

比较流行的有Rational Rose ,Microsoft Visio、Enterprise Architect 、Visual UML等。我现在使用的UML建模工具是Enterprise Architect 8.0,推荐使用这款,比较好用。

五、UML的图(重点)

image

1、用例图(use case diagram)

灯泡用例图(Use Case Diagram)是被称为参与者(Actor)的外部用户所能观察到的系统功能的模型图

     列出系统中的用例和参与者

     显示哪个参与者参与了哪个用例的执行

灯泡核心概念

    用例:系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用

    参与者、参与者泛化

    用例与参与者之间的关系:关联

    用例之间关系:扩展、包括、泛化

灯泡推荐使用场合

    业务建模、需求获取、定义


某图书馆管理系统:

是一个基于Web的计算机应用系统;

读者可以查询图书信息以及借阅信息;

读者可以通过系统预约所需的图书;

图书馆工作人员利用该系统完成读者的借书、还书业务;

图书馆工作人员可以对图书信息、读者信息等进行维护;

对于到期的图书,系统会自动向读者发送催还信息;

管理员会定期进行系统维护;

……

image 

UC01:“借书”用例文档

用例名称:借书

用例标识:UC01

涉及的参与者:工作人员

涉及的用例:

描述:工作人员利用该用例为读者完成借书过程

前置条件:工作人员必须登录到当前系统

涉众利益:

     读者:能够方便的找到并借出所需的图书

     工作人员:能够快速并准确的完成借书工作

基本事件流:工作人员帮助读者借阅图书

   1.用例起始于读者带着所要借的图书来到借阅前台;

   2.工作人员录入读者信息;

   3.工作人员逐一录入所有的图书信息:

   * 3.1 工作人员录入一本图书信息;

   * 3.2 系统确认该读者可以借阅当前图书;

   4.工作人员确认本次借阅信息;

   5.系统记录本次借阅情况。

后置条件:系统将读者借阅信息正确地记录到数据库中

备选事件流

   2a. 读者身份不合法

   2b. 读者存在欠费信息,不允许借书

   3.2a. 该读者不允许借阅当前图书

字段列表:

   5. 借阅信息主要包括:读者图书证号、图书编号、借阅日期(默认为当天日期)、借阅天数以及归还日期。

业务规则

   3.2 系统根据当前读者的借阅规则来判断是否可以借阅图书;而借阅规则取决于读者的类型(如本科生、研究生、老师等)和图书的类型(如科技类、文学类、新书等),并可动态配置

非功能需求:

设计约束:

部署约束:

未解决的问题

   2b. 读者存在多少欠费记录时,才不允许借书?

   3.2 借阅规则的具体配置情况需和用户进一步讨论?

2、活动图(activity diagram)

灯泡活动图(Activity Diagram)

通过动作来组织,主要用于描述某一方法、机制或用例的内部行为

灯泡核心概念

状态、活动、组合活动、对象

转移、分支

并发、同步

泳道

灯泡推荐使用场合

业务建模、需求、类设计

image

 

3、静态结构图

类图(Class Diagram)

是软件的蓝图,详细描述了系统内各个对象的相关的类,以及这些类之间的静态关系。

核心概念:类、接口、依赖、关联、泛化、实现

类图展示实体类的静态关系:

image

对象图(Object Diagram)

表示在某一时刻类的对象静态结构和行为。

核心概念:对象、链接、多重性

对象图展示我当前借书情况:

image

包图(Package Diagram)

展现有模型本身分解而成的组织单元(包)以及它们的依赖关系。

核心概念:包(、框架、层、子系统) 、依赖

包图展示系统分层结构:

image

组合结构图(Composite Structure Diagram)

描述系统中某一部分(组合结构)的内部结构,包括该部分与系统其它部分的交互点。 

核心概念:组合结构、部件、端口、协议

组合结构图展示借书内部结构:

image

 

4、顺序图(Sequence Diagram)

灯泡顺序图(Sequence Diagram)

用于显示对象间的交互活动

关注对象之间消息传送的时间顺序

灯泡核心概念

对象、生命线、激活、交互、消息

交互帧(Interaction Frame)

灯泡推荐使用场合

用例分析、用例设计

“借书”用例实现的顺序图image

5、交互纵览图(Interaction Overview Diagram)

灯泡交互纵览图(Interaction Overview Diagram)

活动图和顺序图的混合物

直观地表达一组相关顺序图之间的流转逻辑

灯泡核心概念

交互帧

分支、转移

灯泡推荐使用场合

用例分析、用例设计

交互纵览图组织多个顺序图image

6、通信图(Communication Diagram)

灯泡通信图(Communication Diagram)

UML 1.x中称为协作图(Collaboration Diagram)

表示一组对象间关系以及交互活动

灯泡核心概念

对象、协作角色

协作、交互、消息

灯泡推荐使用场合

用例分析、用例设计

“借书”用例实现的通信图 
image

7、时间图(Timing Diagram)

灯泡时间图(Timing Diagram)

一种交互图,展现消息跨越不同对象或角色的实际时间信息;

具体描述单个或多个对象状态变化的时间点以及维持特定状态的时间段;

顺序图是表示交互的主要手段,可以在顺序图中增加时间约束来表明对象状态变化的时间点以及维持特定状态的时间段。

灯泡核心概念

时间约束、持续时间约束、生命线

状态、条件、事件

“打电话”顺序图的时间约束 
image
利用时间图描述时间约束 
image

8、状态机图(State Machine Diagram)

灯泡状态机图(State Machine Diagram)

UML1.x为状态图(Statechart Diagram)

利用状态和事件描述对象本身的行为

灯泡主要概念

状态、初态、终态、复合状态

事件、转移、动作

并发

灯泡推荐使用场合

类设计

“图书”类的状态机图 
image

9、构件图(Component Diagram)

灯泡构件图(Component Diagram)

封装类为构件

描述在系统实现环境中的软件构件和之间的关系

灯泡主要概念

构件、工件、接口(所供接口、所需接口)

依赖、实现

灯泡推荐使用场合

系统设计、实现、部署

构件图描述类的实现环境 
image

10、部署图(Deployment Diagram)

灯泡部署图(Deployment Diagram)

描述系统所需的硬件构件的物理部署

灯泡主要概念

节点、构件、位置

连接、依赖

灯泡推荐使用场合

系统设计、实施、部署

部署图描述系统部署情况 
image

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值