没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论











目录
0-基础 ...................................................................................................................................................................1
1 行为抽象(功能抽象)P93: ...........................................................................................................1
三大结构 .............................................................2
函数/子程序和结构化分解 ..............................................2
Parnas 原则(核心、数据抽象与封装的底层依据)P101.....................2
2 数据抽象(p131)......................................................................................................................................2
3 对象抽象 ..................................................................................................................................................2
1-范式 ...................................................................................................................................................................2
1 命令编程范式(p49).........................................................................................................................2
2 函数编程范式(p50).........................................................................................................................2
数据的不变性 .........................................................3
函数定义和应用 .......................................................3
迭代与递归 ...........................................................3
2-类层次(面向对象的重要概念/模型)..................................................................................................3
1 里氏替换原则(p55).........................................................................................................................3
2 继承(p61)...........................................................................................................................................3
1 特化继承/实例继承(p62)............................................3
2 扩展继承 ...........................................................3
3 接口继承/协议继承(可以参考 4.4) ...................................4
4 多重继承 ...........................................................4
继承的优缺点(P64) ..................................................4
3 接口与实现类(P142) ......................................................................................................................4
4 接口继承 Vs 实现继承(p137) ......................................................................................................4
3-依赖于抽象类型(p148) ................................................................................................................................4
类的扩展性 .................................................................................................................................................4
针对接口编程”或抽象依赖原则 ....................................................................................................................4
4-回调机制(目录笔记)...............................................................................................................................4
框架 Vs. 工具箱 ........................................................................................................................................5
回调机制的实现 ........................................................................................................................................5
Java 语言的回调机制...................................................5
5-框架设计者......................................................................................................................................................6
6-策略模式 ..........................................................................................................................................................7
7-好莱坞法则......................................................................................................................................................7
轮询 VS. 通知 ............................................................................................................................................7
观察者模式 .................................................................................................................................................8
0-基础
三大抽象:行为抽象、数据抽象、对象抽象(面向对象范式外加上对象抽象)

1 行为抽象(功能抽象)P93:
行为抽象是对可执行代码的抽象。用户仅需要了解接口——接口与实现相分离或称为
Parnas 原则 。
三大结构
顺序、选择/分支、循环
顺序结构参见[0.2.2
命令
编程范式],分支结构参见[1.2.5 策略模式(5.9)],循环结构参见
[0.2.3 函数编程范式]。
函数/子程序和结构化分解
将一个大程序按功能划分成若干个较小的功能模块,称为功能分解或结构化分解。
实验见:yqj/java/Part1(ch1)。
Parnas 原则(核心、数据抽象与封装的底层依据)P101
——用户仅需要了解接口。接口和实现是分离的。
站在用户程序员的角度,接口(interface)是使用该方法的用户所需要知道的所有信息,
包括方法头(方法原型)、和非常重要的说明文档。而实现(implementation)是指完成该接口
之功能承诺的代码块,即方法体。
只定义接口: JAVA 抽象方法、C++的纯虚函数;Scheme 用高阶函数,不遵循接口与
实现分离原则。定义良好的接口,契约、前置后置条件(p102),抽象方法(p103)
2 数据抽象(p131)
是指数据类型的抽象特征与其实现的具体细节清晰的分离。
面向对象是数据抽象的一个分支。使用访问修饰符限定类的接口,这一机制称为封装
(p133)。不能访问数据/函数叫信息隐藏。
3 对象抽象
面向对象编程范式:柏拉图(类是世界独立存在的,对象由类创建)、里氏替换(子类
型是一个父类型,子类型的对象必须能够替代父类型 P.55)、Parnas 三原则(合称 PLP)的
编程范式。
库恩范式论:观念范式、心理范式、规则范式 (P47)

