C++程序设计.ppt
《C++程序设计.ppt》由会员分享,可在线阅读,更多相关《C++程序设计.ppt(106页珍藏版)》请在课桌文档上搜索。
1、Visual C+程序设计,2,内容安排,课程要求,3,第1章 c+基础,面向对象的程序设计,面向过程的程序设计,OOP,4,面向过程的程序设计,在以过程为主的程序设计中,问题被看作一系列需要完成的任务,而函数是用于完成这些任务的主要手段。,5,面向过程的程序设计,轮胎,车门,生产汽车,6,面向过程的程序设计,7,对象是进行活动的基本单位。,谁干什么?,面向对象的程序设计,谁什么时间干什么?,8,对象是进行活动的基本单位。,谁干什么?,面向对象的程序设计,9,面向对象的程序设计举例,居委会大扫除,一家人生活在一起,与外界相对独立。,10,面向对象的程序设计举例,生产汽车,材料、机器和工人,做什
2、么,车 间,黑箱,11,对象是进行活动的基本单位。,数据,操作代码,对 象,对象由数据和操作码组成,面向对象的程序设计,12,面向对象的程序设计,世界是独立对象的集合,在程序中,对象是程序的基本元素。,13,小结:什么是对象?,每一个实体都是对象,14,二、类,有一些对象是具有相同的结构和特性的。,每个对象都属于一个类型。,类是对象的抽象。而对象是类的具体实例。,如同结构体类型和结构体变量,C+暂时理解成带“类”的C。,15,类是什么?,类是用来描述具有相同属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。,16,()抽象与封装抽象是对具体对象(问题)进行概括,抽出这一类对象
3、的公共性质并加以描述的过程先注意问题的本质及描述,其次是实现过程或细节数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)代码抽象:描述某类对象的共有的行为特征或具有的功能。,类,17,抽象实例1钟表,数据抽象 int Hour,int Minute,int Second代码抽象 SetTime(),ShowTime(),18,抽象实例2人,数据抽象 char*name,char*sex,int age,int id代码抽象 生物属性角度:GetCloth(),Eat(),Step(),社会属性角度:Work(),Promote(),注意:同一问题可能有不同的抽象结果根据解决问题的要求不
4、同,产生的抽象成员可能不同。,19,抽象实例3圆?,数据抽象 float radium;代码抽象 float Area();float Fence();,20,通过类的声明来实现抽象:,21,类是什么?,类是用来描述具有相同属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。,22,class/声明部分private:public:protected:;/实现部分,类是什么?,23,类是什么?钟表的例子,class Clock public:void SetTime(int NewH,int NewM,int NewS);void ShowTime();private:int
5、Hour,Minute,Second;;,24,练习1,要计算一个盒子的体积,请写出关于盒子的类,class CBoxprivate:int height,width,depth;public:CBox(int ht,int wt,int dt)height=ht;width=wt;depth=dt;int volume()return height*width*depth;,25,练习2,要计算一个圆的面积,请写出关于圆的类,#include class Circleprivate:int r;public:void Area()cout3.1415926*r*rendl;void Init
6、(int n)r=n;,26,(2)继承与派生,保持已有类的特性而构造新类的过程称为继承;在已有类的基础上新增自己特性而产生新类的过程称为派生;被继承的已有类称为基类(或父类);派生出的新类称为派生类。,目的:继承的目的:实现代码的重用;派生的目的:当新的问题出现时,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。,27,(3)多态,对于相同的消息,不同的对象具有不同的反应能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。,28,小结,面向对象的程序设计的主要特征:封装继承多态,面向对象的程序是由对象组成的,对象是类的实例,类之间存在着继
7、承与派生,因此在做c+面向对象设计时,首先设计类,定义类的属性和方法,然后设计使用这些类的对象的程序。从低级到高级的处理过程,也就是自下向上的编程方式。,29,第1章 c+基础,1.1概述,30,31,头文件,标准方式 系统提供并放到指定子文件夹中;用户方式“iostream.h”这种方式下,系统先在用户当前文件夹中查找,找不到再按标准方式查找.一般来说,用包含编译器自带的头文件,用”iostream.h”来包含用户自己编写的头文件,32,补充1:引用(&),是为对象取一个别名,不占存储空间.声明一个引用的时候,必须同时对它进行初始化,使指向一个已存在的对象int a=5;int 引用经常用做
8、函数的形参,33,例1:求圆的面积,r,34,/*第一个简单的C+程序*/#include int main()double r,area;coutr;area=3.14159*r*r;cout圆的面积为:arean;return 0;,求圆的面积,35,不同字体表示不同含义,36,37,/*第一个简单的C+程序*/#include int main()double r,area;coutr;area=3.14159*r*r;cout圆的面积为:arean;return 0;,求圆的面积,38,#include class Circleprivate:int r;public:void Are
9、a()cout3.1415926*r*rendl;void Init(int n)r=n;void main()Circle cir;cir.Init(10);cir.Area();,用类重写求圆的面积,这里可否把类定义成只有一个公有的成员函数Area(int r)呢?如果可以,程序应该怎样写?,39,例2:在屏幕上输出下面图形,*,40,#include int main()int num=5;for(int i=0;i num;i+)for(int j=0;j=i;j+)cout*;cout n;return 0;,不用函数打印输出,41,去掉返回值,#include void main(
10、)int num=5;for(int i=0;i num;i+)for(int j=0;j=i;j+)cout*;cout n;,42,用函数打印输出,/输出星号的三角形阵列#include void DoDraw(int num);/声明一个全局函数int main()int num=5;/定义并初始化变量DoDraw(num);/函数的调用return 0;/指定返回值void DoDraw(int num)/函数的定义for(int i=0;i num;i+)/循环语句for(int j=0;j=i;j+)cout*;cout n;,43,用类打印输出,#include class CD
11、rawArraypublic:void DoDraw(int num);void CDrawArray:DoDraw(int num)for(int i=0;inum;i+)for(int j=0;j=i;j+)cout*;coutn;void main()int num=5;CDrawArray myDraw;myDraw.DoDraw(num);,这里可否把DoDraw成员函数的实现放到类内来使用呢?如果可以,怎样写?,44,钟表的例子,class Clock public:void SetTime(int NewH,int NewM,int NewS);void ShowTime();p
12、rivate:int Hour,Minute,Second;;,45,void Clock:SetTime(int NewH,int NewM,int NewS)Hour=NewH;Minute=NewM;Second=NewS;Void Clock:ShowTime()coutHour“:”Minute“:”Second;,46,1.2.1关于类的几点说明,(1)类中的数据成员的数据类型可以是任意的,包含整型、浮点型、字符型、数组、指针和引用等,也可以是另一个类的对象。例如:class COne;class CTwo private:COne a;/数据成员a是已定义的COne类对象;,47
13、,1.2.1关于类的几点说明,(2)由于类是一种数据类型,系统并不会为其分配内存空间,所以在定义类中的数据成员时,不能对其进行初始化,也不能指定除static之外的任何存储类型。例如类CStuscore中,下面的定义是错误的:class CStuscore private:floatfScore3=80.0,90.0,78.0;/错误:不能在直接对数据成员进行初始化 auto int n;/错误:不合法的存储类型;,48,1.2.1关于类的几点说明,(3)访问权限关键词public、private、protected在类中使用先后次序无关紧要,且可使用多次。每个访问权限关键词为类成员所确定的访
14、问权限是从该关键词开始到下一个关键词为止。如在CStuscore类中,私有数据成员是用两个private来分开写成二个部分。同样,若将公有成员函数用两个public分开写成二个部分,仍是正确的。,49,1.2.1关于类的几点说明,(4)在进行类设计时,通常将数据成员的声明为私有的,而将大多数成员函数声明成公有的。这样,类以外的代码不能直接访问类的访问权限私有数据,从而实现了数据的封装。而公有成员函数可为内部的私有数据成员提供外部接口,但接口实现的细节在类外又是不可见的,这就是C+类的优点之一。,50,1.2.1关于类的几点说明,(5)一般来说,程序员更多关心的是public成员,因此常将pub
15、lic成员写在类体中的前面,而将private成员写在类体中的后面。若在类体内没有指定成员的访问权限,则默认的访问权限为私有的(private)。,(6)当程序比较大时,应尽量将类单独存放在一个文件中或将类的声明放在头文件中而将成员函数的实现放在与头文件同名的.cpp文件中(这也是Visual C+6.0的编程方式)。,51,练习,请写出坐标系中一个点的类。,提示:属性就是有值和值方法有:点的初始化得到点的坐标值,52,class Pointpublic:void Init(int initX,int initY)X=initX;Y=initY;int GetX()return x;int G
16、etY()return Y;private:int X,Y;,一个坐标点的类,53,1.2.2对象定义,类的对象是该类的某一特定实体,即类类型的变量。,类对象有3种定义方式:声明之后定义、声明之时定义和一次性定义。例如:class A;A a;/声明之后定义 class B b,c;/声明之时定义 class d,e;/一次性定义在程序中应尽量使用对象的声明之后定义方式,即按下列格式进行:,;,54,1.2.3对象访问,一个对象的成员就是该对象的类所定义的数据成员和成员函数。,那么类中的成员的访问方式又是如何的呢?,类中成员互访直接使用成员名类外访问使用“对象名.成员名”访问public属性的
17、成员,55,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()coutHour“:”Minute“:”Second;void main(void)Clock myclock;Myclock.SetTi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计
链接地址:https://www.desk33.com/p-236183.html