7面向对象技术
面向对象(3-4分):37-39题或37-40题
-
面向对象
-
面向过程和面向对象
-
面向对象概念
-
对象
- 对象名
- 属性
- 操作
-
分类
-
实体类
-
接口类
- 人的接口类
- 系统的接口类
-
控制类
- 控制活动者,充当数据流
-
-
继承
-
通过消息的通信
- 对象间的通信
-
-
重载
-
方法名相同
- 参数个数不同
- 参数顺序不同
- 参数类型不同
-
-
三大特点
-
封装
-
继承
-
多态
-
编译看左边,运行看右边
-
4类多态
-
通用的
- 参数的
- 包含的
-
特定的
- 过载的
- 强制的
-
-
方法重载、继承、方法重写、自动转型
-
-
-
绑定
-
动态绑定
- 运行时进行
-
静态绑定
- 编译时进行
-
-
设计原则
-
单一责任原则SRP
- (Single Responsibility Principle,SRP)。就一个类而言,应该仅有一个引起它变化的原因
-
开放-封闭原则OCP
- (Open Close Principle,OCP)。软件实体(类、模块、函数等)应该是可以扩展的,即开放的:但是不可修改的,即封闲的
-
里氏替换原则LSP
- (Liskov Substitution Principle,LSP)。子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个(is-a)关系
-
依赖倒置原则DIP
- (Dependence Inversion Principle,DIP)。抽象不应该依懒于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
-
接口分离原则ISP
- (Interface Segregation Principle,ISP)。不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。即:依颗于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化。
-
最少知识原则LKP(迪米特法则LOD)
属于设计模式的原则,不属于面向对象的原则
- (Least Knowledge Principle)(Law of Demeter )一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。
-
-
面向对象分析OOA
-
认定对象
- 实质性对象
-
组织对象
-
抽象成类
- 通过类继承构造类层次
-
-
描述对象间的相互作用
- 各对象在应用系统中的关系
-
确定对象的操作
-
定义对象的内部消息
-
-
面向对象设计OOD
-
OOA分析模型转OOD设计模型
- 识别类及对象
- 定义属性
- 定义服务
- 识别关系
- 识别包
-
-
面向对象程序设计OOP
- 类
- 继承和类层次结构
- 对象、消息传递和方法
- 对象自身引用
- 重置
- 类属类
- 无实例的类
-
传统测试
- 逻辑值覆盖
- 等价类划分
- 边界值分析
-
面向对象测试
-
算法层
- 测试类中定义的每个方法,相当于传统测试的单元测试
-
类层
- 测试封装在同一个类中的所有方法与属性之间的相互作用。在而向对象软件中类是基本预项,因此可以认为这是面向对象测试中所特有的模块测试。
-
模板层
- 测试一组协同工作的类之间的相互作用,大体上相当于传统软件测试中的集成测试,但是也有面向对象软件的特点(例如,对象之间通过发送消息相互作用)。
-
系统层
- 把各个子系统组装成完整的面向对象软件系统,在组装过程中同时进行测试。
-
-
静态成员
- 而向对象开发方法中,静态成员的含义是所修饰的成员是属于类的,而不是属于某对象的。
- 静态数据成员对该类只有一份,该类的所有对象共享静态数据成员,可被该类的所有方法访问。
- 静态数据成员的值可以修改,但是不论是通过对象还是类对静态数据成员值的修改,都会反应到整个类。
- 类的静态方法只能访句该类的静态数据成员。
-