计算机程序设计基础----c++简介

上传人:wt****50 文档编号:51112316 上传时间:2018-08-12 格式:PPT 页数:71 大小:433.50KB
返回 下载 相关 举报
计算机程序设计基础----c++简介_第1页
第1页 / 共71页
计算机程序设计基础----c++简介_第2页
第2页 / 共71页
计算机程序设计基础----c++简介_第3页
第3页 / 共71页
计算机程序设计基础----c++简介_第4页
第4页 / 共71页
计算机程序设计基础----c++简介_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《计算机程序设计基础----c++简介》由会员分享,可在线阅读,更多相关《计算机程序设计基础----c++简介(71页珍藏版)》请在金锄头文库上搜索。

1、1C+语言简介清华大学 郑 莉C+语言程序设计简介清华大学 郑莉2本讲内容l类与对象l继承与派生l多态性lC+标准模板库C+语言程序设计简介清华大学 郑莉3回顾:面向过程的设计方法l重点: 重点是实现的细节和过程,将数据与函数分开。l形式: 主模块+若干个子模块(main()+子函数)。l特点: 自顶向下,逐步求精功能分解。l缺点: 效率低,程序的可重用性差。面向对象的思想C+语言程序设计简介清华大学 郑莉4面向对象的方法l目的: 实现软件设计的产业化。l观点: 自然界是由实体(对象)所组成。l程序设计方法: 使用面向对象的观点来描述、模仿并处 理现实问题。l要求: 高度概括、分类、和抽象。面

2、向对象的思想C+语言程序设计简介清华大学 郑莉5抽象抽象是对具体对象(问题)进行概括 ,抽出这一类对象的公共性质并加以描 述的过程。 先注意问题的本质及描述,其次是实现过 程或细节。 数据抽象:描述某类对象的属性或状态( 对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特 征或具有的功能。 抽象的实现:通过类的声明。OOP的基本特点C+语言程序设计简介清华大学 郑莉6抽象实例钟表l数据抽象: int Hour, int Minute, int Secondl代码抽象: SetTime(), ShowTime()OOP的基本特点C+语言程序设计简介清华大学 郑莉7抽象实例钟表类cla

3、ss 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 idl代码抽象:生物属性角度: GetCloth(), Eat(), Step(),社会属性角度: Work(), Promote() ,OOP的基本特点C+语言程序设计简介清华大学 郑莉9封装将抽象出的数据成员、代码成员相结 合,将它

4、们视为一个整体。 目的是曾强安全性和简化编程,使用者 不必了解具体的实现细节,而只需要通 过外部接口,以特定的访问权限,来使 用类的成员。 实现封装:类声明中的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+中支持层次分类的一种机制,允许程序员在保持原有类特性

5、的基础上,进行更具体的说明。实现:声明派生类OOP的基本特点C+语言程序设计简介清华大学 郑莉12多态性l多态:同一名称,不同的功能实现方式。l目的:达到行为标识统一,减少程序中标识符的个数。l实现:重载函数和虚函数OOP的基本特点C+语言程序设计简介清华大学 郑莉13c+中的类l类是具有相同属性和行为的一组对象 的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属 性和行为两个主要部分。l利用类可以实现数据的封装、隐藏、 继承与派生。l利用类易于编写大型复杂程序,其模 块化程度比C中采用函数更高。类 和 对 象C+语言程序设计简介清华大学 郑莉14类的声明形式类是一种用户自定义

6、类型,其声明形式: class 类名称 public:公有成员(外部接口)private:私有成员protected:保护型成员 类 和 对 象C+语言程序设计简介清华大学 郑莉15公有类型成员是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。以关键字public修饰。类 和 对 象C+语言程序设计简介清华大学 郑莉16私有类型成员只允许本类中的函数访问,而类外部的任何函数都不能访问。以关键字private修饰。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。类 和 对 象C+语言程序设计简介清华大学 郑莉17保护类型与private类似,其差别表现在继承与派生时

7、对派生类的影响不同。以关键字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 u

8、sing 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(voi

9、d); /取X坐标float GetY(void); /取Y坐标void Draw(void); /在(x,y)处画点 ; /.函数的实现略类 的 组 合class Lineprivate:Point p1,p2; /线段的两个端点public:Line(Point a,Point b); /构造函数Void Draw(void); /画出线段;/.函数的实现略4928继承与派生简介C+语言程序设计简介清华大学 郑莉29类的继承与派生l保持已有类的特性而构造新类的过程 称为继承。l在已有类的基础上新增自己的特性而 产生新类的过程称为派生。l被继承的已有类称为基类(或父类) 。l派生出的新类称为

10、派生类。C+语言程序设计简介清华大学 郑莉30继承与派生问题举例类的继承与派生C+语言程序设计简介清华大学 郑莉31继承与派生问题举例类的继承与派生C+语言程序设计简介清华大学 郑莉32继承与派生问题举例类的继承与派生C+语言程序设计简介清华大学 郑莉33继承与派生问题举例类的继承与派生C+语言程序设计简介清华大学 郑莉34继承与派生的目的l继承的目的:实现代码重用。l派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。类的继承与派生C+语言程序设计简介清华大学 郑莉35派生类的声明class 派生类名:继承方式 基类名成员声明;类的继承与派生C+语言程序

11、设计简介清华大学 郑莉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(floa

12、t 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/复数类声明

13、 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;/复数虚部 ;45complex complex: operator +(complex c2) /重载函数实现 complex c; c.real=c2.

14、real+real; c.imag=c2.imag+imag; return complex(c.real,c.imag); 46complex complex: operator -(complex c2) /重载函数实现 complex c; c.real=real-c2.real; c.imag=imag-c2.imag; return complex(c.real,c.imag); 47void complex:display() cout using namespace std; class B0/基类B0声明 public:/外部接口 virtual void display()

15、/虚成员函数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()52C+语言程序设计简介清华大学 郑莉53函数模板l函数模板可以用来创建一个通用功能 的函数,以支持多种不同形参,进一 步简化重载函数的函数体设计。l声明方法:template 函数声明函 数 模 板C+语言程序设计简介清华大学 郑莉54求绝对值函数的模板#include using namespace std; template T abs(T x) return x class 类名 类成员声明l如果需要在类模板以外定义其成员 函数,则要采用以下的形式: template 类型名 类名:函数名(参数表)类 模 板58C+标准模板库简介C+语言程序设计简介清华大学 郑莉59泛型程序设计l将程序写得尽可能通用 l将算法从特定的数据结构中抽象出来,成 为通用的lC

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号