OOADUML

面向对象

  • 面向对象(Object-Orientation, 简称OO)是一种系统建模技术面向对象编程简称OOP
  • 通过分析系统内对象的交互来描述或建模的一个系统
  • 交互的对象最终是以类的形式组织
  • OO的方法由三部分组成
    1. 过程
    2. 标识
    3. 规则

对象

  • 客观存在的,唯一的实体
  • 是面向对象编程过程中分析和解决问题的出发点和基础
  • 拥有自己的标识、数据与行为
  • 可以简单或负责
  • 可以抽象或具体
  • OOP中是一个类的动态实例

  • 类是对象的模板
  • 对象通过类实例化产生
  • 一个类可以创建多个对象

OOAD

OOAD是根据OO的方法学,对软件系统进行分析和设计的过程

  • OOA分析阶段
  • OOD设计阶段

**OOA**阶段主要解决以下问题

  • 建立针对业务问题域的清晰视图
  • 列出系统必须要完成的核心任务
  • 针对问题域建立公共词汇表
  • 列出针对此问题的最佳解决方案
  • 核心 - What to do?

**OOD**阶段主要解决以下问题

  • 如何解决具体业务的问题
  • 引入系统工作所需要的支持元素
  • 定义系统的实现策略
  • 核心- How to do?

OOP主要特征

  • 抽象
  • 封装
  • 继承
  • 多态
  • 关联
  • 聚合
  • 组合
  • 内聚域耦合

抽象

忽略掉一个对象或实体的具体细节而只关注其本质特征的过程

** 封装**

  • 隐藏数据和实现
  • 提供公共方法供用户调用功能
  • 对象的两种视图
  1. 外部视图-对象能够做的工作
  2. 内部视图-对象如何完成工作

继承

  • 通过存在的类型定义新类型的机制
  • 通常在两个类型之间存在is akind of这样的关系
  • 通过继承可以实现代码的重用,另外继承也是多态的基础

多态

  • 一个名称多种形式
  • 基于继承的多态
  • 调用该方法根据所给的对象的不同选择不同的处理方式

关联

  • 对象之间交互时的一种引用方式
  • 当一个对象通过另外一个对象的引用去使用另外一个对象的服务或操作时,两个对象之间便产生了关联
  • person使用computerpersoncomputer之间就产生了关联

聚合

  • 关联关系的一种,一个对象成为另外一个对象的组成部分
  • 是一种较强的关联关系
  • 两个对象之间存在has a这样的关系,一个对象作为另外一个对象的属性存在
  • 如汽车和轮胎-轮胎作为汽车的一个组成部分,轮胎和汽车都是可以单独生产的,汽车也是可以随意更换同等规格的轮胎

组合

  • 当一个对象包含了另一个对象时,外部对象负责管理内部对象的生命周期的情况
  • 关联关系中最为强烈的一种
  • 内部对象的创建由外部对象自己控制
  • 外部对象不存在时,内部对象也不能存在
  • 如电视和显示器

域模型

  • 域模型是面向对象的。在面向对象的术语中,域模型也可称为设计设计模型。域模型由以下内容组成:
  1. 具有装填和行为的域对象

  2. 域对象之间的关系

    • 关联
    • 依赖
    • 聚集
    • 一般化-泛华

    关联

一个用户可以下多个订单,也可以有一个订单,一个用户和订单之间的关系就是关联

OrderCustomer的关联,一个用户可以定很多的订单,是一个多对一的关联,怎样Order关联到用户,需要在Order的类中建立Customer的成员变量。Order要能获得Custormer的信息

同理,CustomerOrder的关联,Customer中需要定义Order的成员变量

也可以实现相互关联,两个对象中都有对方的成员变量。

依赖关系

BusinessService类依赖Customer

BusinessService类中有访问Customer类的防范,并且构造Customer类的实例

聚集关系

  • 聚集关系是指整体和部分之间的关系,在实体域对象之间很常见

Person类和Hand类之间的聚集关系

一般化关系

  • 一般化关系是指类之间的继承关系

