概述
课程内容¶
- 面向对象的软件构造概述 & Java语言基础
- 类与对象、接口和继承、集合
- 设计模式
- 单元测试以及代码质量保障
- 流与输入输出、多线程与同步、泛型与反射
- Swing介绍、网络编程
软件定义¶
- 软件=程序+数据+文档
- 程序
- 数据
- 文档
软件构造的基本流程¶
传统软件开发过程模型¶
- 瀑布过程
- 增量过程
- 原型过程
瀑布模型是最典型的预见性开发方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。
缺点:无迭代,无法适应需求增加、变化
流行软件开发过程模型¶
- 敏捷开发
- 测试驱动开发
敏捷开发:通过快速迭代和小规模的持续改进,以快速适应变化
测试驱动开发:要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行
- 敏捷开发实例:微信
2011.1 | 2012.8 | 2017.1 | 2017.3 | 2017.5 |
---|---|---|---|---|
微信发布 | 公众号上线 | 小程序正式发布 | 公众号可能转小程序 | 开放附近的小程序 |
2017.6 | 2017.8 | 2017.9 | 2017.11 | 2018.3 |
小程序间可跳转 | 小程序可关联50个公众号 | 搜索框下方添加小程序快捷入口 | 小程序可通过公众号底部广告推广 | 内侧小程序广告组件 |
软件构造目标¶
- 可理解性
- 可维护性
- 做到“高内聚,低耦合”
- 可复用性
- 时空性能
- 内存性能
- 算法性能
- I/O性能
面向对象三大特性¶
- 封装
- 隐藏对象的属性和实现细节,仅对外公开访问方法
- 增强安全性
- 继承
- 子类继承父类的特征和行为
- 实现代码复用
- 多态
- 同一个行为具有多个不同表现形态的能力(“一个接口,多个方法”)
- 提高程序扩展性、可维护性
面向对象思想¶
结构化方法¶
- 复杂世界\(\to\)复杂处理过程(事情的发生发展)
- 设计一系列功能以解决某一问题
- 寻找适当的方法储存数据
面向对象方法¶
- 任何系统都是由能够完成一组相关任务的对象构成
- 如果任何对象依赖于一个不属于他负责的任务,那么就需要访问负责此任务的另一个对象(调用其他对象的方法)
对象内部的一些信息是隐藏起来,不能使其他对象直接访问自己的数据(封装效果)
- 所有的交流都是通过方法的调用实现