软考 软件设计师 第九章UML

一、面向对象的基本概念

  1. 面向对象开发方法有Booch方法、Coad方法和OMT方法。Jackson方法是一种面向数据结构的开发方法。

  2. 对象的状态包括这个对象的所有属性(通常是静态的)以及每个属性当前的值(通常是动态的);为了将一个对象与其它所有对象区分开来,我们通常会给它起一个“标识”;
    行为是对象根据它的状态改变和消息传递所采取的行动和所作出的反应;对象的行为代表了其外部可见的活动;
    操作代表了一个类提供给它的对象的一种服务。

  3. 在面向对象技术中,不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做多态(polymorphism)。
    在使用多态的时候,用户可以发送一个通用的消息,而实现的细节由接收对象自行决定。这样,同一消息就可以调用不同的方法。
    多态有参数多态、包含多态、过载多态和强制多态四类。
    参数多态是应用比较广泛的多态,被称为最纯的多态,
    包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另一个类型的子类型。
    过载多态同一个名字在不同的上下文中所代表的含义不同
    强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。

  4. 泛化是一个类与它的一个或多个细化类之间的关系,表达一般与特殊的关系,eg:交通工具与飞机。
    关联类与类之间的一种结构关系
    聚集是一种关系,其中一个较大的整体类包含一个或多个较小的部分类;相反地,一个较小的部分类是一个较大的整体类的一部分。
    组合是一种聚合关系,其中整体负责其部分的创建和销毁,如果整体不存在了,部分也将不存在。 、

  5. 多重继承指的是一个类可以继承另外一个类,而另外一个类又可以继承别的类,比如A类继承B类,而A类又可以继承C类,这就是多重继承。多重继承可能造成混淆的情况,出现二义性的成员。

  6. 在面向对象技术中,一个类可以具有多个同名而参数类型列表不同的方法,每个方法实现自己的特定行为,这种机制称为方法重载(Overloading)。
    对象协作过程中,对象给对象进行消息传递,通常通过方法调用进行。在继承关系中,子类重新定义父类中已经定义的方法,称为方法重置或覆盖(Overriding)。

  7. 对象中的属性和方法的可访问性由访问权限修饰关键字来指定,C++和Java均支持private、protected和public关键字,分别说明类中属性或行为是私有的、保护的还是公有的。其中private表示对内可见只有类内部所定义的方法才可以访问
    protected对外不可见,对继承子类可见,在使用继承时具有继承关系的子类可以访问;
    public对外对内均可见,所有类使用者均可以访问。

