JMU软件20 UML复习资料

碎碎念

(印象中复习资料漏了的知识点:P175:通信图,P168:UML顺序图的图框,都考完了也懒得再整理了,自己翻书看吧)

昂,把下面这些都学会大概率不会不及格,要求高分的话爱莫能助
(因为我也就80出了点头)

以下涉及的页数是我用goodnotes看电子书的页数,实体书书对应页数-18

打⭐只是我觉得好看而已,没有标重点的意思

23/12/4补充:试卷基本都是画图,好像有写代码的题
找了我去年的笔记:

  1. 分析 3×10
  2. 简析 6×5
  3. 选择 10×2
  4. 问答 4×5

灵文灵文保佑我

碎碎的知识

  • 面向对象的三大特点:封装,继承,多态,(抽象)

UML图

UNL图有两种,结构图和行为图

  • 结构图:类图…
  • 行为图:顺序图,用例图,状态图(没学)…


用例图

在这里插入图片描述

  • 表示的是用例和参与者的关系
  • 组成:参与者(人或其他外界系统),系统边界,用例,关联
  • 关系:
    • 参与者与参与者:泛化

    • 用例与参与者:关联:————>

    • 用例与用例:包含,泛化,扩展

    • 包含:一个用例(基础用例)的行为包含了另一个用例(包含用例)的行为。[简单点说:把一个复杂的步骤分解为较小的步骤,箭头指向分解后的用例]
      在这里插入图片描述

    • 泛化:一个用例可以被特别列举为一个或多个子用例(父子关系)。带空心箭头实线,箭头指向被继承的(父用例) 用例。
      在这里插入图片描述

    • 扩展 :用例功能的延申,相当于为基础用例提供一个附加功能。指向基础用例在这里插入图片描述

