




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 C+语言简介 清华大学 郑 莉 C+语言程序设计简介清华大学 郑莉 2 本讲内容 l类与对象 l继承与派生 l多态性 lC+标准模板库 C+语言程序设计简介清华大学 郑莉 3 回顾:面向过程的设计方法 l重点: 重点是实现的细节和过程,将数据与函数分开。 l形式: 主模块+若干个子模块(main()+子函数)。 l特点: 自顶向下,逐步求精功能分解。 l缺点: 效率低,程序的可重用性差。 面向对象的思想 C+语言程序设计简介清华大学 郑莉 4 面向对象的方法 l目的: 实现软件设计的产业化。 l观点: 自然界是由实体(对象)所组成。 l程序设计方法: 使用面向对象的观点来描述、模仿并处 理现实问题。 l要求: 高度概括、分类、和抽象。 面向对象的思想 C+语言程序设计简介清华大学 郑莉 5 抽象 抽象是对具体对象(问题)进行概括 ,抽出这一类对象的公共性质并加以描 述的过程。 先注意问题的本质及描述,其次是实现过 程或细节。 数据抽象:描述某类对象的属性或状态( 对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特 征或具有的功能。 抽象的实现:通过类的声明。 OOP的基本特点 C+语言程序设计简介清华大学 郑莉 6 抽象实例钟表 l数据抽象: int Hour, int Minute, int Second l代码抽象: SetTime(), ShowTime() OOP的基本特点 C+语言程序设计简介清华大学 郑莉 7 抽象实例钟表类 class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; ; OOP的基本特点 C+语言程序设计简介清华大学 郑莉 8 抽象实例人 l数据抽象: char *name,char *gender,int age,int id l代码抽象: 生物属性角度: GetCloth(), Eat(), Step(), 社会属性角度: Work(), Promote() , OOP的基本特点 C+语言程序设计简介清华大学 郑莉 9 封装 将抽象出的数据成员、代码成员相结 合,将它们视为一个整体。 目的是曾强安全性和简化编程,使用者 不必了解具体的实现细节,而只需要通 过外部接口,以特定的访问权限,来使 用类的成员。 实现封装:类声明中的 OOP的基本特点 C+语言程序设计简介清华大学 郑莉 10 封装 l实例: class Clock public: void SetTime(int NewH,int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; ; 边界 特定的访问权限 OOP的基本特点 外部接口 C+语言程序设计简介清华大学 郑莉 11 继承与派生 是C+中支持层次分类的一种机制, 允许程序员在保持原有类特性的基础上 ,进行更具体的说明。 实现:声明派生类 OOP的基本特点 C+语言程序设计简介清华大学 郑莉 12 多态性 l多态:同一名称,不同的功能实现方式。 l目的:达到行为标识统一,减少程序中标 识符的个数。 l实现:重载函数和虚函数 OOP的基本特点 C+语言程序设计简介清华大学 郑莉 13 c+中的类 l类是具有相同属性和行为的一组对象 的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属 性和行为两个主要部分。 l利用类可以实现数据的封装、隐藏、 继承与派生。 l利用类易于编写大型复杂程序,其模 块化程度比C中采用函数更高。 类 和 对 象 C+语言程序设计简介清华大学 郑莉 14 类的声明形式 类是一种用户自定义类型,其声明形式: class 类名称 public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 类 和 对 象 C+语言程序设计简介清华大学 郑莉 15 公有类型成员 是类与外部的接口,任何外部函数都 可以访问公有类型数据和函数。 以关键字public修饰。 类 和 对 象 C+语言程序设计简介清华大学 郑莉 16 私有类型成员 只允许本类中的函数访问,而类外部 的任何函数都不能访问。 以关键字private修饰。 如果紧跟在类名称的后面声明私有成员, 则关键字private可以省略。 类 和 对 象 C+语言程序设计简介清华大学 郑莉 17 保护类型 与private类似,其差别表现在继承与 派生时对派生类的影响不同。 以关键字protected修饰。 类 和 对 象 C+语言程序设计简介清华大学 郑莉 18 类的成员 class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour, Minute, Second; ; 类 和 对 象 数据成员 函数成员 void Clock : SetTime(int NewH, int NewM, int NewS) Hour=NewH; Minute=NewM; Second=NewS; void Clock : ShowTime() cout using namespace std; class Clock /类的声明略 /类的实现略 int main() Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime(); 类 和 对 象 C+语言程序设计简介清华大学 郑莉 25 组合的概念 l可以在已有的抽象的基础上实现更复 杂的抽象。 l类中的数据成员是另一个类的对象。 类 的 组 合 C+语言程序设计简介清华大学 郑莉 26 举例 class Point private: float x,y; /点的坐标 public: Point(float h,float v); /构造函数 float GetX(void); /取X坐标 float GetY(void); /取Y坐标 void Draw(void); /在(x,y)处画点 ; /.函数的实现略 类 的 组 合 class Line private: Point p1,p2; /线段的两个端点 public: Line(Point a,Point b); /构造函数 Void Draw(void); /画出线段 ; /.函数的实现略 49 28 继承与派生简介 C+语言程序设计简介清华大学 郑莉 29 类的继承与派生 l保持已有类的特性而构造新类的过程 称为继承。 l在已有类的基础上新增自己的特性而 产生新类的过程称为派生。 l被继承的已有类称为基类(或父类) 。 l派生出的新类称为派生类。 C+语言程序设计简介清华大学 郑莉 30 继承与派生问题举例 类的继承与派生 C+语言程序设计简介清华大学 郑莉 31 继承与派生问题举例 类的继承与派生 C+语言程序设计简介清华大学 郑莉 32 继承与派生问题举例 类的继承与派生 C+语言程序设计简介清华大学 郑莉 33 继承与派生问题举例 类的继承与派生 C+语言程序设计简介清华大学 郑莉 34 继承与派生的目的 l继承的目的:实现代码重用。 l派生的目的:当新的问题出现,原有 程序无法解决(或不能完全解决)时 ,需要对原有程序进行改造。 类的继承与派生 C+语言程序设计简介清华大学 郑莉 35 派生类的声明 class 派生类名:继承方式 基类名 成员声明; 类的继承与派生 C+语言程序设计简介清华大学 郑莉 36 继承举例 class Point/基类Point类的声明 public:/公有函数成员 void InitP(float xx=0, float yy=0) X=xx;Y=yy; void Move(float xOff, float yOff) X+=xOff;Y+=yOff; float GetX() return X; float GetY() return Y; private:/私有数据成员 float X,Y; ; 类成员的访问控制 class Rectangle: public Point /派生类声明 public:/新增公有函数成员 void InitR(float x, float y, float w, float h) InitP(x,y);W=w;H=h;/调用基类公有成员函数 float GetH() return H; float GetW() return W; private:/新增私有数据成员 float W,H; ; 37 #include #include using namecpace std; int main() Rectangle rect; rect.InitR(2,3,20,10); /通过派生类对象访问基类公有成员 rect.Move(3,2); cout using namespace std; class complex/复数类声明 public:/外部接口 complex(double r=0.0,double i=0.0)real=r;imag=i; /构造函数 complex operator + (complex c2); /+重载为成员函数 complex operator - (complex c2); /-重载为成员函数 void display(); /输出复数 private:/私有数据成员 double real;/复数实部 double imag;/复数虚部 ; 45 complex complex: operator +(complex c2) /重载函数实现 complex c; c.real=c2.real+real; c.imag=c2.imag+imag; return complex(c.real,c.imag); 46 complex complex: operator -(complex c2) /重载函数实现 complex c; c.real=real-c2.real; c.imag=imag-c2.imag; return complex(c.real,c.imag); 47 void complex:display() cout using namespace std; class B0/基类B0声明 public:/外部接口 virtual void display() /虚成员函数 coutdisplay(); int main()/主函数 B0 b0, *p;/声明基类对象和指针 B1 b1;/声明派生类对象 D1 d1;/声明派生类对象 p= fun(p);/调用基类B0函数成员 p= fun(p);/调用派生类B1函数成员 p= fun(p);/调用派生类D1函数成员 运行结果: B0:display() B1:display() D1:display() 52 C+语言程序设计简介清华大学 郑莉 53 函数模板 l函数模板可以用来创建一个通用功能 的函数,以支持多种不同形参,进一 步简化重载函数的函数体设计。 l声明方法: template 函数声明 函 数 模 板 C+语言程序设计简介清华大学 郑莉 54 求绝对值函数的模板 #include using namespace std; template T abs(T x) return x class 类名 类成员声明 l如果需要在类模板以外定义其成员 函数,则要采用以下的形式: template 类型名 类名:函数名(参数表) 类 模 板 58 C+标准模板库简介 C+语言程序设计简介清华大学 郑莉 59 泛型程序设计 l将程序写得尽可能通用 l将算法从特定的数据结构中抽象出来,成 为通用的 lC+的模板为泛型程序设计奠定了关键的基 础 lSTL是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object) C+语言程序设计简介清华大学 郑莉 60 容器 l容器类是容纳、包含一组元素或元素 集合的对象。 l异类容器类与同类容器类 l顺序容器与关联容器 l七种基本容器: 向量(vector)、双端队列(deque) 、列表(list)、集合(set)、多重集 合(multiset)、映射(map)和多重 映射(multimap) 概念和术语 C+语言程序设计简介清华大学 郑莉 61 容器的接口 l通用容器运算符 =,!=,=, #include #include /包含向量容器头文件 using namespace std ; int main() vector A(10); int n; int primecount =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园防疫安全教育课
- 亲子团建咨询活动方案
- 药品安全科普培训课件
- 咨询机构招标方案
- 教育类营销策划方案
- 民用建筑平面方案设计
- 自流深井施工方案
- 网络数据安全项目发展计划书
- 应急预案报审表
- 青海防撞栏杆施工方案
- 2024石膏复合材料建筑楼板隔声保温工程技术规程
- 药学专业毕业论文4000字范文
- 卫生部妇产科诊疗规范及指南
- 译林版五年级上册英语Unit 4《Hobbies》单元话题阅读理解专项练习(含答案)
- 应变片测试技术
- 《古陶瓷修复》课件-3.1.3 瓷器文物病害种类和性质
- 篮球比赛记录表
- 变电站主辅设备监视及一键顺控课件
- 小学生爱国主义情怀情景剧《满江红》台词剧本完整版
- 马克思的博士论文
- 亲子餐厅设计报告
评论
0/150
提交评论