- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 19章 概念模型
采用我们使用的相同的对象模型表示法来描述运行中程序的堆结构——即结构中有什么
对象,他们是怎样通过属性联系起来——可以更抽象地用来描述一个系统或由系统操作所处的
环境的状态空间。我把这些称为“概念模型”;在课本中,称其为“数据模型”。在练习4,
示范例子和对象建模表示法描述波士顿地铁系统结构的过程中,你已经动手建立了一些概念模
型。
表示法自身十分简单,并且一旦你以面向实现的观点看,将Java对象换为现实世界的实体,
将属性换为关系等等,模型会很容易理解。学习本课程之后,你应该能够读懂概念模型。
另一方面,通过编写概念模型,你会得到更多练习。这涉及到进行恰当的抽象——正如你
设计一个抽象数据类型的接口时必须做的。想做好很难,但障碍尤其与对象模型无关。要找到
问题的实质,并将其简洁地表达通常并不容易。
一旦越过这个障碍,并构造了一个概念模型,你就成功了一半。有个说法:如果你能准确
地描述要解决的问题,那么你就在解决这个问题上有了进展。在软件设计上,这个进展比成功
一半要好得多。
所以要学会建立概念模型必须多加练习。在这个过程中有很多乐趣,当你的建模技术有所
提高时,你会发现自己已成为一名优秀的设计师了。当你的概念结构清晰时,代码的结构也会
变得简单和清晰,这样写代码会更有建设性。
在本讲中,我会给出关于如何建增量模型的一些见解。在这些部分,模型会以最终形式出
现。
19.1 原子、集合、关系
我们将从集合、关系和原子开始建立模型结构。原子是一个原始的实体,有如下性质:
不可分割性:不能分解为更小的部分;
不变性:属性永远不变;
不可解释性:没有任何内置属性,比如“数”。
除了基本粒子,现实世界很少有东西是原子的。但这不影响我们将它们以原子建模。事实
上我们的建模方法完全没有内置复合的概念。建立一个模型x,x由y和z两部分组成,我们会将
x、y和z都视为原子的,并将制约关系用它们之间的外在的关系表示。
一个集合仅仅是原子的汇集,没有重复计数和次序的概念。关系是联系原子的结构。数学
上,它是一系列对子,每一对由两个原子以指定顺序组成。你可以将关系想象为一个有两列的
表,其中每个表目是一个原子。列的顺序很重要,行的顺序无关紧要。行中的每个列必须有一
个表目。
在集合和关系上定义一些操作符会更方便些。我们将用它来说明我们的图形化模型,但它
们也能被用在更多易表现的约束上。
给出两个集合,s和t,可以将它们的并集写成s+t,交集写成st,差集写成s-t。我们用
no s表示s为空集,用some s表示s为非空集合。用s in t表示s中的每个元素也是t中的元素。
1
s=t表示s中的每个元素都是t中的元素,且反之亦然。
给出一个集合s和一个关系r,s.r表示s在r下的映射——即s中的元素通过r映射形成的集
合。我们可以将它定义成这样的形式:
s.r = {y | some x: s | (x,y) in r}
给出一个关系r,我们将r的转置写成~r ——即镜像关系,将其这样定义:
~r = {(y,x) | (x,y) in r}
最后,我们将r的传递闭包写成+r :它是将x与y联系的关系,如果存在一些原子
z1,z2,…,zn的有限序列如下:
(x,z1) in r
(z1,z2) in r
(z2,z3) in r
(zn,y) in r
并将r的自反传递闭包记为*r ,即把传递闭包作补充,将每个原子与它自己关联。你可以
将传递闭包设想为将某关系做1,2,3…次应用时的映射;自反传递闭包则包括0次应用。
让我们看一些例子。假设有一个存在或曾经存在过的人的集合Person;男人和女人的集合
Man和Woman;一个将父辈和子辈联系起来的关系parents;还有一个将一个人和配偶联系起来
的关系spouse。
你能解释以下语句么?在现实世界中哪些是正确的?
no (Man Woman)
Man + Woman = Person
all p: Person | some p.spouse = p.spouse.spouse = p
all p: Person | some p.spouse
all p: Perso
您可能关注的文档
最近下载
- 翼状胬肉的护理查房-PPT.ppt
- 2022年应急管理工作应知应会知识竞赛题库(含答案).pdf
- 全民微信时代增进了VS减弱了人与人之间的交流辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx
- 超星网课尔雅《人人学点营销学》尔雅答案2022章节测试答案.docx
- 2019CSP-J NOIP普及组初赛C++试卷.pdf VIP
- 2024年《城镇燃气管理条例题库》考试题库(含答案).pdf VIP
- 最新浙教版八年级上册劳动技术 项目三 任务二《打蛋器的制作》课件(课件).pptx
- 纪律意识方面存在不足及措施4篇.pdf
- 消防安全教育PPT课件.pptx VIP
- 《新中国成立75周年》全文课件.ppt VIP
文档评论(0)