1-范式
范式是从一些核心观念出发,衍生出来的对一门学科的解释、认知和应用的体系,而编
程范式则是关于程序设计学科的范式。
面向对象编程范式(p26)是基于柏拉图(Plato)原则、Liskov 原则和 Parnas 原则的编
程范式。基于计算机科学之根:一般递归函数(逻辑编程范式)、λ表达式(函数编程范
式)、图灵机(命令编程范式),形成了传统的 3 大编程范式。面向对象编程范式的核心观
念是:以概念/类型建模一切。结构化分解是所有编程范式都具有的特点。
1 命令编程范式(p49)
核心观念:以机器的运作方式看待一切。基于图灵机的命令范式,有两个基本特点:机
器状态、顺序执行。(面向对象范式的核心是构造概念/类型,而命令编程范式只有函数级别
的封装机制而没有概念级别的封装机制,因此熟悉命令编程范式的程序员常常不习惯组织一
系列函数来完成对概念的模拟。)
2 函数编程范式(p50)
λ运算决定或形成了函数式编程范式。“以λ表达式构造一切”这一函数编程范式的核
心观念时,是一种“归根结底”的态度——实验参考 yqj/scheme/ch1
λ表达式特点(p51):数据的不变性、使用递归作为循环的机制、函数没有副作用
(p98)、引用透明性、支持闭包(closures)和高阶函数(higher-order functions)、支持懒惰计
算(lazy evaluation)。合法的λ表达式的递归定义(见 p51)
数据的不变性
(i++)改为递归、多线程优势。
从语言的类型系统(type system)考虑:Scheme 语言,变量没有类型(或者说拥有同样
的类型,保持可以指向任何东西的指针),常量有类型:①很容易实现泛型②不支持接口与实
习分离
函数定义和应用
函数定义有两个特点。①λ表达式都是匿名函数。(为匿名函数取一个名字,或者说定
义一个变量,能够方便地多次使用该函数,通常会受到编程语言的支持。)②每个函数只有
一个输入参数。
函数应用是指给函数一个(实际)参数并使用该函数进行求值。实验见 yqj/scheme/ch1
迭代与递归
数据的不变性是纯函数式编程语言的宗教信仰,而循环 for(int i=0;i < n;i++)中变量 i 的

值总在变,对于 Scheme 而言,这是违反其基本价值观的异端。
其次,递归,更一般地,函数的调用,都有创建新的栈帧/stack frame 的开销。Scheme
中,如果递归函数是尾递归,事实上是迭代执行的,等价于 Java 的 while、for 等迭代结构。
当然,如果 Scheme 使用普通的递归会和 Java 递归一样,导致栈溢出错误。Scheme 需要通
过尾递归达到 Java 使用 for 语句的效果。实验见 scheme/ch3
2-类层次(面向对象的重要概念/模型)
是指将对象进行分类而形成的一个层次结构。①类层次结构中各个类之间具有泛化与特
殊关系②一个对象能够同时属于不同抽象层面的各个类型。
1 里氏替换原则(p55)
——子类型是一个父类型,子类型的对象必须能够替代其父类型(替代性)
LSP 是检测和保证类层次的正确性,进而维护父类型编写程序的正确性。类层次判断的
基础是 IS-A 关系,识别是否是父子类型。
子类定义 p55、子类型与子类区别 p56、多态、向上造型 p58、改写 p60、
2 继承(p61)
继承指新定义的类(子类)承接一个已有类或接口的属性和行为。 继承仅仅是对内层
次中两个类型关系的描述。 子类继承其父类的所有可访问成员。 是否继承依据:能否在
子类的类体中访问父类的那些成员。 继承仅针对父类的成员,对于构造器、初始化块等非
成员,不被子类继承。
分类(p62):一个拥有多个方法的类,会同时具有多种继承形式。
1 特化继承/实例继承(p62)
以父类的代码复用(p138)为目的的继承。与其相反的泛化继承。
LSP:实现继承、接口继承、扩展继承。①接口 VS 实现继承(p137)②直接使用(最
好方法)VS override ③设计变体(不好的编程)
2 扩展继承
子类扩展的丧失:白马作为马出现后就不是白马了。与扩展继承相反的是限制继承或退
化继承,违反了里氏替换原则(LSP)。如果父类拥有子类没有的接口,那么按他是限制继承。
剩余15页未读,继续阅读
资源评论


IKUN_齏
- 粉丝: 12
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
