UML课件2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“类”的概念 类就是一种类型,是集成数据类型的进一步发展,通常要包括多个数据成员。 回忆关于类型的讨论。 类就是一种类型。 类和类型 类型 类 识别二进制块 识别对象 与运算有关 有操作 转换到其他类型 转换到其他类的对象 * “类”的概念 在实际应用中,出现了某个类所有实例需要共享的属性: 共享属性/类属性 可依赖类属性,不依赖对象属性工作的操作: 共享操作/类操作 类字段类操作 SavingAccount GregorianCalendar 在所有对象中,这些属性和操作都一样。 共享 * 关于“类” 在Java中,用static 关键字修饰的属性和操作就是类属性和类操作。 元类(Metaclass):把类作为对象投入到运行时,对这些(类)对象的抽象结果叫做元类。 用对象?类的抽象方法:类?元类 为了避免元类,教材提供了两个方法,见2.16节末尾。 类字段类操作 * 术语表 其中“委托”是.NET的语言成分,类似与函数指针。 * 重用代码 COPY-PASTE 重用系统中的函数 重用对象中的方法 重用系统中的类 在系统之间重用函数 在系统之间重用类 依靠公开的规范重用更大范围的类 如利用全球的JavaBean构件 全球公开发布的函数库 如:Stdio C函数库 全球公开发布的类库 如:J2SE、J2EE 类库 设计模式 框架 如EJB 重用代码经常的手段 * 重用代码 目前的软件领域,软件“重用” 是一个炙手可热的问题。 任何两个软件项目都有很多工作是重复的: 需求、分析、设计、代码、测试的工件都含有大量相似的内容。 希望不要总是重复相似的内容,尽可能的“重用”已经存在的软件单元。 理想中的软件开发方式: “重用”是个热点问题 描述你想要什么 找到需要的软件单元 自动拼装 * 重用代码 首先,你需要描述清楚所需要的算法? 只能形式化描述,因为目前的计算系统只识别形式语言。 你需要考虑一些形式化技术。 如果需要一个排序程序δ,可以考虑用程序执行前后的状态来定义 执行前:输入一个序S 执行后:得到一个序T 满足: ?i,j.(i ≦j ?T[i] ≦ T[j]) AND ?f.(f:S?T) 基本的数学结构、数理逻辑的知识是必须的。 对于更复杂的问题将更难精确描述,有时候甚至不如直接编写程序。 “重用”的有关研究 * 重用代码 另一个稍微复杂的例子: 附录B中关于租车行的所有车的信息: 希望求一个饼图,描述 $5,000以下车辆数 $5,000至$10,000车辆数 $10,000至$40,000车辆数 $40,000以上车辆数 “重用”的有关研究 Car CarModel name price * 重用代码 构造饼图,你需要把所有的Car对象重新分为四类 如果要用形式语言描述需要的构件,则涉及到“构造集合”的概念。 “重用”的有关研究 Car Car CarModel Price=$4000 少于5000 CarModel Price=$4500 Car 5000-10000 10000-40000 40000以上 Car Car Car Car Car Car * 重用代码 更复杂的例子中,还需要“构造偏序”的概念,甚至更复杂的数学结构。 总之,避免程序代码,形式化描述一个软件需求并不容易。 即使能够描述得很清楚,计算机能不能在构件库中检索到? 理论和实践都十分困难。 “重用”的有关研究 * 重用代码 我们需要知道一点:“任何两个程序是否等价是不可判定的”。 无法找到一个程序P,对任意两个程序P1和P2都能判定二者是否是等价的。 当然不排除能判定某些程序是否等价的程序存在。 如果我们给出一个描述D,计算机可以找到符合D的所有程序{P},这是一个构件的查找过程。(如果这个过程存在的话) 必须判定每一个程序P是否符合描述D。(假设A) “重用”的有关研究 * 重用代码 每一个D都可以把所有的程序分为两集合: 符合:在这个集合里的程序都等价,也就是说每一个等价的程序类只有一个描述。 (假设B) 不符合 如果每一个程序P都有一个描述D可以使P符合D。(假设C) 可以为每一个程序P都求出符合的标签D(假设D) “重用”的有关研究 * 重用代码 “重用”的有关研究 如果假设A、B、C、D都满足,则任何两个程序的等价性是可判定的。 当然这不可能,至少需要推翻A、B、C、D中的一个。 推翻假设A:不可以判断程序和描述是否符合,则无法做构件重用精确检索。 推翻假设B:两个等价程序P和Q有两个不同的描述D1和D2,并且D1 和D2的等价性无法判定。等于说,无法检索到全部符合条件的程序。 * 重用代码 “重用”的有关研究 推翻假设C:有些程序没有符合的描述,那么这些程序永远无法重用,描述语言不完备,你怎么能保证那些

文档评论(0)

ajgoaw + 关注
文档贡献者

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

1亿VIP精品文档

相关文档