表示空间、抽象空间、表示不变量(RI)、抽象方法(AF)

        在复习的时候,遇到了一些令人头大的概念,包括rep、RI、AF等等,这篇文章就是为了整理相关概念,尽量把这些东西能够讲清楚。

1、表示空间和抽象空间

        我们使用R表示表示空间(值空间),由实际实现实体的值组成。

        ADT将作为单个对象实现,但更常见的是需要一个小的对象网络,因此值通常是相当复杂的东西。

        我们使用A表示抽象空间,由该类型设计支持的值组成。

        它们是理想的实体,并不像描述的那样存在,但它们是我们想要查看抽象类型元素的方式,作为该类型的客户端。例如,无界整数的抽象类型可能将整数作为其抽象值空间;它可能被实现为一个简单的(有界)整数的数组,这一事实与类型的用户无关。

        ADT开发者关注表示空间R,client关注抽象空间A。

        每个抽象值都会被一些表示值映射到,即从R到A的映射是满射。实现抽象类型的目的是支持对抽象值的操作。通常情况下,我们将需要能够创建和操作所有可能的抽象值,因此它们必须是可表示的。

        一些抽象值可能被多个表示值映射到,即从R到A未必是单射。这是因为表示不是一种严格的编码。如:将无序字符集表示为字符串的方法不止一种。

        不是所有的表示值都会被映射到,即从R到A未必是双射。假设我们定义字符串不应该包含重复项,因此“abbc”项是不会被映射到的。

2、AF(Abstraction Function)

        定义:抽象函数是R和A之间映射关系的函数,即如何将R中的每一个值解释为A中的每一个值。(AF:R→A)

        性质:AF是满射、非单射、未必双射的,即R中的部分值并非合法的,在A中无映射值。

        一般情况下,AF可以使用数学语言表示这种映射,也可以使用文字进行描述。比如如下文字:represents the set of characters found in s,只需要用自然语言你的表示值解释清楚即可。

3、RI(Rep Invariant)

        在了解RI之前,你首先需要解决rep的定义。rep指表示值,你可以简单地理解为你在class里定义的成员变量,就是你用来表示抽象值的具体实现。

        定义:表示不变量RI是一个从R到布尔值(boolean)的变量。对于一个表示值r,RI(r)为真,当且仅当r可以被AF映射到。换句话说,RI告诉我们给定的表示值是否“良好”。或者,你可以将RI看作是一个集合:它是定义AF的代表值的子集。

        (小声哔哔:不要被这个“表示不变量”迷惑到,RI表示的其实就是一个规则,满足这个规则的rep即为合法的,这个映射值为true)

        表示不变性RI:某个具体的“表示”是否是“合法的”。也可以将RI看作所有表示值的一个子集,包含了所有合法的表示值。也可以将RI看作一个条件,描述了什么是“合法”的表示值。

        一般情况下,你可以使用自然语言描述这样的条件(或者规则),比如如下文字:s contains no repeated characters,同样地,把事情讲述清楚即可。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在UML类图中,抽象方法可以表示为带有斜体字的方法名,同时在方法名上方加上一个空心三角形,如下所示: ``` + methodName() : returnType {abstract} ``` 其中,加号表示方法是public的,methodName表示方法名,returnType表示返回值类型,{abstract}表示方法抽象的。在UML类图中,抽象方法通常出现在抽象类中,并且不能被实例化。抽象方法的具体实现由子类来完成。 ### 回答2: UML类图中,抽象方法可以通过一种特殊的符号来表示,即在方法名称前面使用斜体的字体以及一个虚线,表示方法抽象的。 通常,在类的示意图中,方法定义都是以这样的格式呈现的:方法的可见性修饰符、方法的名称、方法的参数列表和返回类型。对于抽象方法,通常省略掉方法的具体实现细节,只标记出方法的名称以及一个虚线。 例如,假设有一个名为“动物”的类,该类有一个抽象方法“发出声音”。通过UML类图表示,可以使用一个斜体的字体并在方法名称前面加上一个虚线,表示方法抽象的。具体表示为: ``` +叫声():void ``` 这表示“动物”类中有一个抽象方法叫做“叫声”,其返回类型为void,没有参数。 此外,UML类图中还有其他表示抽象方法的方式。一种常见的方式是在方法名称后面加上一个斜线,表示方法抽象的,如: ``` +叫声()/void ``` 另外一种方式是通过在类上方使用一个斜线水平画线的方式表示该类是一个抽象类,而所有的方法都可以被视为抽象方法。在这种情况下,抽象方法的具体表示可以省略。 总之,对于UML类图中的抽象方法,标记出抽象方法的方式可以有所不同,但都会使用特殊的符号来表示,以便于清晰地展示类的结构与关系。 ### 回答3: UML类图是一种用于表示类、对象和它们之间关系的图形化工具。在UML类图中,抽象方法表示方式有一些特殊的标记和符号。 首先,抽象方法通常在类中以斜体字的形式表示。这样可以区分它们和普通方法的不同。同时,抽象方法的名称也会在前面加上一个特殊的表示符号(一般是一个空心的斜杠“/”)来标识它们是抽象的。 另外,UML类图还提供了一种专门的符号来表示抽象类。抽象类是包含一个或多个抽象方法的类,它本身不能被实例化。在UML类图中,抽象类的名称会被用斜体字显示,并在名称的上方加上一个斜线来表示。同时,抽象类的方法也使用相同的斜线符号标识为抽象方法。这样,我们可以清晰地看到哪些方法抽象方法。 除了上述表示方法,UML类图还提供了其他一些扩展符号来表示方法的可见性、参数和返回类型等。这些扩展符号可以进一步说明抽象方法的具体细节,使得UML类图更加准确和详细。 总之,UML类图使用斜体字和斜线符号来表示抽象方法,进一步加强了抽象方法的可识别性。通过这种方式,我们可以清楚地了解类中的抽象方法,并在系统设计和开发过程中更好地应用和理解抽象方法的概念。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值