栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

软件构造——ADT

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软件构造——ADT

1. 抽象类

2. 抽象方法

3. 表示不变性与checkRep

4. 表示独立性

1. 抽象类

面向对象的语言,例如Java中,所有的对象都是通过类来描绘的。

但是,并不是所有的类都是用来描绘对象的。抽象类就是这样的一个类:类中没有包含足够的信息来描绘一个具体的对象。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类必须被继承才能被使用,所以在设计阶段就需要决定要不要设计抽象类。

抽象类表示的是一种继承关系,一个类只能继承一个抽象类。

但是一个类可以实现多个接口。

定义抽象类

public abstract class Abstract

继承抽象类

public class ClassName extends Abstract

2. 抽象方法

在抽象类父类中声明抽象方法,它的所有子类都要实现这个方法。

用abstract 关键字来声明抽象方法,但是抽象方法只包含一个方法名,而没有方法体,即抽象方法方法名后面直接跟一个分号,而不是花括号。

public abstract class Abstract
{
   private 各种变量;
   
   public abstract DataType MethodName1();
   public abstract DataType MethodName2();
   //其余代码
}

注意:包含抽象方法的类必须是抽象类;任何非抽象子类必须重写父类的抽象方法。

3. 表示不变性与checkRep

表示不变性:ADT(抽象数据类型)必须保持性质不变,例如点集不能为空,概率不能大于1之类的规则。

若R表示空间,A表示抽象空间,即客户端看到和使用的值,则有

AF:R→A

A中的元素都肯定在R中至少有一个对应;而R中却可能有元素不和A中的任何元素对应,因此AF为满射而不一定是单射。

定义RI为

RI:R→boolean

如果R中的元素表示合法,则该元素在RI的映射值为true。RI描述了那些是合法值。

ADT的四种操作:构造器Creators、生产器Producers、观察器Observers、变值器Mutators。

Creators构造一个新的类,Producers从现有的类构造一个新的类,Observers从ADT的实现中获得信息,Mutators改变值。

在所有的Creators、Producers和Mutators之后都要checkRep(检查表示不变性):

        测试Creators、Producers和Mutators:调用Observers来观察这些operations的结果是否满足spec。

破坏表示不变性:表示泄露。

防止表示不变性被破坏:尽量使用不可变的数据类型,修饰数据为private final,防御性拷贝。

4. 表示独立性

客户端使用ADT时无需考虑其内部如何实现,ADT内部表示的变化不应影响外部spec和客户端,客户端调用的结果相同,用户调用与内部实现方式无关。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号