领域模型

  • 领域模型描述重要的概念及其关联和属性( 只有属性没有方法
  • 领域模型不是对软件对象的描述,是使真实世界领域中的概念和想象可视化。[P24]
  • 一场游戏中一个玩家,一次转两枚骰子,骰子的点数(faceValue)总和为7即胜利。
    在这里插入图片描述

交互图(/顺序图):

  • 展现软件对象之间的消息流和由消息引起的方法的调用。
  • 真实世界是由游戏者掷出骰子,软件设计中是由DiceGame对象掷出骰子。(加不加玩家对象取决于软件系统是否有这个对象)
  • 对象拥有x方法,向对象发送x方法(注意顺序)【die对象有roll方法,dieGame对象通知die调用roll方法】在这里插入图片描述

记得再去看看书上顺序图这边关于循环,选择判断的符号是什么,就是那些alt啥的。
这里有篇博客可以参考

类图

  • 描述类的属性和方法

  • 和领域模型的一个差别:领域模型表示的是真是时间的类,设计类图表示的是软件类。领域模型只有属性和关联,类图除了属性还有方法。
    在这里插入图片描述

  • (其他的图好像都没学)

设计类图

类图间的关系(注意线和箭头)

在这里插入图片描述

泛化(继承)

父类子类。
在这里插入图片描述

实现

接口的实现类和接口之间的关系。
在这里插入图片描述
耦合度依次增强:依赖、关联、聚合和组合。

依赖

一个类使用另一个类的方法或属性。或者是A类包含B类的参数,变量。(偶然的、临时的)(局域变量、方法的形参,或者对静态方法的调用
在这里插入图片描述

关联

表示一类对象与另一类对象之间的联系。一般是一个类的对象作为另一个类的成员变量。(关系也不是临时性的,一般是长期性的)(成员变量)关联的两个对象之间一般是平等的。【这里可以说明一下关联双方是一对一,一堆多…
在这里插入图片描述

聚合

成员变量形式实现,对象之间存在着整体与部分的关系。整体和个体的关系。整体消失不会引发个体的消失。关联的两个对象之间一般是平等的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。多个整件可以同时间共享同一个部件。
在这里插入图片描述

组合

在聚合的基础上,整件删除时,部件一定会跟着删除。而且,多个整件不可以同时间共享同一个部件。比如公司和部门。
在这里插入图片描述

设计原则GRASP

(课上没有全讲)

⭐ 信息专家

问题:如果给定Square名称,从那个对象查询该Square对象的相关信息?

解决方案把职责分配给具有完成该职责所需要信息的类。

应用:设计对象(类)的时候,如果某个类拥有完成某个职责所需要的所有信息,那么这个职责就应该分配给这个类来实现。这时,这个类就是相对于这个职责的信息专家。

⭐ 创建者

问题:谁负责创建某类的新实例。

解决方案合理分配创建职责,以降低耦合(参照低耦合设计原则)。

应用:符合下列任一条件的时候,建议由类A来创建类B,这时A是B的
创建者:

  • A是B的聚合
  • A是B的容器
  • A持有初始化B的信息(数据),创建B时会传递给B
  • A记录B的实例
  • A频繁使用B

创建者设计原则禁忌:有时对象创建具有相当的复杂性,最好把创建职责委派给称为具体工厂或抽象工厂的辅助类。

优点:支持低耦合。

⭐ 低耦合

先清楚什么是耦合?
耦合(coupling):耦合是对某元素与其他元素之间的联系、感知和依赖程度的度量。低耦合往往能够减少修改软件所需的时间、工作量和缺陷

问题:为什么是通过Board对象查询Square,而不是任意一个类?

解决方案分配职责以使(不必要的)耦合保持在较低水平,减少类之间的联系。

⭐ 高内聚

功能性紧密相关的职责应该放在一个类里,并共同完成有限的功能,那么就是高内聚。

问题:怎样使对象保持有内聚、可理解和可管理,同时具有支持低耦合的附加作用?

解决方案职责分配应保持高内聚,以此来评估备选方案。

⭐ 控制器

控制器一般负责委派工作给其他的对象,本身并不完成大量工作。在UI之下首先接收和协调系统操作的对象。

问题:在UI层之下首先接收和协调系统操作的对象是什么?

解决方案:把职责分配给能代表下列选择之一的对象:

  • 代表全部“系统”、“根对象”、运行软件的设备或主要的子系统(这些是外观控制器的所有变体)
  • 代表发生系统操作的用例场景(用例或会话控制器)

应用控制器的优点:

  • 增加了可复用和接口可插拨的能力
  • 获得推测用例状态的机会

禁忌

  • (避免臃肿的控制器):只有一个控制器接收系统中全部的系统事件。控制器完成诸多必要的任务,而不是把工作委派出去―控制有许多属性,维护与领域相关的重要信息。
  • (UI层不处理系统事件)。系统操作职责分配给应用层,而不是UI层中的对象

⭐ 多态

问题:如何处理基于类型的选择,创建可插拨的构件。

解决方案相关选择或行为随类型有所不同时,使用多态操作为变化的行为类型分配职责。

⭐ 纯虚构

问题:有时对领域对象分配职责会导致不良内聚或耦合。且专家原则提供的方案不合适。

解决方案

  • 设计一个虚构的类,分配一组高内聚职责,用以支持高内聚、低耦合的复用。
  • 该类不代表领域的概念,是凭空虚构的
  • 理想情况:虚构类的职责支持高内聚低耦合

⭐ 间接

问题:为了避免两个或多个事物之间直接耦合,应该如何分配职责?如何使对象解耦合?

解决方案将职责分配给中介对象,使其作为其他构件或服务之间的媒介,以避免它们之间的直接耦合。

⭐ 受保护变化(防止变异)

不要跟陌生人讲话
问题

  • 如何设计,使内部的变化不会对其他元素产生不良影响?

解决方案

  • 预先识别不稳定的变化点,定义稳定的接口
  • 如果未来发生变化的时候,可以通过接口扩展新的功能,而不需要去修改原来旧的实现

设计模式

一共有23个,但有些课上没讲

⭐适配器

问题:如何解决不相容的接口问题,或者如何为具有不同接口的类似构件提供稳定的接口?

解决方案:通过中介适配器对象,将构件的原有接口转换为其他接口

  • 将一个类的接口转换成客户希望的另外一个接口Adapter模式
  • 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

如何体现

  • 使用多态和接口
  • 增加一层间接性对象

举例:定义一个TextShape类,由它来适配TextView的接口和Shape的接口,即继承Shape类的接口和TextView的实现。将一个TextView实例作为TextShape的组成部分,并且使用TextView的接口实现TextShape。

⭐抽象工厂

意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

问题:当有特殊考虑(如存在复杂创建逻辑,为了改良内聚而分离创建职责等)时,应该由谁来负责创建对象?

解决方案:创建称为工厂的纯虚构对象来处理这些职责。

图取自原博客

  • 简单工厂:把具体的产品创建封装成一个工厂类。返回对象通常都是接口,比如AbstractBlock。
    在这里插入图片描述

  • 具体工厂:进一步解耦合,把工厂类抽象,不再负责所有实例的创建,而是把具体的创建工作交给了子类去完成,实例化延迟到子类加载,由子类来决定要实例化的类。
    在这里插入图片描述

  • 抽象工厂:抽象工厂将工厂方法进一步抽象。定义了一个接口用于创建相关或有依赖关系的对象簇,而无需指明具体的类。可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展。

在这里插入图片描述

⭐单例

代码参考建议链接

意图:保证一个类仅有一个实例,并提供比一个访问它的全局访问点。(该类全局只需要一个对象)

解决方案:对类定义静态方法用以返回单实例。

⭐策略

问题:如何设计应对某一算法或业务规则的经常变化?

解决方案:在单独的类中分别定义每种算法/政策/策略,并且使其具有共同的接口。

如何体现:即不同类中的方法名字、参数都一样,但是代码内容不一样。(接口的实现)

在这里插入图片描述

⭐组合

可供参考代码
在这里插入图片描述

组合模式使得用户对单个对象和组合对象的访问具有一致性,即让用户以一致的方式处理个别对象以及组合对象。避免在使用过程中区分开来,造成麻烦。

问题:如何能够像处理原子对象一样,多态地处理一组对象或具有组合结构的对象

解决方案定义组合和原子对象的类,使他们实现相同的接口。

⭐外观

代码参考链接

问题:对一组不同的实现或接口(如子系统的实现和接口)需要公共、统一的接口。可能会与子系统内部的大量事物产生耦合,或者子系统的实现可能会改变,怎么办?

解决方案:对子系统定义唯一的接触点——使用外观对象封装子系统。该外观对象提供了唯一和统一的接口,并负责与子系统构件进行协作。

举个例子:打开电视,包括打开屏幕,打开音响…,电视类的open方法包含屏幕,音响…的open方法,调用电视类的open就可以调用全部子类的open。电视类的open就是公共统一的接口。

⭐观察者

问题:不同类型的订阅者对象关注于发布者对象的状态变化或事件,并且想要在发布者产生事件时以自己独特的方式做出反应(有点vue的感觉)。此外,发布者想要保持与订阅者的低耦合

解决方案:定义“订阅者”或“监听者”接口。订阅者实现此接口。发布者可以动态注册关注某事件的订阅者,并在事件发生时通知他们

如何体现

  • 使用listener
  • 发布者注册登记订阅者
  • 连接UI对象和非UI对象
public abstract class Subject {

    protected List<Observer> observerList = new ArrayList<Observer>();

    public void add(Observer observer) {
        observerList.add(observer);
    }
	public void add(Observer observer){...}
    //通知观察者
    public abstract void notifyObserver();
}


public class ConcreteSubject extends Subject{
    @Override
    public void notifyObserver() {
        //遍历观察者
        for (Observer observer : observerList) {
            observer.response();
        }
    }
}

内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值