第一章:面向对象概述
程序 = 算法 +数据结构
面向对象的核心是可扩展性
第二章:面向对象理论
类:站在你的观察角度,具有相似点的事物就是一类(物以类聚)
类由两部分组成:属性和方法,名词是属性,动词是方法
类:
设计属性的基本原则:属性最小化原则,属性不可再分
设计方法的一个基本原则:方法单一化原则,一个方法只做一件事
对象:真实存在的,类是对现实生活的抽象归纳
现实对象->现实类->对现实生活的模拟->软件类->软件对象-活动交互-程序
接口:接口是一组相关的交互功能定义的集合
接口的功能点只是定义,并不涉及具体实现
接口的功能用于交互,所有的功能都是public
为什么要用接口:因为你可能并不是知道面对的是一个人还是一头猪,你只知道这是个动物,但是又
希望这个动物按照你的要求进行活动,这就是借口的用处所在,你不知道一个对象所属的具体类,只知道这些对象都具备某种功能
抽象类是一种特殊的类:抽象类基于类而抽象出来
抽象类强调一组事物的相似性,包括属性和方法的相似性;而接口只强调方法的相似性,并且仅仅体现在方法声明上的相似性,而没有方法定义上的相似性
抽象类看起来是一个介于类和接口之间的概念,同时具备类和接口的部分特性
三大核心特征:
封装:是类的一个功能,封装类的属性,封装类的方法
public 对外公开
protected:对外不公开,但对朋友或者子类公开
private:对谁都不公开
继承
多态:使用指向父类的指针或者引用,能够调用子类的对象
面向对象设计和分析全流程、
第四章 需求模型
面向对象的技术流程:需求模型-领域模型-设计模型-实现模型
需求:对客户来说有价值的事情
功能:系统为了实现客户价值而提供的能力
用例--提取动词--列出功能
需求:客户肚饿了,需求为要一只烤好的羊,客户的问题是什么
需求分析的方法 518 我要发 5w1h8c
5w when:在什么时候使用
where :在什么地方用
who:谁来使用
what:用户怎么做
why :客户产生的需求,对用户的价值
1h how:需求本身的流程 :用例方法
8c 约束和限制
需求分析:NEA方法
1.正常处理(Normal)
2.异常处理(Exception)
3.替代处理(Alternative),分析每一步是否有其他替代方法
8c
功能:用例完成之后,列列表提取功能
SSD:系统顺序图,用来描述用例的;用例图是用来描述系统的
第五章 领域模型:
从用例中找名词,找到名词之后加属性,连关系
领域模型三字经:找名词,加属性,连关系
第六章 设计模型
名称映射
将每一个领域类都用一个软件类与之对应,名称都保持一样
属性映射
提炼方法
找动词,提炼动词
设计原则和设计模式
SOILD设计原则:
S 单一职责原则:对象应该只具备单一职责
O 开闭原则:软件体应该是对于扩展开发,但是对于修改封闭
L 里式替换原则:程序中的对象应该是可以在不改变程序正确性的前提下被它的子类替换
I 接口隔离原则:多个特点客户端接口要好于一个具有广泛用户的接口
D 依赖反转原则:依赖于抽象而不是实例
设计模式
设计原则是类的静态设计原则,而设计模式是类的动态设计原则
拆分辅助类
MVC模式
动态模型
模型分类
状态模型
活动模型
序列模型
协作模型
第七章 实现模型
7.1 类的访问控制
public
protect:同一个包中的类访问
默认:只有类所属包的其他类可以使用 例子,家庭QQ群只能家庭内使用,学校老师就不能用
extend 继承
抽象类:abstract 限制方法为抽象方法,子类必须重写抽象方法
接口: interface 支持多继承 ,java类不支持多继承
接口中的变量强制为 public static final
接口的方法强制为 public abstract
通过关键字implements 来实现
第8章 设计原则
内聚:内聚指一个模块内部元素彼此结合的紧密程度
判断面向对象模块凝聚力的时候,我们关注元素是否专注于模块的目标和元素间的结合关系
内聚的分类:
偶然内聚:内聚性最差的一种
逻辑内聚:
时间内聚