6.1抽象

我们用abstract关键字来定义抽象类。抽象类的作用仅仅是表达接口,而不是具体的实现细节。抽象类中可以存在抽象方法。抽象方法也是使用abstract关键字来修饰。抽象的方法是不完全的,它只是一个方法签名而完全没有方法体。

如果一个类有了一个抽象的方法,这个类就必须声明为抽象类。如果父类是抽象类,那么子类必须覆盖所有在父类中的抽象方法,否则子类也成为一个抽象类。一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的。设计这样的抽象类主要是为了防止制造它的对象出来。

抽象函数/抽象类

  • 抽象函数–表达概念而无法实现具体代码的函数
  • 抽象类–表达概念而无法构造出实体的类

 

  • 带有abstract修饰符的函数
  • 有抽象函数的类一定是抽象类
  • 抽象类不能制造对象
  • 但是可以定义变量
    • 任何继承了抽象类的非抽象类的对象可以付给这个函数

实现抽象函数

  • 继承自抽象函数的子类必须覆盖父类中的抽象函数(实现)
  • 否则自己成了抽象类

抽象类

  • 与具体相对
    • 表示一种概念而非实体
  • 与细节相对
    • 表示在一定程度上忽略细节而着眼大局

6.2数据与表现分离–细胞自动机

程序的业务逻辑与表现无关表现可以是图形的也可以是文本的

  • 表现可以使是当地的也可以是远程的

View和Field的关系

  • 表现与数据的关系
  • View只管根据Field画出图形
  • Field只管数据的存放
  • 一旦数据更新了以后,通知View重新画出整个画面
    • 不去精心设计那个局部需要更新
    • 这样简化了程序逻辑
    • 是在计算机运算速度提高的基础上实现的

责任驱动的设计

  • 将程序要实现的功能分配到合适的类\对象中去是设计终中非常重要的一环

网格化

  • 图形界面有更改的解析度
  • 但是将画面网格化以后,数据就更容易处理了