明天就要期末考试了,今年才刚刚复习完老师的讲义,感觉软件构造这一块的内容还是非常多的
下面废话不多说,先说一下难点一——ADT
一、定义:
抽象数据类型(Abstract Data Type,ADT)是将数据对象、数据对象之间的关系和数据对象的基本操作封装在一起的一种表达方式,它和工程中的应用是一致的
抽象数据类型可以用以下的三元组来表示:
ADT抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
} ADT抽象数据类型名
二.什么是抽象
抽象数据类型是软件工程中一个普遍原则的实例,从它衍生出很多意思相近的名词。这里列出了几个能够表达其中思想的词:
抽象: 忽略底层的细节而在高层思考
模块化:将系统分为一个模块,每个模块可以单独的进行设计、实现、测试、推倒,并且在剩下的开发中进行复用。
封装:在模块的外部建立起一道“围墙”,使它只对自己内部的行为负责,并且系统别处的bug不会影响到它内部的正确性。
信息隐藏:将模块的实现细节隐藏,使未来更改模块内部时不必改变外部代码。
功能分离:一个模块仅仅负责一个特性/功能,而不是将一个特性运用在很多模块上或一个模块拥有很多特性。
三.类型之间的分类以及操作
Creators:Creators能够通过一些必需的参数来构造一个新的对象,即从无到有。
Producers:Producers能从一个对象产生一个新对象(相同的对象)。
Observers:Observers通过观察一个抽象类型的对象来返回一个不同于观察对象的一个新对象。
Mutators:用于改变对象属性的方法。
可以将这种区别用映射来表示:
creator : t* → T
producer : T+, t* → T
observer : T+, t* → t
mutator : T+, t* → void | t | T
四、设计ADT
1.设计简洁,一致的操作。
比起许多复杂的操作,不如结合有用的方法的简单的操作。每一个操纵都应该有明确的目的。并且有一致的行为.
2.要足以支持用户对数据所做的所有操作的需要,而且设计操作的难度要低。
3.一个好的抽象数据类型应该是表示独立的。
五、意义
抽象数据类型独立于运算的具体实现,使用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,实现了信息隐藏