版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程总结第1章 从过程抽象到数据抽象1. 面向过程程序设计过程抽象。过程抽象的基础是把软件视为处理流,并把处理流定义成由一系列步骤构成的算法。每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生贯通于整个程序的控制流,最终产生一个具有静态结构的体系结构。主要问题主要问题1:是只能做到信息隐藏,而不能做到信息保护。主要问题主要问题2:数据表示和函数是分开的。这在概念上和实际使用中都有缺陷2. 面向对象程序设计n基本思想:面向对象的程序是由对象和对象间的相互作用构成的。面向对象的程序是对象的有机结合。n基本方法:面向对象程序设计方法模拟人类习惯的解题方法,用取代功能分解。对象分
2、解就是把程序分解成许多对象,不同对象之间通过发消息向对方提出服务要求,接受消息的对象主动完成指定功能(顾客所要求的服务),程序中的所有对象分工协作,共同完成整个程序的功能。n特点/机制:封装、继承、多态。nCoad & Yourdon给出的面向对象方法学方程式: OO=对象 + 类 + 继承 + 消息 封装、继承、多态是如何实现的?类、定义派生类、重载封装、继承、多态是如何实现的?类、定义派生类、重载- -模板模板- -虚函虚函数数+ +继承继承 封装、继承、多态各起的作用?封装、继承、多态各起的作用?信息隐蔽信息隐蔽,代码重用,灵活、重用,代码重用,灵活、重用2. C+多文件程序设计
3、n 头文件:.h o 要加#ifndef语句防止重复定义、编译n 类的实现部分:.cppo 要#include“头.hn 类的使用部分:.cppo 要#include“头.h第2章 类和对象(C+)1. 类:1) 定义:分为说明和实现两个部分。2) 类的成员:数据成员和成员函数。3) 访问控制符:private(缺省), protected, public。2. 对象:1) 定义方法:Mycls obj; Mycls obj(8); Mycls *p=new Mycls(8); Date &DateRef=MyBirthday;2) 使用方法( 3种):对象名. 成员;对象指针- 成员
4、;对象引用- 成员;3) 自引用指针this:每当创建一个类的对象时,系统就会自动地创建this指针并把this指针的值初始化为该对象本身(即把this指向该对象)。静态成员函数中没有this指针3. 构造函数1) 作用和性质;没有返回值3) 缺省参数的构造函数;避免冲突4) 构造函数的重载;5) 拷贝构造函数。4. 析构函数(作用和性质)5. 成员对象的构造和析构(方法和顺序)6. 对象数组(定义方法和数组的初始化方法)7. 对象指针(动态建立对象的方法:new和delete)8. 静态(static)成员:分为静态数据成员和静态成员函数。9. 友元(friend)分为友元函数和友元类。10
5、.常类型(const)有常对象、常数据成员和常成员函数。特征。注意事项o 类的定义n格式n数据成员的定义的注意事项(p177-178):类中不能直接赋初值、类中不能定义本类对象、但是可以定义本类指针n成员函数的定义的注意事项:类体外:,默认参数,重载冲突o 对象定义和使用n对象定义n对象使用:. -、引用n成员访问控制权限o对象不能访问private、protected,能访问基类的public;o派生类不能访问private、能访问基类的protected、publico 要在一个类的外部访问该类的私有成员,可以通过该类的 public 函数(公开接口)实现。nthis指针:非静态成员函数才
6、有o 根据main()设计类:类似p212例题1o o课件ppt:o 构造函数:格式,数据成员初始化,默认的构造函数默认的构造函数【何时何时自动产生,何时不会自动产生自动产生,何时不会自动产生】,可重载,不可为虚函数o Copy构造函数:作用,参数形式,何时调用,浅复制带来的问题,默认的Copy构造函数【何时自动产生,何时不会何时自动产生,何时不会自动产生自动产生】o 析构函数:格式,不可重载,可为虚函数(甚至是纯虚的)o 成员对象:构造、析构的顺序注意点:构造函数、析构函数没有返回值 Copy构造函数使用的情况(创建新对象,函数调用时参数虚实对应,返回值为对象或引用) 成员对象的定义和初始化
7、、析构顺序 初始化串的书写方法特别:上述函数的使用定义分析、使用分析,运行结果分析调用构造析构函数Copy构造函数分析: MyClass p1, p210, *p3【p1不会调用构造函数】, MyClass *p3=new MyClass(10,20) ,p5(p1); 无法继承的函数:构造析构Copy构造赋值o 对象数组:n对象数组定义,执行构造函数次数;注意:对象数组指针定义,不执行构造函数n赋初值方法(执行哪一个构造函数):mycls x2;等o 对象指针nnew和delete 的使用和含义o 静态(static)成员:o静态数据成员作用:为实现类的多个对象之间的数据共享而引进的。o静态
8、成员函数的作用:n要实现一个类在不生成对象的情况下通过类来访问某成员函数n为了能在不生成对象的情况下处理private、protected的静态数据成员。o静态数据成员和静态成员函数的使用(类:),静态成员函数调用非静态成员的方法(类中的非静态数据成员,可以通过该类的对象间接引用。)o 友元(friend)o好处、坏处o如何定义o 常类型(const)n有常对象、常数据成员和常成员函数。n常成员函数如何访问数据成员的规则oconst对象只能访问const成员函数, const成员函数不能调用非const成员函数,例p210,exam8-16。void print() void print()
9、const Mycls a;a.print(); const Mycls b;b.print();第3章 继承和派生1. 派生类:定义方法、生成过程和构造函数。2. 访问控制:公有继承、私有继承和保护继承。3. 虚基类(virtual):多重继承的二义性问题及解决方法、虚基类的概念和构造函数。4. 基类与派生类之间的转换:转换条件、4种形式。注意事项o 派生定义方法o 派生时,成员的权限变化,访问继承的成员的问题【出错分析,二义性,派生类支配性原则,解决二义性的方法】o 构造函数的执行顺序及初始化串的书写方法书写方法o 方法(有二义性在成员函数名前加上范围(类名:) )注意事项o 虚基类与普通
10、基类的区别概念、虚基类构造函数的书写、执行:构造函数顺序:先父母先父母 先虚后非虚先虚后非虚再客人再客人后后自己自己o 分析方法:注意事项o 赋值兼容性条件(public继承)多态必须要public继承o Subclass d;o Base *p=d;o 派生类调用基类的成员函数的方法(有二义性在成员函数名前加上范围(类名:) )第4章 多态性1.静态联编(编译时多态性)通过函数重载和模板体现。何时静态联编,分析程序2.动态联编(运行时多态性)通过public继承和虚函数体现。何时动态联编(三要素),分析程序3.运算符重载方法和实现方法;2种形式:成员函数和友元函数,参数个数的特点,参数何时需
11、要加&重载规则。 4.虚函数定义、使用三要素和使用限制;纯虚函数和抽象类。概念、特点、使用。抽象类没有完整的实现,故不能实例化不能实例化。抽象类只能作为其他类的基类,不能声明抽象类的实例,不能创建它的对象;但可以定义它的指针变量。注意事项o 何时静态联编、动态联编:n 例exam10.2:动态联编n 例exam10.2改造(WHO()去掉去掉virtual):静态联编o 动态联编三要素:o 纯虚函数和抽象类o 运算符重载ooperrator=o赋值运算符必须使用成员函数重载第5章 模板1.模板的概念:是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现代码的
12、可重用性。2.模板的分类:函数模板和类模板3.函数模板和模板函数函数模板的定义和使用方法;函数模板的重载。函数模板使用分析、不正确使用分析。函数模板与模板函数的区别。4.类模板和模板类类模板的定义和使用方法。类模板使用分析。类模板与模板类的区别;类模板的派生(3种形式)。特别:类模板-类模板,类模板-类类模板的设计与使用注意事项:o根据main()写模板n例exec11-1 不同数据类型数组中的元素求和,涉及特化template char* sum(char* str, int len) char* s = NULL;int length = 0;for(int i=0; inumb; +i)
13、 length += strlen(stri);s = new charlength+1; /给s分配内存空间s0 = 0;for(int i=0; i(istream &in, user-type &obj) inobj.item1; inobj.itemn; return in; n第一个参数是:对istream对象的引用。这意味着in必须是输入流,它可以是其它任何合法的标识符,但必须与return后面的标识符相同;n第二个参数是:接收数据的对象。其中user_type是用户自定义类型名,obj为该类型的对象名。几点注意事项: (1)该重载函数的返回类型是istream类对
14、象的引用【 istream & operator】,返回引用的目的在于,把几个输入运算符放在同一条输入语句中时,该重载函数仍能正确工作。cinxyz; (cinx返回cin,再ciny,这两个cin必需是同一个对象,才能确保输入缓冲区的连续读取) (2)该运算符函数有两个参数,第一个参数是对istream类对象的引用,它出现在运算符的左边,第二个参数是出现在运算符右边的自定义类型对象。(3)重载运算符函数operator的第二个参数必须是一个引用(因为输入的值要保存在该对象中)。 用友元函数重载输出运算符来实现用户自定义类型对象的输出。定义运算符函数的格式如下: ostream &am
15、p;operator (ostream &out, user-type &obj) outobj.item1; 。 outobj.itemn; return out; n与重载输出运算符函数一样,重载输出运算符也不能是成员函数法,但可以是该类的友元函数或独立函数。nuser-type &obj 或user-type obj ,因为输出,不会改变obj例exam12-64 输入输出运算符的重载#include class Pointpublic:Point(int i=0,int j=0) x=i;y=j;/必须友元重载 friend istream &operator(istream &in,Point &a); friend ostream &operator(istream &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版学校行政辅助人员劳动合同示范文本3篇
- 二零二四年度新材料技术培训与服务合同3篇
- 2025版实习期员工劳动合同-实习期间加班与休息规定3篇
- 二零二五年度木材加工厂安全生产责任险合同3篇
- 二零二四年度巡演场地租赁合同-含活动现场餐饮服务及用品供应范本3篇
- 二零二五年度二手车深度检查与保养服务合同4篇
- 二零二五年度出口贸易合同融资与风险管理合作协议3篇
- 2025年度科技研发项目部门承包经营合同范本3篇
- 二零二五年度跨境电商物流基地抵押担保借款合同书3篇
- 2025版围栏施工与土地租赁一体化合同范本3篇
- 割接方案的要点、难点及采取的相应措施
- 2025年副护士长竞聘演讲稿(3篇)
- 2024年08月北京中信银行北京分行社会招考(826)笔试历年参考题库附带答案详解
- 原发性肾病综合征护理
- 2024年高考英语复习(新高考专用)完形填空之词汇复现
- 【京东物流配送模式探析及发展对策探究开题报告文献综述4100字】
- 施工现场工程令
- 药物经济学评价模型构建
- Daniel-Defoe-Robinson-Crusoe-笛福和鲁滨逊漂流记全英文PPT
- 第一章威尔逊公共行政管理理论
- 外科护理(高职护理专业)PPT完整全套教学课件
评论
0/150
提交评论