《高级结构建模》PPT课件.ppt
《《高级结构建模》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《高级结构建模》PPT课件.ppt(100页珍藏版)》请在三一办公上搜索。
1、对高级结构建模,Advanced Classes,可见性,Instance and Static Scope,Abstract,Leaf,and Polymorphic Elements,Multiplicity,Attributes,详述各个属性的可见性、范围和多重性详述各属性的类型、初始值和可变性,origin Name only+origin Visibility and nameorigin:Point Name and typename:String0.1 Name,type,and multiplicityorigin:Point=(0,0)Name,type,and initia
2、l valueid:Integerreadonly Name and property,Operations,详述各操作的可见性和范围详述各操作的参数、返回类型、并发语义和其他特性总体上,操作的名称加上它的参数(如果有的话,也包括返回类型)被称为操作的特征标记,操作和方法的区别操作详述了可以由类的任何一个对象请求以影响行为的服务方法是操作的实现类的每一个非抽象操作必须有一个方法,这个方法的主体是可执行的算法(一般用某种编程语言或结构化文本描述)在继承层次中,对于同一个操作可能有很多方法,并在运行时多态地选择层次结构中的哪一个方法被调用,displayName only+displayVisib
3、ility and nameset(n:Name,s:String)Name and parametersgetID():IntegerName and return typerestart()guardedName and property,在操作的特征标记中,可以不提供参数,也可以提供多个参数direction name:type=default-valuein 输入参数,不能对它进行修改out输出参数,为了向调用者传送信息可以对它进行修改inout输入参数,为了向调用者传送信息可以对它进行修改,已定义的可用于操作的特性query操作的执行不会改变系统的状态(完全没有副作用的纯函数)seq
4、uential 调用者必须在对象外部进行协调,以保证在对象中一次仅有一个流。在出现多控制流的情况下,不能保证对象的语义和完整性,guarded 通过将所有对象监护操作的所有调用顺序化,来保证在出现多控制流的情况下对象的语义和完整性。其效果是一次只能调用对象的一个操作,这又回到了顺序的语义static 操作没有关于目标对象的隐式参数,它的行为如同传统的全局过程,concurrent通过把操作原子化,来保证在出现多控制流的情况下对象的语义和完整性。来自并发控制流的多个调用可以同时作用于一个对象的任何一个并发操作,而所有操作都能以正确的语义并发进行。并发操作必须设计成:在对同一个对象同时进行顺序的或
5、监护的操作的情况下,它们仍能正确地执行,Template Classes,模板是一个被参数化的元素在诸如C+和Ada这样的语言中,可以写模板类,每一个模板类都定义一个类的家族(也可以写模板函数,每一个模板函数都定义一个函数的家族)模板可以包括类、对象和值的插槽,这些插槽起到模板参数的作用不能直接使用模板,必须首先对它进行实例化实例化是要把这些形式模板参数绑定成实际参数对一个模板类来说,绑定后的结果就是一个具体类,能够像普通类一样使用,JAVA中泛型,public abstract class Shape public abstract void draw();public class Rect
6、 extends Shapeimplements Serializable T m_left,m_top,m_width,m_height;public Rect(T left,T top,T width,T height).,public class Circle extends Shapeimplements Serializable T m_x,m_y,m_r;public Circle(T x,T y,T r).public class Stroke extends Shapeimplements Serializable W m_width;ArrayList m_ia;public
7、 Stroke(W width,ArrayList ia).,ArrayList sList=new ArrayList();sList.add(new Stroke();sList.add(new Rect();sList.add(new Circle();,ArrayList的实现(JDK1.5),public class ArrayList extends AbstractList implements List,RandomAccess,Cloneable,private transient E elementData;private int size;public ArrayList
8、(int initialCapacity)super();/check if(initialCapacity 0).this.elementData=(E)new ObjectinitialCapacity;public ArrayList()this(10);.,ArrayList的实现(JDK1.4),public class ArrayList extends AbstractList implements List,RandomAccess,Cloneable,private transient Object elementData;private int size;public Ar
9、rayList(int initialCapacity)super();/check if(initialCapacity 0).this.elementData=new ObjectinitialCapacity;public ArrayList()this(10);.,结构建模Advanced Relationships,高级依赖、泛化、关联、实现和精化关系对关系网建模创建关系网,为了捕获系统中的一些细节(为了避免设计中的实际缺陷,考虑这样的细节是重要的),就需要这些关系的一些高级特性,术语和概念,关系是事物之间的联系在面向对象的建模中,4种最重要的关系是依赖、泛化、关联和实现在图形上,把
10、关系画成线段,用不同种类的线段区别不同的关系,依赖,依赖是一种使用关系,它描述了一个事物的规约的变化可能会影响到使用它的另一个事物,但反之不然对于大多数所遇到的使用关系而言,简单的、未加修饰的依赖关系就足够了为了详述其含义的细微差别,UML定义了一些可以用于依赖关系的衍型这些衍型被组织成几组,首先,有一些可应用到类图中的类和对象之间的依赖关系上的衍型bind表明源用给定的实际参数实例化目标模板derive表明可以从目标计算出源permit表明源对目标给予特定的可见性instanceOf表明源对象是目标类目的一个实例。一般用文本形式source:Target来表示instantiate表明源创建
11、目标的实例,powertype表明目标是源的幂类型。幂类型是一个类目,其对象都是一个给定父类的子类对分类其他类的类建模时,要使用幂类型,refine表明源比目标处于更精细的抽象程度上use表明源元素的语义依赖于目标元素的公共部分的语义,以下两个衍型可以应用到包之间的依赖关系import表明目标包中的公共内容加入到源包的公共命名空间中,好像它们在源中已经声明过似的access表明目标包中的公共内容加入到源包的私有命名空间中。可以在源中使用这些内容的不带限定的名字,但不可以再输出它们,以下两种衍型用于用况间的依赖关系extend表明目标用况扩展了源用况的行为include表明源用况在源所指定的位置
12、上显式地合并了另一个用况的行为,在对象之间的交互语境中会遇到一种衍型:send表明源类发送目标事件当对向目标对象(它可能有相关联的状态机)发送给定事件的操作(例如,在与状态转移相关的动作中就有这样的操作)建模时,要使用发送(send)。发送依赖在效果上是把若干独立的状态机结合在一起,在把系统的元素组织成子系统和模型的语境中,要遇到的一个衍型是跟踪trace表明目标是源的早期开发阶段的祖先当对不同模型中的元素之间的关系建模时,要使用跟踪(trace),泛化,大多数情况下,单继承就足够用了一个类要合并多个类的特征,那么用多继承对这些关系建模更为合适,UML定义了可以应用到泛化关系上的4个约束:co
13、mplete 表明已经在模型中给出了泛化关系中的所有子类,不允许再有更多的子类incomplete 表明没有给出泛化中的所有子类,允许再增加子类,disjoint表明父类的对象最多以给定的子类中的一个子类作为类型overlapping表明父类的对象可能以给定的子类中的一个以上子类作为类型以上两个约束只应用于多继承语境中用互斥来表示一组类是相互不兼容的,一个子类不可继承该组中一个以上的父类用重叠来说明一个类能从这组类中一个以上的父类进行多继承,关联,有4种可应用到关联上的基本修饰:关联名、关联每一端的角色、关联每一端的多重性以及聚合对于高级用法,还有一些可用于对微妙的细节建模的特性,如导航、限定
14、和不同风格的聚合,导航,给定两个类之间的一个简单的、未加修饰的关联,从一个类的对象能够导航到另一个类的对象除非另有指定,否则关联的导航是双向的然而,有些情况要限制导航是单向,描述关联的走向未必意味着从关联的一端永远不能得到另一端的对象导航只是陈述了一个类对另一个类的知识描述一个关联是可导航的,是说给定关联一端的对象就能够容易并直接地得到另一端的对象,通常这是因为源对象存储了对目标对象的一些引用信息,可见性,给定两个类之间的关联,除非另有显式的导航声明所规定的限制,否则一个类的对象能够看见并导航到另一个类的对象然而,在有些情况下要限制关联外部的对象通过关联访问相关对象的可见性,在UML中,像处理
15、类的特征那样,通过对角色名添加可见性符号,可以在3个级别上描述关联端点的可见性除非有别的注解,否则角色的可见性是公共的私有的可见性表明,位于关联该端的对象对关联外部的任何对象来说都是不可访问的 保护的可见性表明,位于关联该端的对象对关联外部除了另一端的子孙之外的任何对象来说都是不可访问的包的可见性表明,在同一包中声明的类能够看见给定的元素,因此对关联端点不适用,限定,在关联的语境中,最常见的一种建模的惯用法是查找给定关联一端的对象,如何识别另一端的对象或对象集?例如,考虑对一个制造厂的工作台的建模问题,在工作台上对返回的工件进行修理,在UML中,用限定符来对这样的用法建模,该限定符是一个关联的
16、属性,它的值通过一个关联划分了与一个对象相关的对象的子集合(通常是单个对象)把限定符画成与关联的一端相连的小矩形,并把属性放于小矩形中源对象连同限定符的属性值确定了目标对象(若目标端的多重性最多为1)或对象集合(若目标端的多重性为多),组合,组合是聚合的一种形式,它具有强的拥有关系,而且整体与部分的生命周期是一致的带有非确定多重性的部分可以在组合物自身之后创建,但一旦创建,它们就同生共死。这样的部分也可以在组合物死亡之前显式地撤销,这意味着在组合式聚合中,一个对象在一个时间内只能是一个组合的一部分此外,在组合式聚合中,整体负责对它的各个部分的处置,这意味着整体必须管理它的部分的创建与撤销,关联
17、类,在两个类之间的关联中,关联本身可以有特性在UML中,把这种情况建模为关联类,关联类是一种既具有关联特性又具有类特性的建模元素可以把关联类看成是具有类特性的关联,或者看成具有关联特性的类,约束,UML定义了5种可以用于关联关系的约束首先,可以描述在关联一端的对象(多重性要大于1)是有序还是无序ordered表示关联一端的对象集是显式有序的,其次,可以描述在关联一端的对象是唯一的,即它们形成了集合,或者是不唯一的,即它们形成了袋(bag)set对象唯一,不可以重复bag对象不唯一,可以重复ordered set对象唯一且有序list or sequence对象有序但可以重复,最后,还有一种约束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级结构建模 高级 结构 建模 PPT 课件

链接地址:https://www.31ppt.com/p-5623755.html