软件构造ADT与OOP知识点

(1)ADT 的特性:表示泄漏、抽象函数 AF 、 基于数学的形式对 ADT 、表示不变量 RI

(2)ADT是由操作定义的,与其内部 如何实现无关

(3)四种ADT类型:

       Creators      构造器: 用于创建新的实例或对象。

       Producers     生产器:   用于从现有实例生成新的实例,通常不会修改原实例,而是返回一个新的实例。(e.g. 合并两个集合返回一个新的集合,将列表转化成一个不可变列表)(本质上为拷贝数据而非改值)

       Observers     观察器:用于检查或查询对象的状态,返回有关对象的信息,而不修改对象(e.g.获取栈的大小,检查队列是否为空,获取集合中元素的数量)

       Mutators      变值器:改变对象属性的方法(可变性的关键,即只有mutable的对象才能够有Mutators):用于修改对象的状态,直接改变对象的数据或结构

变值器通常返回void,这意味着它改变了对象的某些内部状态

变值器也可返回非空类型

(4)ADT的内部表示 ( 私有属性 ) 对外部都应严格不可见

(5)ADT的规约里只能使用client可见的内容来撰写,包括参数、返回值、异常等。

(6)故在代码中以注释的形式写出AF和RI而不能在 Javadoc文档中,防止被外部看到而破坏表示独立性 / 信息隐藏

(7)ADT类型的注意事项:

       构造器和生产器在创建对象时要确保不变量为true

       变值器和观察器在执 行时必须保持不变性

       在每个return之前,用checkRep()检查不变量是否得到保持

考点包括以下几个方面:

  1. ADT的定义和特性:

    • ADT是什么?为什么它被称为抽象数据类型?
    • ADT与数据结构之间的关系是什么?ADT与具体实现的数据结构有何区别和联系?
  2. ADT的基本操作:

    • ADT定义了哪些基本操作(如创建、销毁、插入、删除、查找等)?
    • 这些操作在抽象层面上如何描述?它们的复杂度是多少?
  3. ADT的实例:

    • 常见的ADT有哪些实例?例如栈、队列、链表、树、图等。
    • 每种ADT的特点和应用场景是什么?如何选择合适的ADT解决特定的问题?
  4. ADT的设计与实现:

    • 如何设计一个符合特定要求的ADT?
    • ADT的实现可以采用哪些具体的数据结构来支持其定义的操作?
  5. ADT的抽象性和封装性:

    • ADT如何通过封装隐藏其内部实现细节?
    • 如何保证ADT在实际使用中的安全性和有效性?
  6. ADT的应用:

    • ADT在软件工程中的实际应用和重要性。
    • 如何利用ADT提高代码的模块化、可维护性和复用性?

 

12、OOP

       (1)接口、抽象类、具体类

①接口(interface):

       声明:使用“interface”关键字

       方法:默认为“public abstract”可以包含默认方法“default”和静态方法(“static”)

 一个类可以实现多个接口,使用 implements 关键字

②抽象类(abstract)->不能被实例化的类

       声明:使用“abstract”关键字

       方法:可以包含抽象方法和具体方法

Tigs:

       抽象方法:只有方法签名,没有方法实现,子类必须重写(实现)这些抽象方法

       使用 extends 关键字,一个类只能继承一个抽象类。

③具体类

       声明:不需要任何的关键字

       方法:可以包含具体方法

可以继承抽象类并实现接口。

       (2)Inheritance:严格继承->子类只能添加新方法,无法重写超类中的方法

       (3)Override覆盖/重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值