类图

UML类图

淺唱寂寞╮ 提交于 2019-11-28 23:04:46
1、常见关系类图画法: 继承 :空心三角形+实线 实现 :空心三角形+虚线 关联 :实线箭头 聚合 :空心菱形+实线箭头 组合 :实心菱形+实线箭头 依赖 :虚线箭头 来源: https://www.cnblogs.com/aibaiyang/p/11432679.html

《Head First 设计模式》笔记

眉间皱痕 提交于 2019-11-28 20:14:44
第一章 策略模式 00设计原则: 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码放在一起。 把会变化的部分取出并封装起来,好让其它部分不会受到影响。结果如何?代码变化引起的不经意后果变少,系统变得更有弹性。 00设计原则: 针对接口编程,而不是针对实现编程。 “针对接口编程”真正的意思是“针对超类型编程”: 这里的接口有多个含义,接口是一个概念,也是一种java的interface构造。”针对接口编程“关键就在多态。利用多态,程序可以针对超类型编程,执行时会根据实际情况执行到真正的行为,不会被绑死在超类型的行为上。这句话可以更明确的说成”变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口。如此,只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量。这也意味着声明类时不用理会以后执行的真正对象类型。 OO设计原则: 多用组合,少用继承 使用组合建立系统具有很大的弹性,不仅可以将算法族封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可。 策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 类图 JDK java.util.Comparator#compare() javax.servlet.http.HttpServlet javax.servlet

UML类图几种关系的总结

天大地大妈咪最大 提交于 2019-11-28 16:56:42
转自: http://blog.csdn.net/tianhai110/article/details/6339565 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency) 1. 泛化(Generalization) 【泛化关系】:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为. 例如:老虎是动物的一种, 即有老虎的特性也有动物的共性. 【箭头指向】:带三角箭头的实线,箭头指向父类 2. 实现(Realization) 【实现关系】:是一种类与接口的关系, 表示类是接口所有特征和行为的实现. 【箭头指向】:带三角箭头的虚线,箭头指向接口 3. 关联(Association) 【关联关系】:是一种拥有的关系, 它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子 关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。 【代码体现】:成员变量 【箭头及指向】:带普通箭头的实心线,指向被拥有者 上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联

UML学习笔记:类图

落爺英雄遲暮 提交于 2019-11-28 10:36:52
UML学习笔记:类图 有些问题,不去解决,就永远都是问题! 类图   类图(Class Diagrame)是描述 类、接口、协作以及它们之间关系的图 ,用来 显示系统中各个类的静态结构 。   类图包含2种元素:类、接口,6种关系:协作、依赖、泛化、实现以及关联。 组成元素 类    接口    关系 实现关系   类的继承结构表现在UML中为:泛化(generalize)与实现(realize)。实现关系只可用于表示接口与类的继承结构,类会实现接口定义的所有方法。 泛化关系   继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系。比如,西瓜是水果! 依赖关系   描述一个对象在运行期间会用到另一个对象。 关联关系   关联关系,是一种结构关系, 指明一个事物的对象与另一个事物的对象间的关系 。 聚合关系   聚合关系用于表示实体对象之间的关系, 表示整体由部分构成的语义 ; 例如一个部门由多个员工组成 ;但是 整体与部分不是不可分割的,即部门不存在了,员工不会消失,依然存在 。 组合关系   组合关系与聚合关系一样,组合关系 同样表示整体由部分构成的语义 ; 但是这种依赖关系是强依赖 ,即公司不存在,部门也就随之消失了。 参考链接 http://www.woshipm.com/pd/2593231.html https://design

UML类图的总结和思考

爷,独闯天下 提交于 2019-11-28 05:35:06
UML类图的学习 UML类图简介: UML类图描述的是软件工程中类与类之间的关系,类图一般由三行表示,第一行是类名,第二行是属性,第三行是方法与特性,属性和方法前可以用三种符号”+”、”#”、”-”分别表示public、protected、private。 UML类图设计分析: 一般在系统分析与设计阶段,类通常可以分为三种,分别是实体类、控制类和边界类。 实体类:对应系统需求中的每个实体,它们通常保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类;2)控制类:控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。3)边界类:用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类、窗口、菜单等。 在类图中,类之间的关系可以分为6种,划分的依据是类之间联系的强弱。 首先是 泛化关系 ,这是一种继承关系,表示一般与特殊,指定了类如何特化父类的特征与行为; 接口关系 是一种实现的关系,接口关系也可以有类之间关系类似的继承关系和依赖关系,但是更多的是接口与类之间的实现关系,类是接口所有特征与行为的实现; 关联关系 是类与类之间最常用的关系,它是一种拥有关系,用于表示一类对象与另一类对象之间有联系,使得一个类知道另一个类的属性和方法,在C++、JAVA等编程语言实现关联关系时

