收藏 分享(赏)

面向对象程序设内容汇总.doc

上传人:fmgc7290 文档编号:8174088 上传时间:2019-06-12 格式:DOC 页数:16 大小:708KB
下载 相关 举报
面向对象程序设内容汇总.doc_第1页
第1页 / 共16页
面向对象程序设内容汇总.doc_第2页
第2页 / 共16页
面向对象程序设内容汇总.doc_第3页
第3页 / 共16页
面向对象程序设内容汇总.doc_第4页
第4页 / 共16页
面向对象程序设内容汇总.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、第一二章 C C+基础 变量C+中用于命名和存储数据的编程结构称为变量Type_Name Variable_Name_1,Variable_Name_2,.; 陷井:未初始化的变量变量声明后,除非程序为变量赋值,否则变量不包含有意义的值。那么如果忘记给变量赋值,程序运行时使用这个变量就会出现不可预知的错误。 整型 ( int Types )4 个字节 -21474836482147483647编译器的机器字长总是与整型的位长有关如:32 位编译器的整型数一定为 32 位长 字符型:表示范围:有符号:-128127无符号:0255 枚举型:自定义整数区间,甚至列举单个整数值enum Week M

2、on, Tue, Wed, Thu, Fri, Sat, Sun ;最大特点是可以给每个值指定一个在程序中直接使用的标记(枚举符) 布尔型:表示范围仅含整数和 1,也可以表示成 true 和 false, 浮点数 float浮点数的表示范围:4 个字节 10(-38)10(38)浮点数的操作:常规的加、减、乘、除等操作 双精度浮点数 double8 个字节 10(-308)10(308) 陷井:整形之间进行算术运算结果仍为整形。 数组( Arrays )数组是同类元素的集合,它的元素排列在连续的空间中,按下标来标记,描述数组必须给出元素类型和元素个数int a5 = 1,2,3,4,5; 容器

3、( vector )容器与数组的共同特征是元素的排列在逻辑上是线性序列结构,可以用下标进行访问。向量可以按需创建,拷贝创建,局部拷贝创建,异类拷贝和创建vector a(n); if 分支语句 基本形式if (Boolean_Expression_1)Statement_1else if(Boolean_Expression_2)Statement_2.else if(Boolean_Expression_n)Statement_nelseStatement_For_Other 陷井:连续不等式有时在做连续不等式的判断时,经常会有人按照数学中的写法编写,如:if (x聚合关联 依赖; 序列图A

4、irpot Plane0.1*Person Brain11序列图的主要目的是定义事件序列,产生一些希望的输出。重点不是消息本身,而是消息产生的顺序;不过,大多数序列图会表示一个系统的对象之间传递的什么消息,以及它们发生的顺序。 活动图活动图是一个行为图,通常用来表达业务流程、工作流程或者系统流程中一连串的动作。 结构(struct)C+的内部数据只有简单的整数和浮点数等简单的数据类型,有时还常常需要获得一个由不同(异种)类型的值构成的集合,再将集合视为一个整体来进行处理。 struct Pointdouble x;double y;Point fisrtPoint, secondPoint;f

5、irstPoint.y = 10.23; 结构定义可以嵌套使用。如下所示:struct linePoint startPoint;Point endPoint; 类类是一个数据类型,它的变量就是对象。对象(object)除了具有成员函数,还能容纳数据值。所以,在一个 C+程序中,类的定义应该是一个数据类型定义,它描述变量能容纳哪些种类的值,以及成员函数有哪些。类的一般形式:class Class_Namepublic:Member_Specification_1;Member_Specification_2; Member_Specification_n;private:Member_Spec

6、ification_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);i

7、nt 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;i

8、nt main(int argc, char *argv)Person person(“kerwin“, 28);cout操作符在 C+中有一个和指针一起使用的操作符,用来指明结构或类的某个成员。该操作符就是箭头操作符“-” 。 this 指针当定义类的成员函数时,常常需要使用到调用对象。this 指针就是一个预定义的指向调用对象的指针。 静态成员 静态变量一个类的所有对象往往需要共享一个变量。这种共享的变量称为静态变量。不像普通的数据成员,static 数据成员独立于该类的任意对象而存在;每个 static 数据成员是与类关联的,并不与该类的对象相关联。 静态成员函数正如类可以定义共享的 s

