面向对象程序设内容汇总.doc_第1页
面向对象程序设内容汇总.doc_第2页
面向对象程序设内容汇总.doc_第3页
面向对象程序设内容汇总.doc_第4页
面向对象程序设内容汇总.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一二章 C C+基础u 变量C+中用于命名和存储数据的编程结构称为变量Type_Name Variable_Name_1,Variable_Name_2,.;u 陷井:未初始化的变量变量声明后,除非程序为变量赋值,否则变量不包含有意义的值。那么如果忘记给变量赋值,程序运行时使用这个变量就会出现不可预知的错误。u 整型 ( int Types )4个字节 -21474836482147483647编译器的机器字长总是与整型的位长有关如: 32位编译器的整型数一定为32位长u 字符型:表示范围: 有符号:-128127 无符号:0255u 枚举型:自定义整数区间,甚至列举单个整数值 enum Week Mon, Tue, Wed, Thu, Fri, Sat, Sun ; 最大特点是可以给每个值指定一个在程序中直接使用的标记(枚举符)u 布尔型:表示范围仅含整数和1,也可以表示成true和false,u 浮点数 float浮点数的表示范围:4个字节 10(-38)10(38)浮点数的操作: 常规的加、减、乘、除等操作u 双精度浮点数 double8个字节 10(-308)10(308) 陷井:整形之间进行算术运算结果仍为整形。u 数组( Arrays )数组是同类元素的集合,它的元素排列在连续的空间中,按下标来标记,描述数组必须给出元素类型和元素个数int a5 = 1,2,3,4,5;u 容器( vector )容器与数组的共同特征是元素的排列在逻辑上是线性序列结构,可以用下标进行访问。向量可以按需创建,拷贝创建,局部拷贝创建,异类拷贝和创建vector a(n);u if分支语句 基本形式if (Boolean_Expression_1)Statement_1else if(Boolean_Expression_2)Statement_2.else if(Boolean_Expression_n)Statement_nelseStatement_For_Otheru 陷井:连续不等式 有时在做连续不等式的判断时,经常会有人按照数学中的写法编写,如:if (xz聚合关联依赖;u 序列图 序列图的主要目的是定义事件序列,产生一些希望的输出。重点不是消息本身,而是消息产生的顺序;不过,大多数序列图会表示一个系统的对象之间传递的什么消息,以及它们发生的顺序。u 活动图 活动图是一个行为图,通常用来表达业务流程、工作流程或者系统流程中一连串的动作。u 结构(struct) C+的内部数据只有简单的整数和浮点数等简单的数据类型,有时还常常需要获得一个由不同(异种)类型的值构成的集合,再将集合视为一个整体来进行处理。 struct Point double x; double y;Point fisrtPoint, secondPoint;firstPoint.y = 10.23;u 结构定义可以嵌套使用。如下所示:struct line Point startPoint; Point endPoint;u 类 类是一个数据类型,它的变量就是对象。对象(object)除了具有成员函数,还能容纳数据值。所以,在一个C+程序中,类的定义应该是一个数据类型定义,它描述变量能容纳哪些种类的值,以及成员函数有哪些。类的一般形式:class Class_Namepublic: Member_Specification_1; Member_Specification_2; Member_Specification_n;private: Member_Specification_n+1; Member_Specification_n+2; ; /不要忘记分号class Personprivate:string name;string address;int gender; int age;public:Person(); Person(string name, int age);string getName(); /成员函数声明string getAddress();void setName(string newName);void setAddress(string adr);int getGender();void setAge(int age);int getAge();Person:Person()gender = 1; Person:Person(string name, int age)this-name = name;this-age = age;string Person:getAddress()return address;string Person:getName()return name;int Person:getGender()return gender;void Person:setAge(int age)this-age = age;int Person:getAge() /成员函数定义return age;int main(int argc, char *argv)Person person(kerwin, 28);coutNAME: person.getName()endl;coutGENDER: ;if(person.getGender() = 1)coutMALEendl;elsecoutFEMALEendl;coutAGE: person.getAge()操作符 在C+中有一个和指针一起使用的操作符,用来指明结构或类的某个成员。该操作符就是箭头操作符“-”。u this指针 当定义类的成员函数时,常常需要使用到调用对象。this指针就是一个预定义的指向调用对象的指针。u 静态成员n 静态变量 一个类的所有对象往往需要共享一个变量。这种共享的变量称为静态变量。不像普通的数据成员,static数据成员独立于该类的任意对象而存在;每个static数据成员是与类关联的,并不与该类的对象相关联。n 静态成员函数 正如类可以定义共享的static数据成员一样,类也可以定义static成员函数。static成员函数没有this形参,它可以直接访问所属类的static成员,但不能直接使用非static成员。n 使用类的static成员 可以通过作用域操作符“:”从类直接调用static成员,或者通过对象、引用或指向该类类型对象的指针间接调用。n 定义static成员 在成员声明前加上关键字static将成员设为static。static成员遵循正常的公有/私有访问规则。class Studentprivate: static int classCount;public: static void setClassCount(int count);注意:int Student:classCount;/要在main函数前面对所有类中的静态成员进行声明int main(int argc, char *argv) testAsPoint();system(PAUSE); return EXIT_SUCCESS;u 构造函数 构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作是保证每个对象的数据成员具有合适的初始值。构造函数的名字与类的名字相同,并且不能指定返回类型。它们可以没有形参,也可以定义多个形参。构造函数可以被重载。class Sales_itempublic: Sales_item(const std:string&); Sales_item(std:istream&); Sales_item(); ; u 构造函数初始化式 与任何其他函数一样,构造函数具有名字、形参表和函数体。与其他函数不同的是,构造函数也可以包含一个构造函数初始化列表:Sales_item:Sales_item(const string &book): isbn(book), units_sold(0), revenue(0.0) 构造函数初始化列表以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。构造函数初始化列表仅指定用于初始化成员的值,并不指定这些初始化执行的次序。成员被初始化的次序就是定义成员的次序。u 初始化式可以是任意表达式 一个初始化式可以是任意复杂的表达式。 Sales_item(const std:string &book, int cnt, double price): isbn(book), units_sold(cnt), revenue(cnt * price) u 类类型的数据成员的初始化式 初始化类类型的成员时,要指定实参并传递给成员类型的一个构造函数。可以使用该类型的任意构造函数。 Sales_item(): isbn(10, 9), units_sold(0), revenue(0.0) u 析构函数 构造函数的一个用途是自动获取资源。u 何时调用析构函数Sales_item *p = new Sales_item; Sales_item item(*p); delete p; / 销毁指针时调用析构函数 / 超出作用域,调用item的析构函数class Sales_itempublic: Sales_item(const std:string&); Sales_item() /一个什么都不做的析构函数;u 使用继承时,就是让子类继承父类的属性和操作,子类可以声明新的属性和操作,还可以剔除那些不适合其用途的父类操作。u 派生类对象结构基类对象子类对象子类对象空间总是不小于基类对象cabab基类部分子类添加部分/Extend.h#include #include Base.h#ifndef CLASS_EXTEND#define CLASS_EXTENDusing namespace std;class Extend: public Base private: int c; public: Extend(); Extend(); void showC();#endifu protected关键字 被protect关键字修饰的成员的访问级别居于public和private之间,这些成员可以被子类继承并随意使用,但不能被“外人”随意访问。u 重写父类成员 继承自父类的成员可以进行重写。u 通过域解析符:访问子类父类成员 当Extend类继承Base类之后,Extend的对象extend中实际上是包含了一个Base对象在其中的。那么在ext的Base的那部分中必然包含了Base中定义的showA()方法,虽然之后进行了重载,但是那也只不过是在Extend的作用域中又定义了一个showA()方法,而原来父类的showA()方法是在Base作用域下的,所以,在子类重载了父类中的方法成员的前提下还想再使用父类中原来的方法成员就需要使用“:” 。u 继承中子类和父类的构造和析构问题 在继承中,构造函数按照自上向下的顺序进行,析构则按照自下向上的顺序进行。u 进一步抽象void print(Shape obj) obj.show();u 对象切片问题(同化效应) 尽管把一个子类对象赋值给一个父类变量是合法的,但是在这个过程中会导致一些成员的丢失或切除。在赋值过程中,任何只属于子类对象但不属于父类的成员变量都将被丢弃,类似的,任何不在父类中定义的成员函数对赋值后的父类对象也是不可用的。u 动态绑定(后期绑定)多态 通过一种机制,告诉编译器“我不知道该函数是如何实现的,请一直等到它在程序中调用,然后再从对象中获得函数的实现。”这种一直等待到运行时刻才决定一个过程的实现的技术称为动态绑定。 多态,多态指的就是通过动态绑定机制,把多种意思关联到一个函数名的能力。 为了实现动态绑定,C+提供了虚函数机制。虚函数是由在成员函数的声明中包含修饰符virtual来指示的。class Base protected: int a; int b; public: Base(); Base(); virtual void showA(); virtual void showB();u 多态的条件 C+中的函数调用默认不使用动态绑定。要触发动态绑定,满足两个条件:第一,只有指定为虚函数的成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论