面向对象设计
面向对象设计
设计中的SoC ·设计的本质是用黑箱及其接口描述系统 一每个部件通过其接口提供一些服务,其他部件 是这些服务的用户(客户) 客户只需了解服务的接口,而实现细节对客户 无关紧要 一服务组件只管提供服务的实现,不管客户如何 应用 Lu Chaojun,SJTU 2
Lu Chaojun, SJTU 2 设计中的SoC • 设计的本质是用黑箱及其接口描述系统. – 每个部件通过其接口提供一些服务,其他部件 是这些服务的用户(客户). – 客户只需了解服务的接口,而实现细节对客户 无关紧要. – 服务组件只管提供服务的实现,不管客户如何 应用
自项向下设计与OOD ·自顶向下设计: 一函数是黑箱 -客户只要知道函数接口即能使用之 一函数实现细节被封装在函数定义中. ● OOD: -黑箱是对象 -对象的能力由类定义. -类对外提供的接口即方法, 一方法的实现对外部客户是不重要的 Lu Chaojun,SJTU 3
Lu Chaojun, SJTU 3 自顶向下设计与OOD • 自顶向下设计: – 函数是黑箱. – 客户只要知道函数接口即能使用之. – 函数实现细节被封装在函数定义中. • OOD: – 黑箱是对象. – 对象的能力由类定义. – 类对外提供的接口即方法. – 方法的实现对外部客户是不重要的
OOD设计指南 OOD:对给定问题找出并定义一组有用的类的 过程. 一确定有用的对象 人考虑问题描述中的名词(事物) 人这些事物有什么行为 一确定实例变量 一确定接口 人考虑问题描述中的动词(对象行为) 一复杂方法的自顶向下逐步求精 -反复设计 一尝试其他途径 一力求简单 Lu Chaojun,SJTU 4
Lu Chaojun, SJTU 4 OOD设计指南 • OOD:对给定问题找出并定义一组有用的类的 过程. – 确定有用的对象 ©考虑问题描述中的名词(事物) ©这些事物有什么行为 – 确定实例变量 – 确定接口 ©考虑问题描述中的动词(对象行为) – 复杂方法的自顶向下逐步求精 – 反复设计 – 尝试其他途径 – 力求简单
编程实例:壁球 ·对象: 一球员:有技术水平数据 -一局比赛:输入两个球员,提供play0 -得分统计:统计比赛结果,提供update(,)printReport() 0 主程序核心代码: stats Simstats() for i in range(n): theGame RBallGame (probA,probB) theGame.play ( stats.update(theGame) o5 完整程序:objrball.py Lu Chaojun,SJTU 5
编程实例:壁球 • 对象: – 球员:有技术水平数据 – 一局比赛:输入两个球员,提供play() – 得分统计:统计比赛结果,提供update(), printReport() • 主程序核心代码: stats = SimStats() for i in range(n): theGame = RBallGame(probA,probB) theGame.play() stats.update(theGame) • 完整程序:objrball.py Lu Chaojun, SJTU 5