设计原则
- 单一职责原则:一个类,只有一个引起它变化的原因
- 开闭原则:扩展开放,修改封闭
- 里氏代替原则:子类必须替换掉它们的父类
- 依赖倒置原则:面向接口编程,而不是面向实现编程
- 接口隔离原则
- 合成复用原则:Has-A 和 Is-A
- 迪米特法则:不要和陌生人说话,最少知识原则
软件系统设计核心
一个项目有多少类:发现类
每个类有什么属性和方法:设计类
每个类之间的关系:设计类
面向对象设计目标
项目可扩展性,可维护性,更方便
软件工作流程
输入(用户界面) -> 运算(业务逻辑) -> 存储(数据库、文件) -> 输出(界面,其他文件)
软件文档
需求说明 -> 概要设计 -> 详细设计
编码过程
变量 -> 语句 -> 属性+方法 -> 类 -> 模块 -> 功能 -> 子系统 -> 软件整体
类、对象
类 -> 对象数据的处理
类 -> 对象的抽象
对象 -> 类的实例化
对象数据
静态特征:属性
动态特征:行为,方法
方法为抽象方法。
1 | public class People{ |
为什么定义了字段,还要定义属性?
属性可以添加业务逻辑,提高数据可靠性
属性可以设置只读、只写,提高数据安全性
ref
可以将值类型按照引用方式传递
out
让方法有多个返回值
构造方法
完成对象的初始化
对象初始化器
1 | People people = new People(){ |
装箱,拆箱
Object -> 值类型 -> 拆箱
值类型 -> Object -> 装箱对象的动态排序
1 | public class Student:IComparable<Student>{ |
继承多态
抽象类,抽象方法/虚方法
里氏替换:父类类型作为方法的参数类型;父类类型作为方法的返回值;
接口多态
接口类,接口实现类
实现方法:接口作为方法的参数类型;接口作为方法的返回值;
序列化、反序列化
1 | public class Serializer |