《系统架构设计师教程(第2版)》第5章-软件工程基础知识-03-系统分析与设计(下)-面向对象方法

1. 面向对象分析(OOA)

  • 概述:
    • 面向对象的分析方法 (Object-Oriented Analysis)
  • OOA模型的组成
    • 5个层次:主题层、对象类层、结构层、属性层和服务层
    • 5个活动:标识对象类、标识结构、定义主题、定义属性和定义服务
  • 两种对象类之间的结构
    • 分类结构:一般与特殊的关系
    • 组装结构:反映了对象之间的整体与部分的关系

1.1 原则

1)抽象

  • 概述:抽象是从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征。
  • 抽象原则
    • 过程抽象
      • 指任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。
    • 数据抽象
      • 根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察
      • 它强调把数据(属性)和操作结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。
      • 是OOA 的核心原则

2)封装

  • 概述:把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节

3)继承

  • 概述:特殊类的对象拥有其对应的一般类的全部属性与服务,称作特殊类对一般类的继承
  • 优点:使系统模型简练、清晰

4)分类

  • 概述:分类就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述

分类原则实际上是抽象原则运用于对象描述时的一种表现形式。

5)聚合

  • 概述:把一个复杂的事物看成若干简单的事物的组装体,从而简化对复杂事物的描述。

6)关联

关联是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。

7)消息通信

  • 概述:要求对象之间只能通过消息进行通信(而不允许在对象之外直接地存取对象内部的属性)
  • 由于封装原则而引起的。在OOA 中要求用消息连接表示出对象之间的动态联系。

8)粒度控制

  • 粒度控制原则:
    • 考虑全局时,暂时不考虑具体的细节
    • 考虑某部分的细节时,则暂时撇开其余的部分

9)行为分析

1.2 基本步骤

OOA大致上遵循如下5个基本步骤。

1)确定对象和类

  • 对象:是对数据及其处理方式的抽象
  • 类:是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。

2)确定结构

  • 结构:指问题域的复杂性和连接关系
    • 类成员结构:反映了泛化-特化关系
    • 整体-部分结构:反映整体和局部之间的关系

3)确定主题

主题是指事物的总体概貌和总体分析模型

4)确定属性

属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。

5)确定方法

概述:方法是在收到消息后必须进行的一些处理方法

2. 面向对象设计(OOD)

面向对象设计方法 (Object-Oriented Design,OOD)

2.1 基本思想

  • 抽象
  • 封装:类封装了信息和行为
  • 可扩展性:通过继承和多态来实现

2.2 类

  • 类:是具有相同属性、方法和关系的对象集合的总称
  • 职责:指类所担任的任务
  • 定义类:将类的职责分解为类的属性和方法
    • 属性用于封装数据
    • 方法用于封装行为

2.3 三种类

2.3.1 实体类

  • 概述:是需求中每个实体的映射,通常都是永久性的
    • 在用例模型向领域模型的转化中,一个参与者一般对应于实体类
    • 实体类一定有属性,但不一定有操作
  • 命名:名词,采用业务领域术语命名

通常可以从SRS 中的那些与数据库表(需要持久存储)对应的名词着手来找寻实体类。

2.3.2 控制类

  • 概述:用于控制用例工作的类
    • 控制类没有属性,但一定有方法
  • 命名:由动宾结构的短语
    • 如:用例“身份验证”的控制类“身份验证器”
  • 过程:
    • 定义:控制类将用例的特有行为进行封装
    • 产生对象:系统执行用例的时候,就产生了一个控制对象
    • 对象消亡:其对应的用例执行完毕后消亡

2.3.3 边界类

  • 概念:
    • 用于对系统外部环境与其内部运作之间的交互进行建模的类。
  • 寻找和定义边界类:
    • 检查用例模型,每个参与者和用例交互至少要有一个边界类,边界类使参与者能与系统交互
    • 如:窗口、通信协议、打印机接口、传感器、终端等,报表

3.面向对象编程(OOP)

3.1 概述

  • 概述
    • 面向对象程序设计 (Object Oriented Programming)
    • 对象为核心
    • 认为程序由一系列对象组成(即,对象是组成程序的基本模块)
    • 类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作
    • 对象是类的实例化
    • 对象间通过消息传递相互通信(以模拟现实世界中不同实体间的联系)
  • OOP 达到了软件工程的3个主要目标:重用性、灵活性和扩展性

3.2 基本特点

3.2.1 封装

  • 概述:将数据及相关的操作语言组装到一起,封装在一个类中
  • 封装的最基本单:对象
  • 基本目标:高内聚、低耦合

3.2.2 继承

  • 概述:继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续
  • 按继承源分类:
    • 单继承:一个对象仅仅从另外一个对象中继承其相应的特点
    • 多继承(一个对象可以同时从另外两个或者两个以上的对象中继承所需要的特点与能力,并且不会发生冲突等现象)
  • 继承包含的内容进行划分
    1. 取代继承

    一个对象在继承另一个对象的能力与特点之后将父对象进行取代

    1. 包含继承

    一个对象在将另一个对象的能力与特点进行完全的继承之后,又继承了其他对象所包含的相应内容,结果导致这个对象所具有的能力与特点大于等于父对象,实现了对于父对象的包含)

    1. 受限继承
    2. 特化继承。

3.2.3 多态

  • 宏观角度:当不同的多个对象同时接收到同一个完全相同的消息之后,所表现出来的动作是各不相同的,具有多种形态
  • 微观的角度:使用相同的调用方式来对相同的函数名进行调用,函数所执行的动作是不同的。

4.数据持久化与数据库

4.1 持久化和持久层

  • 对象的持久化 (Persistence):把内存中的对象保存到数据库或可永久保存的存储设备中
  • 持久层 (Persistence Layer):
    • 概述:将数据使用者和数据实体相关联
    • 作用:实现了业务逻辑和数据逻辑的解耦

4.2 持久化技术框架

1)Hibernate

  • 概述
    • 是一个全自动的 ORM框架

      可以自动生成SQL 语句,自动执行,使得 Java程序员可以随心所欲地使用对象编程思维来操纵数据库

    • 它对JDBC进行了非常轻量级的对象封装

      JDBC(Java Database Connectivity)是一个为数据库访问定义的 Java API ,它可以与任何数据库进行交互。

    • 它将POJO与数据库表建立映射关系

2)iBatis

  • 概述:
    • 提供 Java对象到 SQL的映射实现
    • 实际的数据库操作需要通过手动编写SQL实现
  • 与Hibernate相比:iBatis 小巧,上手较快
  • 使用环境:不需要太多复杂的功能

3)JDO

  • 概述:
    • Java Data Object,Java数据对象
    • 提供了透明的对象存储

      对开发人员来说,存储数据对象完全不需要额外的代码

  • 与JDBC 区别
    • JDBC只能应用于关系型数据库
    • JDO可以在任何数据底层上运行,更通用,提供包括关系型数据库、普通文件、 XML 文件和对象数据库等,使得应用的可移植性更强。

在这里插入图片描述

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值