程序设计教程:用C++语言编程 第4版 课件 3-3 类作为模块_第1页
程序设计教程:用C++语言编程 第4版 课件 3-3 类作为模块_第2页
程序设计教程:用C++语言编程 第4版 课件 3-3 类作为模块_第3页
程序设计教程:用C++语言编程 第4版 课件 3-3 类作为模块_第4页
程序设计教程:用C++语言编程 第4版 课件 3-3 类作为模块_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

类作为模块什么是模块?模块从物理上对程序中定义的实体进行分组,是可以单独编写和编译的程序单位。模块化是组织和管理大型程序的一个重要手段。一个模块包含接口和实现两部分:接口:是指在模块中定义的、可以被其它模块使用的一些程序实体的声明描述。实现:是指在模块中定义的所有程序实体的具体实现描述。对于C语言程序中的模块:接口:包含被外界使用的类型定义、常量定义以及全局变量和函数的声明。(.h文件)实现:包含本模块中所有的类型、常量、全局变量和函数的定义。(.c文件)如何划分模块划分模块的基本准则:内聚性最大:模块内的各实体之间联系紧密。耦合度最小:模块间的各实体之间关联较少。便于程序的设计、理解和维护,能够保证程序的正确性。过程式程序的模块划分通常是基于子程序,把共同完成某独立功能的或使用相同数据的子程序及相关的实体放在一起构成模块。缺点是模块边界模糊:一个子程序可能参与几个独立功能。一个子程序可能使用多个数据集。类作为模块在面向对象程序中,类是一个自然的模块划分单位,模块边界比较清晰。一个C++程序的模块由两部分构成:接口:类的定义,存放在一个.h文件中实现:类的实现(包括类的定义和类外实现的成员函数),存放在一个.cpp文件中。类模块的例子//A.h(模块A接口)classA{inti,j;public:voidf();voidg();

voidh(){......}};//A.cpp(模块A实现)#include"A.h"voidA::f(){......}voidA::g(){......}//main.cpp(主模块)#include"A.h"intmain(){Aa;a.f();a.g();a.h();//按内联实现......}良好的面向对象程序设计风格结构化程序设计为过程式程序设计提供了一种良好的风格指南,它要求每个程序单位都应该具有“单入口/单出口”性质,具体体现为使用:不带goto的顺序、分支和循环流程控制。子程序良好的面向对象程序设计风格是什么呢?减少类之间的关联度(耦合度)!要降低类间的关联度,可以对类中成员函数能访问的类/对象的集合作一定的限制,并尽量使该集合为最小。上述要求被称为Demeter法则。Demeter法则(LawofDemeter)一个类的成员函数除了能访问自身类结构的直接子结构(本类的数据成员)外,不能以任何方式依赖于任何其它类的结构。只应向某个有限集合中的对象发送消息。核心思想:“仅与你的直接朋友交谈!”classStudent{intid;Stringname;

......voidprint(){......}};classClass{intid;Stringname;Studentstudent_list[100];

......

voidprint(){...student_list[i].print();...}//OK,Student是直接朋友Student&get_student(inti){returnstudent_list[i];}};classSchool{intid;Stringname;Classclass_list[300];

......voidf(){...id,name...//OK...class_list[i].id,class_list[i].name

...//NotOK,非直接子结构class_list[i].print();//OK,Class是直接朋友class_list[i].get_student(j).print();//NotOK,Student不是直接朋友}};Demeter法则有两种表达形式:类表达形式:一个类中的成员函数能访问(向其发消息)的对象所属类的集合。适合于静态类型的面向对象语言(如:C++),它可以在编译时刻检查程序是否满足法则。对象表达形式:一个类中的成员函数能访问(向其发消息)的对象的集合。适合于动态类型的面向对象语言(如:Smalltalk),它需要在运行时刻检查程序是否满足法则。Demeter法则的类表达形式对于类C中的任何成员函数M,M中只能向以下类的对象发送消息:类C本身。成员函数M的参数类。M或M所调用的成员函数中创建的对象所属的类。全局对象所属的类。类C的成员对象所属的类。Demeter法则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论