三讲——对高级结构建模.pptVIP

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三讲——对高级结构建模

对高级结构建模 Advanced Classes 可见性 Instance and Static Scope Abstract, Leaf, and Polymorphic Elements Multiplicity Attributes 详述各个属性的可见性、范围和多重性 详述各属性的类型、初始值和可变性 origin Name only +origin Visibility and name origin:Point Name and type name:String[0..1] Name, type, and multiplicity origin:Point = (0,0) Name, type, and initial value id:Integer{readonly} Name and property Operations 详述各操作的可见性和范围 详述各操作的参数、返回类型、并发语义和其他特性 总体上,操作的名称加上它的参数(如果有的话,也包括返回类型)被称为操作的特征标记 操作和方法的区别 操作详述了可以由类的任何一个对象请求以影响行为的服务 方法是操作的实现 类的每一个非抽象操作必须有一个方法,这个方法的主体是可执行的算法(一般用某种编程语言或结构化文本描述) 在继承层次中,对于同一个操作可能有很多方法,并在运行时多态地选择层次结构中的哪一个方法被调用 display Name only +display Visibility and name set(n : Name, s : String) Name and parameters getID() : Integer Name and return type restart() {guarded} Name and property 在操作的特征标记中,可以不提供参数,也可以提供多个参数 [direction] name : type [= default-value] in 输入参数,不能对它进行修改 out 输出参数,为了向调用者传送信息可 以对它进行修改 inout 输入参数,为了向调用者传送信息可 以对它进行修改 已定义的可用于操作的特性 query 操作的执行不会改变系统的状态 (完全没有副作用的纯函数) sequential 调用者必须在对象外部进行协调, 以保证在对象中一次仅有一个流。 在出现多控制流的情况下,不能保 证对象的语义和完整性 guarded 通过将所有对象监护操作的所有调 用顺序化,来保证在出现多控制流 的情况下对象的语义和完整性。其 效果是一次只能调用对象的一个操 作,这又回到了顺序的语义 static 操作没有关于目标对象的隐式参数 ,它的行为如同传统的全局过程 concurrent 通过把操作原子化,来保证在出现 多控制流的情况下对象的语义和完 整性。 来自并发控制流的多个调用可以同 时作用于一个对象的任何一个并发 操作,而所有操作都能以正确的语 义并发进行。 并发操作必须设计成:在对同一个 对象同时进行顺序的或监护的操作 的情况下,它们仍能正确地执行 Template Classes 模板是一个被参数化的元素 在诸如C++和Ada这样的语言中,可以写模板类,每一个模板类都定义一个类的家族(也可以写模板函数,每一个模板函数都定义一个函数的家族) 模板可以包括类、对象和值的插槽,这些插槽起到模板参数的作用 不能直接使用模板,必须首先对它进行实例化 实例化是要把这些形式模板参数绑定成实际参数 对一个模板类来说,绑定后的结果就是一个具体类,能够像普通类一样使用 JAVA中泛型 public abstract class Shape { public abstract void draw(); } public class RectT extends Shape implements Serializable { T m_left, m_top, m_width, m_height; public Rect(T left, T top, T width, T height ) { ... } ... } ArrayListShape sList = new ArrayListShape(); sList.add(new StrokeInteger,Integer(…)); sList.add(new RectInteger(…)); sList.add(new CircleInteger(…)); ArrayL

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档