9、tatic 数据成员一样,类也可以定义 static 成员函数。static 成员函数没有 this 形参,它可以直接访问所属类的 static 成员,但不能直接使用非 static 成员。 使用类的 static 成员可以通过作用域操作符“:”从类直接调用 static 成员,或者通过对象、引用或指向该类类型对象的指针间接调用。 定义 static 成员在成员声明前加上关键字 static 将成员设为 static。static 成员遵循正常的公有/私有访问规则。class Studentprivate:static int classCount;public:static void set

10、ClassCount(int count);注意:int Student:classCount;/要在 main 函数前面对所有类中的静态成员进行声明int main(int argc, char *argv)testAsPoint();system(“PAUSE“); return EXIT_SUCCESS; 构造函数构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作是保证每个对象的数据成员具有合适的初始值。构造函数的名字与类的名字相同,并且不能指定返回类型。它们可以没有形参,也可以定义多个形参。构造函数可以被重载。class Sales_itempublic

11、:Sales_item(const std:string Sales_item(std:istream Sales_item(); ; 构造函数初始化式 与任何其他函数一样,构造函数具有名字、形参表和函数体。与其他函数不同的是,构造函数也可以包含一个构造函数初始化列表:Sales_item:Sales_item(const string Sales_item item(*p);delete p; / 销毁指针时调用析构函数 / 超出作用域,调用 item 的析构函数class Sales_itempublic:Sales_item(const std:string Sales_item() /

12、一个什么都不做的析构函数; 使用继承时,就是让子类继承父类的属性和操作,子类可以声明新的属性和操作,还可以剔除那些不适合其用途的父类操作。 派生类对象结构基类对象子类对象子类对象空间总是不小于基类对象cabab 基类部分子类添加部分/Extend.h#include #include “Base.h“#ifndef CLASS_EXTEND#define CLASS_EXTENDusing namespace std;class Extend: public Baseprivate:int c;public:Extend();Extend();void showC();#endif prote

13、cted 关键字被 protect 关键字修饰的成员的访问级别居于 public 和 private 之间,这些成员可以被子类继承并随意使用,但不能被“外人”随意访问。 重写父类成员继承自父类的成员可以进行重写。 通过域解析符:访问子类父类成员当 Extend 类继承 Base 类之后,Extend 的对象 extend 中实际上是包含了一个 Base 对象在其中的。那么在 ext 的 Base 的那部分中必然包含了 Base 中定义的 showA()方法,虽然之后进行了重载,但是那也只不过是在 Extend 的作用域中又定义了一个 showA()方法,而原来父类的 showA()方法是在 B

14、ase 作用域下的,所以,在子类重载了父类中的方法成员的前提下还想再使用父类中原来的方法成员就需要使用“:” 。 继承中子类和父类的构造和析构问题在继承中,构造函数按照自上向下的顺序进行,析构则按照自下向上的顺序进行。 进一步抽象void print(Shape obj)obj.show(); 对象切片问题(同化效应)尽管把一个子类对象赋值给一个父类变量是合法的,但是在这个过程中会导致一些成员的丢失或切除。在赋值过程中,任何只属于子类对象但不属于父类的成员变量都将被丢弃,类似的,任何不在父类中定义的成员函数对赋值后的父类对象也是不可用的。 动态绑定(后期绑定)多态通过一种机制,告诉编译器“我不

15、知道该函数是如何实现的,请一直等到它在程序中调用,然后再从对象中获得函数的实现。 ”这种一直等待到运行时刻才决定一个过程的实现的技术称为动态绑定。多态,多态指的就是通过动态绑定机制,把多种意思关联到一个函数名的能力。为了实现动态绑定,C+提供了虚函数机制。虚函数是由在成员函数的声明中包含修饰符 virtual 来指示的。class Baseprotected:int a;int b;public:Base();Base();virtual void showA();virtual void showB(); 多态的条件C+中的函数调用默认不使用动态绑定。要触发动态绑定,满足两个条件:第一,只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定;第二,必须通过基类类型的引用或指针进行函数调用。要理解这一要求,需要理解在使用继承层次中某一类型的对象的引用或指针时会发生什么。 虚函数的特性会被继承当基类中的某个函数被声明为虚函数,派生类中的函数也自动为虚函数。 使析构函数成为虚函数如果将析构函数声明为虚函数,那么编译器会把所有的析构函数都看成具有相同名字(尽管实际上它们不具有相同名字) 。 只有类的成员函数才能声明为虚函数 静态成员函数不能是虚函数 内联函数不能是虚函数 构造函数不能是虚函数+size*Window Area-size :Area

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报