简介:
软件设计师考试中,面向对象模块为核心考点,涵盖类与对象、继承、封装、多态等基础概念,重点考查UML建模(类图/时序图/用例图)、设计模式(如工厂、单例模式)及SOLID设计原则。要求考生掌握对象间协作机制,具备需求分析、系统建模能力,并能通过高内聚低耦合设计解决实际问题,强调面向对象思想在软件工程中的实践应用。
一、面向对象和面向过程的区别
- 例如:把大象装入冰箱,需要多少步:
- 面向过程
2. 面向对象
二、面向对象的基本概念
- 面向对象= 对象+分类+继承+通过消息的通信
(一)、类
- 类是对想的抽象,对象是类的实例
- 类包含的方法和数据描述一组对象的共同行为和属性
- 方法:对应 行为
- 数据:对应 属性
public class Person{
String name;
String sex;
void play(){
// 具体行为
}
}
- 分类
- 实体类:关键字(人、物)
- 例如:书本、课桌
- 接口类(边界类):关键字(媒介)
- 为用户提供一种系统合作交互的方式
- 例如:人的接口可以是web窗体、菜单、条形码
- 系统接口涉及把数据发送到其他系统
- 为用户提供一种系统合作交互的方式
- 控制类:关键字(协调)
- 解释:控制类用来控制活动流,充当协调者
- 实体类:关键字(人、物)
- 一般和特殊关系
- 一般表示父类或基类
- 特殊表示子类或派生类
- 例题:
(二)、对象
扩展:
行为的别名:方法、函数
属性的别名:状态
- 对象的组成:属性+对象名+方法
// 为一个person类创建一个对象
public class test{
class Person {
}
public static void main(String args[]){
Person p= new Person();
}
}
(三)、消息
- 理解:给这个对象发消息,包含外界的消息
- 例如:一个类中有eat方法,
public class test{
public static void main(String args[]){
Person p= new Person();
p.eat("汉堡"); // 发送消息
}
}
- 例题:
二、方法重载
前提:方法名相同
- 方法重载分为三中情况
- 参数个数不同
- 参数类型不同
- 参数类型顺序不同
三、封装
- 记:对象是封装一组属性和行为的整体
- 属性私有化,对外提供set和get方法
- 方法私有化,使用private关键字修饰
- 例如
class Person{
String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
private void fun(){
// 私有方法
}
}
四、继承
关键字:extends
注意:私有属性不可背继承
- 继承是父类和子类之间共享数据和方法的机制
- 单重继承:一个子类继承一个父类
- 多重继承:一个子类继承多个父类
- 例题:
五、多态
编译:父类
运行:子类
- 不同的对象收到同一消息可以产生不同的结果
例如
public class test(){
class Person{}
class Student extends Person{}
public static void main(String[] args){
Person stu = Student();
}
}
- 多态分类:
1. 通用:
1. **参数多态:**
1. 特征:是应用比较广泛的多态,被称为**最纯的多态**
2. **包含多态:**
1. 特征:一个类型是另一个类型的子类型
2. 特定:
1. **过载多态:**
1. 重载方法
2. 强制多态:
1. 特征:强制类型转换
- 例题:
- 动态绑定和静态绑定
多态在编译时 是静态绑定
多态在运行时 是动态绑定
六、面向对象设计原则
原则:
- 单一原则:对一个类来说,只有一个引起它变化的原因
- 开放-封闭原则:对扩展开放,对修改封闭
- 里式替换原则:基类出现的地方,子类一定也可以出现
- 依赖倒置原则:依赖抽象,不依赖细节/实现
- 接口分类原则:依赖抽象,不依赖具体
- 共同重用原则:重用包中的一个类,就要重用包左手拿个的所有类
- 共同封闭原则:一个变化对一个包产生影响,则对包中的所有类都产生影响
- 无环依赖原则:包的结构是一个五环图形
例题:
七、面向对象分析(OOA)
分析的目的:确定系统的功能、性能要求
包含5个活动
- 认定对象:定义问题,名词转为一个对象。
- 例如:银行系统中的实质性对象:客户账务、清算。
- 组织对象:
- 描述对象间的相互作用:
- 确定对象的操作:
- 定义对象的内部信息:
八、面向对象设计(OOD)
- 将OOA锁创建的分析模型转为设计模型
- 目的:定义系统构造蓝图
- 5个活动
- 识别类及对象
- 定义属性
- 定义服务
- 识别关系
- 识别包
例题:
九、面向对象设程序设计(OOP)
十、面向对象测试
- 面向对象的综合测试是有底向上的测试
- 分为四个层次
- 算法层
- 类层
- 模板层
- 系统层
十一、扩展
- 一个类要实现一个接口,需要把该接口的所有方法都重写
- UML图基本图形
- 实现
2. 继承
- 斜体字为:抽象类
- 正体字为:类:可被实例化