《C++》课件项目6 ATM机.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《C++》课件项目6 ATM机.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ C+课件项目6 ATM机 课件 项目 ATM
- 资源描述:
-
1、项目6 ATM机课件目录6.1 项目情景16.2 知识准备26.3 项目解决36.4 知识拓展46.1 项目情景Angie:那我们用面向对象的方法设计程序就要分析程序中的事物有哪些?Daisy:比如ATM机中要有银行卡、取款机,还要有人操作。Angie:那通讯录中,要用到学生、教师;Blue Team接下来的任务就是用面向对象的方法实现ATM机。对于这一系列的任务他们做了分功:Angie负责再次分析ATM机,给出ATM中存在的事物。Daisy负责分析给出的事物,列举出它们的共性。Eva负责ATM 的测试。其实他们都参于了每一个环节。回主目录回主目录6.2 知识准备6.2.1 面向对象 6.2.
2、2 类 6.2.3 对象6.2.4 构造函数和析构函数 6.2.5 this指针6.2.6 友元函数 回主目录回主目录6.2.1 面向对象 1.简介 面向对象的方法是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。6.2.1 面向对象 2.面向对象可以有不同层次的理解 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各
3、样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统6.2.1 面向对象 3.特点 1)信息隐藏和封装特性:封装把方法和数据包围起来,对数据的访问只能通过已定义的界面。2)继承:一个新类可以从现有的类中派生,这个过程称为类继承。新类继承
4、了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和数据成员,并且类可以修改或增加新的方法使之更适合特殊的需要。3)组合特性:组合用于表示类的“整体/部分”关系。4)动态特性 (1)抽象:是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用其它部分细节。(2)多态性:多态性是指允许不同类的对象对同一消息做出响应。回子目录回子目录6.2.2 类类 1.类的基本概念 生活当中具有共性的事物,我们通常都会概括成一类来进行描述,当我们提出某一类时我们很容易
5、的能够在脑中反应出,这个类中的事物都会有什么样的特点,能够做什么样的事,这是人类的一种自然思维模式。用这种思维来编写程序,会更易理解和修改,面向对象就是这样一种方法,那么面向对象中的类是如何定义的呢?类(class)是对具有共同属性和行为的一类事物的抽象描述。1)共同属性类似于生活中的同类事物所具有的特点,面向对象方法中把这些特点称之为属性。把这些特点的不同值称之为属性值,属性值可以相同。2)行为类似于生活中同类事物的行为特点,面向对象方法中把这些行为特点称之为方法。行为特点也允许与别人有所不同。6.2.2 类类2.类的定义定义类的一般格式如下:定义类的一般格式如下:class 类名类名 pr
6、ivate:私有数据成员和成员函数私有数据成员和成员函数 protected:保护数据成员和成员函数保护数据成员和成员函数 public:公有数据成员和成员函数公有数据成员和成员函数;6.2.2 类类 2.类的定义(1)public、private、protected是访问控制符,用于限制特征的可见性。(2)public声明的成员可以被任何方法访问,这样的成员被称为公有成员,描述了对象对外的可见属性,根据数据抽象的原理,这个控制符用来声明数据成员不太合适,所以通常只用来声明成员函数,声明的成员函数构成对象的操作接口,即用来完成任务或处理功能。6.2.2 类类(3)private声明的成员只允许
7、本类的方法和友元访问,这样的成员被称为私有成员,描述了对象内部的属性,通常用来实现数据结构,也可以用来声明成员函数,不过由于其“私有”特性,用此控制符声明的函数,在类的外部无法访问,所以也只能作为本类中其他函数的辅助。(4)protected声明的成员允许本类和其子类的方法访问,这样的成员被称为保护成员,可见性介于public和private之间。6.2.2 类类 3.成员函数的定义成员函数的定义 类的成员函数描述了类的行为,通过它实现了类的任务,或实现了对封闭数据的处理功能,是程序算法的实现部分,通常统一放在类定义后面,也可以在定义类的时直接实现。定义类的成员函数一般格式如下:定义类的成员函
8、数一般格式如下:返回值类型返回值类型 类名:函数名(参数表)类名:函数名(参数表)函数体函数体 6.2.2 类类 4.类作用域 类是由数据成员和成员函数组成,所以类的数据成员和成员函数都从属于该类的作用域,在此作用域中,类数据成员可以直接由该类的所有函数访问,并可以通过它的名称进行引用;在函数内定义的变量只能由该函数访问,也就是说函数中的变量是一个局部变量。如果函数内变量与类的数据成员同名,那么在此函数的作用域内,函数的局部变量会屏蔽类的数据成员。这种情况下如果想要访问被屏蔽的数据成员,可以使用关键字this和-运算符。回子目录回子目录6.2.3 对象对象 1.对象的创建 类是抽象的,而对象是
9、一个具有了类的属性和行为能力,并且在程序运行时真实存在的,真正用于完成任务处理的实体。语法格式如下:类名 对象名;除了用上述方法进行对象定义之外,也可以在声明类的同时,直接定义对象,在类定义后直接给出属于该类的对象名表。6.2.3 对象对象 2.对象的使用 类对象创建之后就可以使用对象的方法实现程序的处理功能了,语法格式如下:对象名.方法名(参数表);如果是通过指向对象的指针访问,语法格式如下:对象指针名-方法名(参数表);回子目录回子目录6.2.4 构造函数和析构函数构造函数和析构函数 1.构造函数 在声明对象的时候,也需要对相应的属性赋值,称之为对象的初始化,对象初始化由特殊的成员函数来完
10、成,这个函数 称之为构造函数。class 类名类名public:数据成员数据成员;类名(形参表)类名(形参表);/构造函数构造函数;类名:类名(形参表)类名:类名(形参表)数据成员初始化数据成员初始化;/函数体函数体 6.2.4 构造函数和析构函数构造函数和析构函数 1.构造函数 构造函数是一种特殊的函数,它只做一件事,就是在对象初始化时给对象的数据成员赋初值。(1)构造函数名必须与类名相同(包括大小写),否则编译程序将把它做为一般的成员函数进行处理。(2)构造函数没有返回值,所以在声明和定义时不能说明它的类型。(3)在实际应用中,通常情况下每个类都会有自己的构造函数,如果用户没有编写构造函数
11、,编译系统将自动生成一个缺省的构造函数。(4)构造函数不能像其他函数那样被显示调用,它是在创建对象时被自动调用的。6.2.4 构造函数和析构函数构造函数和析构函数 2.拷贝构造函数 一种特殊的构造函数,由编译器调用,使用已经存在的对象值来实例化另一个新的对象。它的唯一的一个参数,即引用对象是const型的,是不可改变的。在C+中,一般在下面三种情况下调用拷贝构造函数。(1)使用一个已存在的对象来实例化同类的另一个对象。使用一个已存在的对象来实例化同类的另一个对象。(2)在函数调用中,以值传递的方式传递类对象的拷贝。在函数调用中,以值传递的方式传递类对象的拷贝。(3)对象作为了函数的返回值。对象
12、作为了函数的返回值。6.2.4 构造函数和析构函数构造函数和析构函数 3.析构函数 析构函数是当对象脱离其作用域时,例如对象所在的函数已调用完毕,由系统自动执行析构函数,做“清理善后”的工作,例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放。析构函数名字也应与类名相同,不过在函数名前面要加上一个破折号,用于与构造函数相区别。析构函数不能带任何参数,也没有返回类型,而且每个类只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,该函数的函数体为空,不进行任何操作。回子目录回子目录6.2.5 this指针指针 this指针
13、是一种隐含指针,隐含于每个类的成员函数中,是每个成员函数都具有的默认参数,也就是说每个成员函数都有一个this指针。指针this通常在方法内部使用,表示对一个对象的引用,意味着此方法要对被引用的对象进行某种处理。成员函数使用this访问类中数据成员的一般格式如下:this-this-成员变量成员变量回子目录回子目录6.2.6 友友元函数元函数 友元函数是C+中特有的,作用是使不在这个类中声明的成员函数能够访问这个类的对象的私有成员,实质上是破坏了对象的封装性的,但是,有时候需要在类的外部访问类的私有成员,所以友元函数也是必不可少的。使用关键字friend声明,可以放在公有部分,也可以放在私有部
14、分;友元函数可以定义在类的内部,也可以定义在类的外部。语法格式如下:friend friend (););也可以把一个类定义成另一个类的友元:也可以把一个类定义成另一个类的友元:class c1;class c1;class c2class c2 friend class c1;friend class c1;回子目录回子目录6.3 项目解决项目解决 1.定义银行卡类。(1)银行卡类的基本数据成员,如表成员名称成员名称成员功能成员功能namename用于存储银行卡姓名用于存储银行卡姓名numnum用于银行卡卡号用于银行卡卡号moneymoney用于存储银行卡余额用于存储银行卡余额passwor
15、dpassword用于存储银行卡密码用于存储银行卡密码6.3 项目解决项目解决(2)银行卡类的基本成员函数,如表成员名称成员名称成员功能成员功能BankCardBankCard(string(string Name,stringName,string Num,floatNum,float Money,string Money,string Password)Password)构造函数完成银行卡的构造函数完成银行卡的初始化初始化GetNameGetName()()用于取得卡主姓名用于取得卡主姓名GetNumGetNum()()用于取得卡号用于取得卡号GetMoney()GetMoney()用于完
16、成取款用于完成取款SetMoney(float m)SetMoney(float m)用于完成存款用于完成存款GetPassword()GetPassword()用于取得卡密码用于取得卡密码SetPassword(string pwd)SetPassword(string pwd)用于设置卡密码用于设置卡密码6.3 项目解决项目解决(3)声明取款机ATM类是银行卡的友元类,以完成ATM对银行卡的操作。(4)银行卡类定义参考代码,见下页。6.3 项目解决项目解决 class BankCardpublic:friend class ATM;BankCard(string Name,string N
展开阅读全文