思路
问题引导思路, 指引方向
- 什么粒度思考程序设计更合适?
- 人机交互的关键是什么?
- 如何表达事物的属性及其变化?
- 语言能表达什么的?
- 如何作出判断和推测?
- 前进中的抉择意味着什么?
- 信息时代的边际成本有多低?
- 如何判断输入的是数字, 还是文字?
- 如何改变事物的状态?
- 为什么要封装事物的状态?
- 如何表达事物的发生发展和消亡?
- 如何长期保存对象的状态?
- 如何表达事物之间的组合关系?
- 如何表示对象的集合?
- 如何表达对象之间的相似?
- 如何表达相似对象之间差异?
- 标准有什么用?
- 如何应对异常?
- 如何模拟多个事物的发展?
- 如何协调多个事物的进度?
- 如何在多个计算机之间通信?
- 如何把对象存入数据库?
- 函数和对象哪个更适合作为基本的思考单位?
- 如何设定目标指引程序开发?
主题和观点
需要不断强调的主题: 名, 变量和常量, 作用域, 可见性和生命周期, 对象之间的依赖关系.
- 以对象为单位看待世界, 思考对象及其之间的关系. 以对象为媒介, 用计算机实现想法. 以对象为核心概念开发软件.
- 交互的作用在于信息交流, 交互的关键活动是输入输出
- 事物的状态都可量化表示, 计算转变状态, 计算机能表达有限精度的数值信息
- 语言文字是最自然的表达方式, 语言能表达无限范围的概念, 语言的计算主要是连接, 拆分和替换
- 比较联系了数值和逻辑值, 逻辑运算就是判断, 逻辑运算主要是与或非
- 面对前进道路上的多种可能性, 用判断选择前进的道路
- 数组表示多个相同类型的事物, 循环表示重复多次的活动, 可以用循环每次处理数组中的一个事物
- 数字, 逻辑都可以用语言文字表达, 字符串的内容可以解释为数值
- 方法改变对象的状态, 也表达了对象能够接收的数据(参数)和对象类型之间的依赖(知道)关系
- 对象的方法封装了对象状态, 也封装了表示对象状态的数据结构
- 对象的起源和消亡, 需要一个负责分配空间和设置对象初始状态的方法
- 用文件长期存储对象的状态
- 对象的组合还是对象
- 很多的对象构成的集合, 链表, 映射
- 对象的扩充
- 扩充后的变化
- 对象的标准接口
- 一切皆要有预案
- 程序的一次执行中的顺序执行和多头并进
- 程序的一次执行中的协同
- 互联网上的通信和协同
- 统一格式的数据 - 结构化数据和非结构化数据
- 描述只干活不改变自身状态的函数
- 目标引导方向
知识点
- 面向对象程序设计简介
- 基本输入输出
- 数值类型的变量和值及其运算
- 文字类型的变量和值及其运算
- 逻辑类型的变量和值及其运算
- 条件语句
- 数组和循环语句
- 字符串与其它类型的转换
- 对象的方法及其重载
- 对象的成员变量及其封装
- 对象的构造方法
- 静态方法和文件访问
- 对象之间的依赖关系和组装
- 对象的集合
- 继承(扩充)
- 多态性
- 抽象类和接口
- 异常与异常处理
- 多线程
- 线程间通信
- 网络通信
- 数据库访问
- 函数式编程
- 测试驱动开发和OOP的原则