学习UML后的一点总结

首先说一下什么是面向对象?

  • 面向对象(Object-Orientation,简称OO)是一种系统建模技术。
  • 面向对象编程(Object-Orientation Programming,简称OOP)是安装OO的方法来开发程序的过程。
  • 通过分析系统内对象的交互来描述或建模一个系统。
  • 交互的对象最终以类的形式组织。
  • OO的方法由三部分组成(这个地方不太明白)
    • 过程
    • 标识
    • 规则

对象?

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

类?

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

OOAD?

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

  • OOA 分析(Analyse)阶段
    • 分析阶段主要解决以下问题:
      • 建立针对业务问题域的清晰视图
      • 列出系统必须要完成的核心任务
      • 针对问题域建立公共词汇表
      • 列出针对此问题域的最佳解决方案。
        此阶段要解决的核心问题是 “What to do ?”
  • OOD 设计(Design)阶段
    • 设计阶段主要解决以下问题:
      • 如何解决业务的具体问题
      • 引入系统工作所需的支持元素
      • 定义系统的实现策略
        此阶段要解决的核心问题是 “How to do ?”

OOP的主要特征

  1. 抽象(Abstract)

    忽略掉一个对象或实体的细节,而只关注其本质特征的过程。
    简化功能与格式
    帮助用户与对象交互

  2. 封装(encapsulation)

    隐藏数据与实现
    提供公共方法供用户调用功能
    对象的两种视图:对外视图是对象能做的工作;对内视图是对象如何完成工作

  3. 继承(inheritance)

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

  4. 多态(polymorphism)

    一个名称,多种形态;例如 List list = new ArrayList();这就是多态的一种体现。List编译时类型,ArrayList是运行时类型。
    基于继承的多态;调用方法时根据所给对象的不同选择不同的处理方式

  5. 关联(association)

    对象之间交互时的一种引入方式
    当一个对象通过对另一个对象的引用去使用另一个对象的 服务或操作时,两个对象之间便产生了关联。
    我这这么理解的,就是在A类中new了B类的一个实例,使用B的实例来调用了B类的一个方法。这样A类和B类就有了关联关系。

  6. 聚合(aggregation)

    关联关系的一种,一个对象成为另一个对象的组成部分。
    是一种较强的关联关系。
    在两个对象之间存在“has a”这样的关系,一个对象作为另一个对象的属性存在,在外部对象被生产时,可有客户端指定与其关联的内部对象。
    这个就是B类是A类的属性的情况。

  7. 组合(composition)

    当一个对象包含另一个对象时,外部对象负责管理内部对象的生命周期情况。
    关联关系中最为强烈的一种。
    内部对象的创建由外部对象自己控制。
    外部对象不存在时,内部对象也不能存在。
    其实这个也不难理解,具体点来说就行电视机和显示器的关系。从类的角度来看,就是 A类中 包含(B类作为A类的属性存在)B类,但是B类的创建方式还是在A类中,这样就满足了上面的描述条件。组合和聚合这两种关联关系还是比较像的,只不过聚合中的B类由客户端创建,之后通过setter方法传递给A类,组合中的B类是由A类自己创建。

  8. 内聚与耦合(cohesion & coupling)


域模型

域模型是面向对象的。在面向对象的术语中,域模型也可以称为设计模型。域模型由一下内容组成:

 - 具有状态和行为的域对象
 - 域对象之间的关系:
     - 关联
     - 依赖
     - 聚集
     - 一般化(泛化 ,其实就是继承关系)

其实吧 我认为域模型就是一个实体类


内聚与耦合

 - 内聚:度量一个类独自完成某项工作的能力
 - 耦合:度量系统内或系统之间依赖关系的复杂度
 - 设计原则:高内聚,低耦合!

UML图的分类

  • 静态模型
    • 创建并记录一个系统的静态特征
    • 反应一个软件系统基础,固定的框架结构
    • 创建相关问题域主要元素的视图
    • 静态建模包括:
      • 用例图(use case diagrams)
      • 类图(class diagrams)
      • 对象图(object diagrams)
      • 组件图(component diagrams)
      • 部署图(deployment diagrams)
  • 动态模型
    • 时序图(sequence diagrams)
    • 协作图(collaboration diagrams)
    • 状态图(state chart diagrams)
    • 活动图(activity diagrams)

其他重要的UML元素

• 包(package)
• UML的扩展机制
—— 注释(comments)
—— 构造型(stereotypes)
—— 标记值(tagged values)
—— 限制(constraints)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值