软件构造知识点复习:ADT(下)+OOP+等价性

ADT

{ s p e c : 注 释 , 类 名 R e p r e s e n t a t i o n : 具 体 的 存 储 数 据 , 成 员 变 量 I m p l e m e n t a t i o n : 方 法 实 现 体 \left\{ \begin{array}{c} spec:注释,类名 \\ Representation:具体的存储数据,成员变量 \\ Implementation:方法实现体\end{array}\right. specRepresentationImplementation
不变量(Invariants):任何时刻变量都要符合的要求
表示泄露→用private,final
接口(interface):只定义方法与spec

RI与AF

RI
AF(Abstraction Function):映射:R(表示空间)→A(抽象空间)

  1. 满射
  2. 不一定单射
  3. R中的非法值没有映射

RI:映射:R→boolean(R中的表示是否合法)
Rep invartiant:条件
注释:RI+AF+Safety from rep exposure

OOP

接口与类

一个接口可以有多个实现类,一个类可以实现多个接口
静态工厂方法:静态工厂方法default方法:在接口中写实现体
接口中不能声明实现体:ArrayList × —— List √
{ 扩 展 : 接 口 e x t e n d s 接 口 实 现 : 类 i m p l e m e n t s 接 口 继 承 : 子 类 e x t e n d s 父 类 \left\{ \begin{array}{c} 扩展:接口 extends 接口 \\ 实现:类 implements 接口 \\ 继承:子类 extends 父类\end{array}\right. extendsimplementsextends
父类中没有用final修饰的可以重写:@overide;复用:super()
抽象类(abstract class):至少一种方法是抽象的,没有被实现的

多态

{ 重 载 ( o v e r l o a d ) : 同 一 个 函 数 名 , 参 数 一 定 不 同 , 返 回 值 可 以 不 同 泛 型 : p u b l i c c l a s s < E > ; 也 可 以 用 < ? > : L i s t < ? e x t e n d s 接 口 > 子 类 型 多 态 : 继 承 树 , 处 理 顶 层 即 可 \left\{ \begin{array}{c} 重载(overload):同一个函数名,参数一定不同,返回值可以不同 \\ 泛型:public class<E>;也可以用<?>: List<? extends 接口>\\ 子类型多态:继承树,处理顶层即可\end{array}\right. (overload)publicclass<E><?>List<?extends>
继承树Object:equals,hashCode,toString

等价性

等价性:是基于AF的,要求的方法返回值相同
{ 引 用 等 价 性 ( = = ) : 对 基 本 类 型 ( 对 对 象 类 型 比 较 的 是 I D ) 对 象 等 价 性 ( e q u a l s ) : 对 对 象 类 型 \left\{ \begin{array}{c} 引用等价性(==):对基本类型 (对对象类型比较的是ID)\\ 对象等价性(equals):对对象类型\end{array}\right. {(==)(ID)(equals)
{ e q u a l s ( ) : 比 较 等 价 性 , 不 能 对 数 据 修 改 , 与 n u l l 比 较 返 回 n u l l , 与 h a s h C o d e ( ) 成 对 出 现 h a s h C o d e ( ) : 查 询 的 时 候 用 , 相 同 的 h a s h C o d e 一 样 即 可 , 不 一 样 的 也 可 以 相 同 \left\{ \begin{array}{c} equals():比较等价性,不能对数据修改,与null比较返回null,与hashCode()成对出现\\ hashCode():查询的时候用,相同的hashCode一样即可,不一样的也可以相同\end{array}\right. {equals()nullnullhashCode()hashCode()hashCode
equals()=true → hashCode()相同,反之则不行
{ 观 察 等 价 性 : o b s e r v e r 的 值 相 同 行 为 等 价 性 : o b s e r v e r + m u a t o r 都 一 样 \left\{ \begin{array}{c} 观察等价性:observer的值相同\\ 行为等价性:observer+muator都一样\end{array}\right. {observerobserver+muator
{ 观 察 等 价 性 : o b s e r v e r 的 值 相 同 行 为 等 价 性 : o b s e r v e r + m u a t o r 都 一 样 \left\{ \begin{array}{c} 观察等价性:observer的值相同\\ 行为等价性:observer+muator都一样\end{array}\right. {observerobserver+muator
{ i m m u t a b l e : 一 定 要 重 写 e q u a l s + h a s h C o d e m u t a b l e : 不 是 必 须 的 \left\{ \begin{array}{c} immutable:一定要重写equals+hashCode\\ mutable:不是必须的\end{array}\right. {immutableequals+hashCodemutable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值