自己复习看的 内容不严谨
***明天就考试了 其实不会的还是非常之多以至于我都不知道这篇复习哪个好
简述LSP
如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。
- 对子类型和其中方法的要求:
- 只能增加方法
- 需要实现抽象类中方法
- 返回值要类型相同/子类型/协变
- 参数要相同/反协变
- 异常类型协变,且不能抛出额外异常
- 前置条件不能强化
- 后置条件不能弱化
- 不变量保持
ADT的几个属性
- RI-表示不变量,REP必须满足的条件
- AF是从抽象空间A到表示控件Rep的映射
- 实现者看R,就算immutable其实rep也可以改,而客户看到的是A,R到A只能保证是满射
- 同一个表示空间可以有不同的RI,即使是同一R和RI也可能有不同AF,即解释不同
- Rep Exposure表示泄露,一般应对方法就是尽量都用private和final修饰权限,尽量用immutable类型
- 防御式拷贝,不仅传出去时候拷贝,传进来也拷贝。(有的对象式数据类型,他初始化只是确定了内部rep也指向那个东西,但要是那玩意之后在外面改变了会引发意想不到的错误)
ADT有四种操作
- creater:new
- producer:getSub
- observer:contains
- mutator :add
正则表达式
这部分内容主要形式语言自动机已经学过了,在软构中只需要了解形式的规格就可
所以我就选取了课件中能让人看一眼就想起来精髓的部分直接放这了
- 基本语法
- 派生树
- markdown和HTML(同理)
- 简写字符集
- 转义符