面向对象设计原则

[亡魂溺海] 提交于 2019-11-28 05:28:57
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员经理根据7条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 1. 开闭原则(Open Closed Principle, OCP) 软件实体应该对扩展开放,对修改关闭。 这里的软件实体包括以下几个部分: 1) 项目中划分出的模块 2) 类与接口 3) 方法 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码的前提下,可以扩展模块的功能,使其满足新的需求。 1.1 作用 开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和了灵活性的同事具备稳定性和延续性。具体来说,其作用如下: (1) 对软件测试的影响 软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常原型。 (2) 可以提高代码的可复用性 粒度越小,被复用的可能性就约到;在面对对象的程序设计中,更具原子核抽象编程可以提高代码的可服用性。 (3) 可以提高软件的可维护性 遵守开闭原则的软件,其稳定性高和延续性强,从而抑郁扩展和维护。 1.2 实现方法 可以通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。 因为抽象灵活性好,实用性广,只要抽象的合理

统一建模语言UML概述

巧了我就是萌 提交于 2019-11-27 21:02:49
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 UML分类 (1)静态模型(系统结构): 用例图、类图、对象图、构件图、部署图 (2)动态模型(系统行为):状态图、活动图、顺序图、协作图 UML中有4种事务: (1)结构事务:名词、静态部分、物理元素。 (2)行为事务:动词、动态部分、行为。 (3)分组事务:包。 (4)注释事务:注解。 用例图: 用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图,用于需求分析阶段。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。 用例之间的关系 (1)包含 (include) 关系 父用例包含子用例,父用例执行,子用例必然被执行 当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。因为子用例被抽出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行

细化架构设计

依然范特西╮ 提交于 2019-11-27 19:49:53
多视图的方法不仅仅是架构归档技术,更是指导我们进行架构设计的思维方法。 越是复杂的系统,越是需要从多个方面进行架构设计,这样才能把问题研究和表达清楚,而提供不同的软件架构视图也便于交流和传递设计思想。 关键需求是对软件架构设计起关键作用的需求子集,包括功能需求、质量需求和商业需求三种,架构细化必须注意满足这些需求。 领域模型是以面向对象方式对问题领域的模型的模拟和抽象,它揭示了重要的业务领域概念,并建立业务领域概念之间的关系,领域模型被不断精化后成为最终软件系统的问题领域层,它决定了软件系统的功能范围,并影响着软件系统的可扩展性。 概念性架构是对系统设计的最初构想,通过主要的设计元素及它们之间的关系来描述系统,这些高层次的设计选择对未来软件系统的质量和功能都有关键作用。 约束可以视为一类特殊的需求,它们具有强制性,规定了业务和技术上的标准和限制。 我们利用架构视图的方法,从逻辑架构、开发架构、运行架构、物理架构和数据架构五个方面来进行架构设计。 设计逻辑架构:使用 UML 来描述,静态方面包括包图、类图、对象图;动态方面包括序列图、协作图、状态图和活动图。 逻辑架构的设计应该完成的工作: 细化功能单元 发现通用机制 细化领域模型 确定子系统接口和交互机制 因为软件架构的重点在于‘软件系统的各部分是如何相关的’,那么我们可以经过适度的抽象分析,将几组协作中的公共行为提取出来成为

复习之 笔试题知识点总结

依然范特西╮ 提交于 2019-11-27 02:55:30
1. 各种排序算法的优缺点 例题:对序列(12,18,22,38,39,49,79,89)进行排序,最不适合的算法是() 冒泡排序 快速排序 归并排序 插入排序 总结: 冒泡排序:优点:稳定; 缺点:慢,每次只能移动相邻两个数据。时间复杂度:O(n 2 ) 选择排序:优点:移动数据的次数已知(n-1次);缺点:不稳定。时间复杂度:O(n 2 ) 插入排序:优点:稳定,快;缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多。时间复杂度:O(n 2 ) 缩小增量排序/希尔排序:优点:快,数据移动少; 缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取。时间复杂度:O(nlogn) 快速排序:优点:快,数据移动少; 缺点:不稳定。时间复杂度:O(nlogn) 平均时间, O(n2) 最坏情况; 对于大的、乱序串列一般认为是最快的已知排序算法。 箱排序/桶排序:优点:快;缺点:数据范围必须为正整数并且比较小。时间复杂度:O(n); 需要 O(k) 额外存储空间 堆排序:优点:对于较大的序列,将表现出优越的性能。缺点:小规模的序列中不合适。时间复杂度:O(nlogn) 归并排序 (merge sort)— O(n log n); 需要 O(n) 额外存储空间 https://www.cnblogs.com/zhaoshuai1215/p/3448154