首页 > 其他分享 >软件构造课程思考8

软件构造课程思考8

时间:2023-05-25 22:00:12浏览次数:37  
标签:对象 数据类型 课程 6.2 思考 操作 类型 软件 spec

6 抽象数据类型 ADT
6.1 抽象和用户定义类型
编程语言具有内置类型(如整数、布尔值、字符串等)和内置过程(如输入和输出)。

用户可以定义自己的数据类型和过程——用户定义的类型。

数据抽象:由一组操作刻画的数据类型,强调“作用于数据上的操作”,程序员和客户端无需关心数据的具体存储方式,只需要设计/使用操作即可。

抽象数据类型T的操作和规约刻画了T 的特征

6.2 分类类型和操作
6.2.1 可变和不可变数据类型
可变数据类型的对象:提供了可改变其内部值的操作

不可变数据类型的对象:操作不可改变其内部值

通常,编程语言对于一些类型会提供两种方式,如string和stringbuilder

6.2.2 四种操作
构造器:(从无到有)创建该类型的新对象

生产器:(从有到新)从该类型的旧对象创建新对象,如String的concat()方法

观察器:获取抽象类型的对象并返回不同类型的对象,如.size()

变值器:改变对象属性的方法,如.add()

6.2.3 方法签名
构造器:构造函数或者静态函数(实现为静态方法的构造器通常称为工厂方法,如String.valueOf(Object Obj) (返回参数的字符串形式))

变值器:返回值如果为void,则必然意味着它改变了对象的某些内部状态。不过也有可能返回非空类型,如Set.add()返回一个boolean来明确说明是否成功;Component.add()返回对象本身。

6.4 设计抽象数据类型
良好的ADT设计:靠“经验法则”,提供一组操作,设计其行为规约spec

spec中应有的内容:参数、返回值、异常等

spec中不应谈及任何内部表示的细节,以及R空间中的任何值

因此,AF和RI应该写在注释里,而不能写在javadoc中,否则表示泄漏

1.设计简洁、一致的操作

2.提供功能要足够强,足以满足用户需求。

判断是否满足用户需求的方法:看对象的每个需要被访问到的属性是否能被访问到

3.要么针对抽象操作,要么针对具体应用的设计:

类型可以是泛型的:例如,列表、集合或图形;或者它可能是特定领域的:街道地图、员工数据库、电话簿等。

但是不可以是混合以上两种情况的。面向具体应用的类型不应该包含通用方法,面向通用的类型不应该包含面向具体应用的方法。

6.5 表示独立性
表示独立性:client使用ADT时无需考虑其内部如何实现,ADT内部表示的变化不应影响外部spec和客户端

eg: list提供的操作与其实现为linked list还是array list无关

通过前提条件和后置条件充分刻画了ADT的操作,spec规定了client和implementer之间的契约,明确了client知道可以依赖哪些内容,implementer知道可以安全更改的内容。

标签:对象,数据类型,课程,6.2,思考,操作,类型,软件,spec
From: https://www.cnblogs.com/zzzzzzx/p/17433099.html

相关文章

  • 设计模式-软件设计原则
    开闭原则定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭用抽象构建框架,用实现扩展细节优点:提高软件系统可复用性和可维护性依赖倒置原则定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象针对接口编程,不要针对实现编程优......
  • 关于软件构造第二部分(PPT4-8)的总结复习
    一、基本数据类型、对象数据类型基本数据类型:int、long、boolean、double等,——有值,无ID,无法区分,不可变,在栈中分配内存,代价低;对象数据类型:String、Date等——有值,有ID,可为可变也可为不可变,在堆中分配内存,代价昂贵;可将基本数据类型包装为动态数据类型(首字母变大写)通常在定义集合......
  • RustDesk,可私有部署的远程控制软件
    一、服务端:运行压缩包里面的RustDeskServer.Setup.exe安装即可  二、客户端:输入ID服务器IP地址即可开始连接,完全免费使用,无任何限制 ......
  • 北森iTalentX7.0: AI教练到来,掀起一场新的HR软件变革
    5月25日,“HRSaaS未来势”2023北森春季产品发布会上,北森提出人力资源软件的未来十年,将从“为HR而设计”走向“为员工而设计”,北森正式发布iTalentX7.0—业人一体,为员工而设计。北森CEO纪伟国认为:传统HR软件主要围绕HR部门的工作场景而设计,目标是提升HR的工作和管理效率。这一次发布......
  • yum安装软件提示Another app is currently holding the yum lock
    关闭yum进程ps-ef|grepyum......
  • 课程总结
    回顾我的课程计划(第一周的计划),我完成的程度如何?请列出具体数据和实际例子。答:在第一周的课程计划中,我列出了以下任务:观看学习视频并做好笔记完成阅读《构建之法》的任务参加小组讨论和作业通过自我评估,我认为我在第一周的学习任务中完成得还算不错。我按时观看了所有的视......
  • 软件接口测试有什么作用?接口测试有哪些好用工具?
    一、软件接口测试有什么作用?在软件开发过程中,接口是不可避免的一部分。接口测试是为了检查软件系统中不同模块之间的接口能否正常工作,以及模块之间的数据是否能够互相传输而进行的测试。接口测试的主要作用包括保证系统区域间的互通性、降低软件的故障率、提高软件的可靠......
  • 好用的工作记事软件 好用的工作记事本APP
    有不少职场人士都表示,现在自己的工作是越来越忙了,并且随着工作任务的增加,经常会忘记重要的工作事项,这太影响工作了。不过在工作中使用一款工作记事本APP就能够帮助我们随时随地记录工作中的各种事情了,可以起到很好的备忘和提醒作用。那么好用的工作记事软件有哪些呢?有没有一款好......
  • 一款日程提醒软件 让你高效度过每一天
    随着生活和工作节奏的加快,很多网友表示自己每天从早到晚都没有停下来休息过,总是忙的脚不沾地,但是一天结束后进行复盘,发现自己完成的事情并不多,办事效率没有别人高,这是为什么呢?其实想要在有限的时间内高效完成更多的事情非常简单,只需要做好日程管理和日程提醒。那么我们如何做好......
  • 突然, "不想"再做软件....
         3月14,传说中的白色情人节。。。。那么巧,纳西族的三朵节,在云南呆了这么久,第一次这么深刻地感受到了一个民族的文化,那么亲切,那么自然,那么。。。。      这是一个什么样的节,我说不清楚,只是想说,今晚,第一次,我不想为任何事而烦恼,不想为任何事......