二、面向对象分析与设计

  1. 面向对象分析是为了获得对应用问题的理解,其主要任务是抽取和整理用户需求并建立问题域精确模型。
    面向对象设计是采用协作的对象、对象的属性和方法说明软件解决方案的一种方式,强调的是定义软件对象和这些软件对象如何协作来满足需求,延续了面向对象分析。
    面向对象实现主要强调釆用面向对象程序设计语言实现系统。面向对象测试是根据规范说明来验证系统设计的正确性。

  2. 面向对象分析主要强调理解问题是什么,不考虑问题的解决方案
    面向对象设计侧重问题的解决方案,并且需要考虑实现细节问题。

  3. 面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作和定义对象的内部信息。而分析阶段最重要的是理解问题域的概念,其结果将影响整个工作。经验表明,从应用定义域概念标识对象是非常合理的。因此,面向对象分析的第一步就是确定问题域

  4. 在面向对象中,高层模块不应该依赖于底层模块

  5. UML中关联的多重度是指:多重度说明数量或数量范围,表示有多少个实例(对象)能被连接起来,即一个类的实例能够与另一个类的多少个实例相关联

  6. 关键路径是从开始到结束的最长路径,也是完成项目所需要的最短时间

  7. 领域模型是从按对象分类的角度来创建对象领域的描述,包括定义概念、属性和重要的关联,不包含领域对象,其结果用一组显示领域概念和对象的图形一一类图来组织,图中还包括多重性、关联关系、泛化/特化关系以及聚合关系等。

  8. UML状态图:
    1.活动可以在状态内执行,也可以在迁移时执行
    2.若时间出发一个没有特定监护条件的迁移,则对象不一定离开当前状态
    3.迁移可以包含事件触发器,监护条件和状态
    4.实践触发迁移

  9. 在面向对象分析与设计中
    实体类主要负责数据和业务逻辑,是应用领域中的核心类;
    边界类负责和用户进行交互,即用户界面;
    控制类则负责实体类和界面类的交互。

  10. 构件图:
    在这里插入图片描述
    2符号形象叫棒棒糖,表示提供的接口
    1符号形象叫插座,表示要求提供的接口(需求接口)。

  11. 类图(Class Diadram)展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图
    组件图(Component Diagram)展现了一组组件之间的组织和依赖。
    通信图(communication diagram)。通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织
    部署图(Deploy Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。

  12. 观察者(Observer)模式定义对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
    在上述观察者模式的类图中
    1.Subject (目标)知道其观察者,可以有任意多个观察者观察同一个目标,提供注册和删除观察者对象的接口
    Observer (观察者)为那些在目标发生改变时需获得通知的对象定义一个更新接口
    2.ConcreteSubject (具体目标)将有关状态存入各ConcreteObserver对象当它的状态发生改变时,向它的各个观察者发出通知
    3.ConcreteObserver (具体观察者)维护一个指向ConcreteSubject对象的引用,存储有关状态,实现Observer的更新接口以使自身状态与目标的状态保持一致
    该模式的特点适用于以下情况:
    ①当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立的对象中以使它们可以各自独立地改变和复用;
    ②当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时;
    ③当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的。
    观察者模式最主要的特征是使所要交互的对象尽量松耦合。

  13. 在采用面向对象方法进行业务建模时,
    业务用例和参与者一起描述组织或企业所支持的业务过程。业务流程被定义为多个不同的业务用例,其中每个业务用例都代表业务中某个特定的工作流程。业务用例确定了执行业务时将要发生的事情,描述了一系列动作的执行,以及产生对特定业务主角具有价值的结果。
    业务对象模型从业务角色内部的观点定义了业务用例。该模型确定了业务人员及其处理和使用的对象之间应该具有的静态和动态关系,注重业务中承担的角色及其当前职责,既描述业务结构,又描述这些结构元素如何完成业务用例

三、面向对象程序设计

  1. XML (可扩展标记语言)是标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
    Python是一种面向对象、解释型计算机程序设计语言。
    Prolog是逻辑型程序设计语言。
    C++为面向对象的编译型语言,而非解释型语言。

  2. HTML用于处理静态网页
    LISP一种基于λ演算的函数式编程语言。
    PHP是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。
    **C++**是一个接近系统底层的综合的,支持面向对象和范编程的程序设计语言,适用于开发要求很高效率的程序,例如大型游戏、大型企业应用、系统应用等。

  3. 多对多联系需要单独转换为一个关系模式,也需要重新建类

  4. 使用类图情况的方式通常有以下三种。
    对系统的词汇进行建模。决定哪些抽象是考虑中的系统的一部分,哪些抽象处于系统边界之外,并详细描述这些抽象和它们的职责。
    对简单协作进行建模。协作是一些共同工作的类、接口和其他元素的群体,提供一些合作行为强于所有这些因素的行为之和,要有相互协作的一组类来实现这些协作的语义。
    对逻辑数据库模式建模。将模式看作是数据库的概念设计的蓝图,类图对这些数据库模式进行建模,有时也称为领域类图。
    对象快照采用对象图进行建模。

四、面向对象开发技术

  1. 采用面向对象开发方法时,对象是系统运行时基本实体。它既包括数据(属性), 也包括作用于数据的操作(行为)。一个对象通常可由对象名、属性和操作三部分组成。

五、设计模式

  1. 每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,就能重复地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案。因此,面向对象软件开发过程中,采用设计模式的主要目的就是复用成功的设计

  2. 适配器(Adapter)模式是将类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    Bridge (桥接)模式将对象的抽象和其实现分离, 从而可以独立地改变它们。
    组合(Composite)模式描述了如何构造一个类层次式结构。
    装饰器(Decorator)模式的意图是动态地给一个对象添加一些额外职责。在需要给某个对象而不是整个类添加一些功能时使用。这种模式对增加功能比生成子类更加灵活。

  3. 创建型模式包括 Factory Method、Abstract Factory、Builder、Prototype 和 Singleton。
    结构型模式包括 Adapter (类)、Adapter (对象)、Bridge、Composite、Decorator、Fafade、 Flyweight 和 Proxy。
    行为型模式包括 Interpreter、Template Method、Chain of Responsibility、 Command、Iterator、Mediator、Memento Observer State Strategy 和 Visitor。

  4. Proxy模式的结构图如下所示:
    在这里插入图片描述

    Proxy模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有: 远程代理(Remote
    Proxy)为一个对象在不同地址空间提供据不代表; 虚代理 (Virtual Proxy)根据需要创建开销很大的对象;
    保护代理(Protection Proxy)控制对原始对象的访问,用于对象应该有不同的访问权限的时候; 智能指引(Smart
    Reference) 取代了简单的指针,它在访问对象时执行一些附加操作。

  5. Builder模式的结构图如下所示:
    在这里插入图片描述

    Builder模式适用于当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;当构造过程必须允许被构造的对象有不同的表示时。

  6. Composite模式的结构图如下所示: 在这里插入图片描述

    Composite模式适用于:想表示对象的部分-整体层次结构;希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

  7. Observer模式的结构图如下所示: 在这里插入图片描述

    Observer模式适用于:当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这两者封装在独立地对象中以使它们可以各自独立地改变和复用;当对一个对象的改变需要同时改变其他对象.而不知道具体有多少对象有待改变时;当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值