6.1抽象
我们用abstract关键字来定义抽象类。抽象类的作用仅仅是表达接口,而不是具体的实现细节。抽象类中可以存在抽象方法。抽象方法也是使用abstract关键字来修饰。抽象的方法是不完全的,它只是一个方法签名而完全没有方法体。
如果一个类有了一个抽象的方法,这个类就必须声明为抽象类。如果父类是抽象类,那么子类必须覆盖所有在父类中的抽象方法,否则子类也成为一个抽象类。一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的。设计这样的抽象类主要是为了防止制造它的对象出来。
抽象函数/抽象类
- 抽象函数–表达概念而无法实现具体代码的函数
- 抽象类–表达概念而无法构造出实体的类
- 带有abstract修饰符的函数
- 有抽象函数的类一定是抽象类
- 抽象类不能制造对象
- 但是可以定义变量
- 任何继承了抽象类的非抽象类的对象可以付给这个函数
实现抽象函数
- 继承自抽象函数的子类必须覆盖父类中的抽象函数(实现)
- 否则自己成了抽象类
抽象类
- 与具体相对
- 表示一种概念而非实体
- 与细节相对
- 表示在一定程度上忽略细节而着眼大局
6.2数据与表现分离–细胞自动机
程序的业务逻辑与表现无关表现可以是图形的也可以是文本的
- 表现可以使是当地的也可以是远程的
View和Field的关系
- 表现与数据的关系
- View只管根据Field画出图形
- Field只管数据的存放
- 一旦数据更新了以后,通知View重新画出整个画面
- 不去精心设计那个局部需要更新
- 这样简化了程序逻辑
- 是在计算机运算速度提高的基础上实现的
责任驱动的设计
- 将程序要实现的功能分配到合适的类\对象中去是设计终中非常重要的一环
网格化
- 图形界面有更改的解析度
- 但是将画面网格化以后,数据就更容易处理了