《高级结构建模》PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《高级结构建模》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《高级结构建模》PPT课件.ppt(100页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、对高级结构建模对高级结构建模Advanced Classes可见性可见性Instance and Static ScopeAbstract,Leaf,and Polymorphic ElementsMultiplicityAttributesn详述各个属性的可见性、范围和多重性n详述各属性的类型、初始值和可变性norigin Name onlyn+origin Visibility and namenorigin:Point Name and typenname:String0.1 Name,type,and multiplicitynorigin:Point=(0,0)Name,type,a
2、nd initial valuenid:Integerreadonly Name and propertyOperationsn详述各操作的可见性和范围n详述各操作的参数、返回类型、并发语义和其他特性n总体上,操作的名称加上它的参数(如果有的话,也包括返回类型)被称为操作的特征标记操作和方法的区别n操作详述了可以由类的任何一个对象请求以影响行为的服务n方法是操作的实现n类的每一个非抽象操作必须有一个方法,这个方法的主体是可执行的算法(一般用某种编程语言或结构化文本描述)n在继承层次中,对于同一个操作可能有很多方法,并在运行时多态地选择层次结构中的哪一个方法被调用ndisplayName onl
3、yn+displayVisibility and namenset(n:Name,s:String)Name and parametersngetID():IntegerName and return typenrestart()guardedName and propertyn在操作的特征标记中,可以不提供参数,也可以提供多个参数ndirection name:type=default-valuenin 输入参数,不能对它进行修改nout输出参数,为了向调用者传送信息可以对它进行修改ninout输入参数,为了向调用者传送信息可以对它进行修改n已定义的可用于操作的特性nquery操作的执行不会
4、改变系统的状态(完全没有副作用的纯函数)nsequential 调用者必须在对象外部进行协调,以保证在对象中一次仅有一个流。在出现多控制流的情况下,不能保证对象的语义和完整性nguarded 通过将所有对象监护操作的所有调用顺序化,来保证在出现多控制流的情况下对象的语义和完整性。其效果是一次只能调用对象的一个操作,这又回到了顺序的语义nstatic 操作没有关于目标对象的隐式参数,它的行为如同传统的全局过程nconcurrent 通过把操作原子化,来保证在出现多控制流的情况下对象的语义和完整性。来自并发控制流的多个调用可以同时作用于一个对象的任何一个并发操作,而所有操作都能以正确的语义并发进行
5、。并发操作必须设计成:在对同一个对象同时进行顺序的或监护的操作的情况下,它们仍能正确地执行Template Classesn模板是一个被参数化的元素n在诸如C+和Ada这样的语言中,可以写模板类,每一个模板类都定义一个类的家族(也可以写模板函数,每一个模板函数都定义一个函数的家族)n模板可以包括类、对象和值的插槽,这些插槽起到模板参数的作用n不能直接使用模板,必须首先对它进行实例化n实例化是要把这些形式模板参数绑定成实际参数n对一个模板类来说,绑定后的结果就是一个具体类,能够像普通类一样使用JAVA中泛型中泛型public abstract class Shape public abstrac
6、t void draw();public class Rect 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
7、 m_width;ArrayList m_ia;public 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;pri
8、vate int size;public ArrayList(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 element
9、Data;private int size;public ArrayList(int initialCapacity)super();/check if(initialCapacity 0).this.elementData=new ObjectinitialCapacity;public ArrayList()this(10);.结构建模结构建模Advanced Relationshipsn高级依赖、泛化、关联、实现和精化关系n对关系网建模n创建关系网n为了捕获系统中的一些细节(为了避免设计中的实际缺陷,考虑这样的细节是重要的),就需要这些关系的一些高级特性术语和概念术语和概念n关系是事物之
10、间的联系n在面向对象的建模中,4种最重要的关系是依赖、泛化、关联和实现n在图形上,把关系画成线段,用不同种类的线段区别不同的关系依赖依赖n依赖是一种使用关系,它描述了一个事物的规约的变化可能会影响到使用它的另一个事物,但反之不然n对于大多数所遇到的使用关系而言,简单的、未加修饰的依赖关系就足够了n为了详述其含义的细微差别,UML定义了一些可以用于依赖关系的衍型n这些衍型被组织成几组首先,有一些可应用到类图中的类和对象之间的依赖关系上的衍型nbind表明源用给定的实际参数实例化目标模板nderive表明可以从目标计算出源npermit表明源对目标给予特定的可见性ninstanceOf表明源对象是
11、目标类目的一个实例。一般用文本形式source:Target来表示ninstantiate表明源创建目标的实例npowertype表明目标是源的幂类型。幂类型是一个类目,其对象都是一个给定父类的子类对分类其他类的类建模时,要使用幂类型nrefine表明源比目标处于更精细的抽象程度上nuse表明源元素的语义依赖于目标元素的公共部分的语义以下两个衍型可以应用到包之间的依赖关系nimport 表明目标包中的公共内容加入到源包的公共命名空间中,好像它们在源中已经声明过似的naccess 表明目标包中的公共内容加入到源包的私有命名空间中。可以在源中使用这些内容的不带限定的名字,但不可以再输出它们以下两种
12、衍型用于用况间的依赖关系nextend 表明目标用况扩展了源用况的行为ninclude 表明源用况在源所指定的位置上显式地合并了另一个用况的行为在对象之间的交互语境中会遇到一种衍型:nsend表明源类发送目标事件当对向目标对象(它可能有相关联的状态机)发送给定事件的操作(例如,在与状态转移相关的动作中就有这样的操作)建模时,要使用发送(send)。发送依赖在效果上是把若干独立的状态机结合在一起在把系统的元素组织成子系统和模型的语境中,要遇到的一个衍型是跟踪ntrace表明目标是源的早期开发阶段的祖先当对不同模型中的元素之间的关系建模时,要使用跟踪(trace)泛化泛化n大多数情况下,单继承就足
13、够用了n一个类要合并多个类的特征,那么用多继承对这些关系建模更为合适UML定义了可以应用到泛化关系上的4个约束:ncomplete 表明已经在模型中给出了泛化关系中的所有子类,不允许再有更多的子类nincomplete 表明没有给出泛化中的所有子类,允许再增加子类ndisjoint表明父类的对象最多以给定的子类中的一个子类作为类型noverlapping表明父类的对象可能以给定的子类中的一个以上子类作为类型以上两个约束只应用于多继承语境中n用互斥来表示一组类是相互不兼容的,一个子类不可继承该组中一个以上的父类n用重叠来说明一个类能从这组类中一个以上的父类进行多继承关联关联n有4种可应用到关联上
14、的基本修饰:关联名、关联每一端的角色、关联每一端的多重性以及聚合n对于高级用法,还有一些可用于对微妙的细节建模的特性,如导航、限定和不同风格的聚合导航导航n给定两个类之间的一个简单的、未加修饰的关联,从一个类的对象能够导航到另一个类的对象n除非另有指定,否则关联的导航是双向的n然而,有些情况要限制导航是单向n描述关联的走向未必意味着从关联的一端永远不能得到另一端的对象n导航只是陈述了一个类对另一个类的知识n描述一个关联是可导航的,是说给定关联一端的对象就能够容易并直接地得到另一端的对象,通常这是因为源对象存储了对目标对象的一些引用信息可见性可见性n给定两个类之间的关联,除非另有显式的导航声明所
15、规定的限制,否则一个类的对象能够看见并导航到另一个类的对象n然而,在有些情况下要限制关联外部的对象通过关联访问相关对象的可见性n在UML中,像处理类的特征那样,通过对角色名添加可见性符号,可以在3个级别上描述关联端点的可见性n除非有别的注解,否则角色的可见性是公共的n私有的可见性表明,位于关联该端的对象对关联外部的任何对象来说都是不可访问的 n保护的可见性表明,位于关联该端的对象对关联外部除了另一端的子孙之外的任何对象来说都是不可访问的n包的可见性表明,在同一包中声明的类能够看见给定的元素,因此对关联端点不适用限定限定n在关联的语境中,最常见的一种建模的惯用法是查找n给定关联一端的对象,如何识
16、别另一端的对象或对象集?n例如,考虑对一个制造厂的工作台的建模问题,在工作台上对返回的工件进行修理n在UML中,用限定符来对这样的用法建模,该限定符是一个关联的属性,它的值通过一个关联划分了与一个对象相关的对象的子集合(通常是单个对象)n把限定符画成与关联的一端相连的小矩形,并把属性放于小矩形中n源对象连同限定符的属性值确定了目标对象(若目标端的多重性最多为1)或对象集合(若目标端的多重性为多)组合组合n组合是聚合的一种形式,它具有强的拥有关系,而且整体与部分的生命周期是一致的n带有非确定多重性的部分可以在组合物自身之后创建,但一旦创建,它们就同生共死。n这样的部分也可以在组合物死亡之前显式地
17、撤销n这意味着在组合式聚合中,一个对象在一个时间内只能是一个组合的一部分n此外,在组合式聚合中,整体负责对它的各个部分的处置,这意味着整体必须管理它的部分的创建与撤销关联类关联类n在两个类之间的关联中,关联本身可以有特性n在UML中,把这种情况建模为关联类,关联类是一种既具有关联特性又具有类特性的建模元素n可以把关联类看成是具有类特性的关联,或者看成具有关联特性的类约束约束UML定义了5种可以用于关联关系的约束首先,可以描述在关联一端的对象(多重性要大于1)是有序还是无序nordered表示关联一端的对象集是显式有序的其次,可以描述在关联一端的对象是唯一的,即它们形成了集合,或者是不唯一的,即
18、它们形成了袋(bag)nset对象唯一,不可以重复nbag对象不唯一,可以重复nordered set对象唯一且有序nlist or sequence对象有序但可以重复最后,还有一种约束限制了关联实例的可变性nreadonly 一旦从关联的另一端的对象添加了一个链,就不可以修改或删除。在没有这种约束的情况下,默认可变性为无约束实现实现n实现是类目之间的语义关系,在该关系中一个类目描述了另一个类目保证实现的合约n在图形上,把实现画成一条带有空心三角箭头的虚线并指向描述合约的那个类目n实现与依赖、泛化和关联很不相同,所以被处理成一种独立的关系n实现是依赖和泛化在语义上的一些交叉,其表示法是依赖和泛
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级结构建模 高级 结构 建模 PPT 课件
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内