Employee类之间的继承关系

说明

关联 Association
依赖 Dependency
聚集 Aggregation
一般化 Generalization

内聚与耦合

  • 内聚-度量一个类独立完成某项工作的能力
  • 耦合-度量系统内或系统之间依赖关系的复杂度
  • 设计原则-增加内聚,减少耦合

starUML--面向对象的设计过程相关推荐

  1. 面向对象数据库完整设计过程

    一..需求分析 ( 可列出方法的署名和参数) 二.画对象联系图 (O-R图) 举例: 三.构建ORDB模式(ORDB模型) ORDB模型举例: 四.对象关系数据创建 1.类型创建 举例如下: 2.继承 ...

  2. 嵌入式系统——面向对象的设计原则

    接口编程   针对接口编程要能够将接口调用代码和接口实现代码相分离,并且在面向对象的设计过程中优先考虑使用对象组合而不是类继承,因为类继承会过多的将父类细节暴露给子类,当父类实现更改时,子类也不得不实 ...

  3. OO设计原则 -- OO设计的原则及设计过程的全面总结

    前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很多博文和资料后进行的一个梳理和总结,仅供大家来参考. 一.OO(面向对象)的设计 ...

  4. 《面向对象的思考过程(原书第4版)》一2.2 使用抽象思维设计接口

    本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第2章,第2.2节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问云栖社区&qu ...

  5. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  6. 面向对象的设计原则最终篇

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则, ...

  7. 面向对象与面向过程区别

    面向对象:用线性的思维.与面向过程相辅相成.在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统.微观上,仍然使用面向过程. "面向过程"是一种是事件为中心的编程思 ...

  8. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...

    面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...

  9. 面向对象和面向过程的区别_面向过程和面向对象的区别

    先来看生活中的一个例子. 想必每个人都下过五子棋吧?在下棋的整个过程中可以有两种不同的思路来实现: 1.按步骤来看: (1).开始游戏,(2).黑子先走,(3).绘制画面,(4).判断输赢,(5).轮 ...

  10. python面向对象还是过程_Python学习————面向对象和面向过程

    一.面向过程和面向对象 面向过程: 核心是"过程"二字 过程的终极奥义就是将程序流程化 过程是"流水线",用来**分步骤解决问题**的 面向对象: ​ 核心是& ...

最新文章

  1. 腾讯广告广点通API接入文档(Android)
  2. Vue笔记(五)——Token生命周期
  3. C#调用DataV token代码
  4. MyBatis Mapper 文件例子
  5. Linux的awk命令使用心得
  6. fixed 定位 苹果手机输入框触发时内容全部隐藏
  7. Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记
  8. python类中变量作用域_Python中的变量作用域
  9. [笔记]cin、cout与scanf、printf的效率差异对比分析
  10. 问题 C: 能被3整除吗?
  11. 5个让你的404页面变的更加实用的技巧
  12. 距离度量以及python实现(一)
  13. UE4 实时渲染原理优化策略笔记
  14. 使用el-tree-transfer不显示label的坑
  15. EXCEL VBA入门(课堂随机点名系统)
  16. UNITY中帧动画的制作
  17. 计算机设备驱动程序的安装与更新,电脑系统驱动如何安装更新?
  18. 低功耗蓝牙芯片发展方向
  19. python中pymysql的小坑
  20. Java项目:汽车配件销售管理系统(java+SpringBoot+layui+html+maven+mysql)

热门文章

  1. Linux代理服务器与防火墙安装与应用
  2. nyoj904 search
  3. windos10下编译opencv_4.0.1+opencv-contrib_4.0.1
  4. 字符与字符串3——char 的大小
  5. Intellij IDEA 4种配置热部署的方法【转】【补】
  6. 南通大学16级软嵌班软件工程课程成绩汇总
  7. iOS 开发中需要注意的小地方
  8. AppStore 上架注意事项及错误修改
  9. Visual Studio 2010/2013 UTF8编码调试时显示中文
  10. 项目管理实战之团队管理 (转)