面向对象程序设计4.pptVIP

  • 3
  • 0
  • 约1.13万字
  • 约 64页
  • 2019-08-30 发布于湖北
  • 举报
* * * * 如果希望程序在对象被删除前的时刻自动完成某些事情,可以写入析构函数中。 * * * * * * * 通过对复杂对象进行分解、抽象,使我们能够将一个复杂对象理解为简单对象的组合。 分解得到复杂对象的部件对象,这些部件对象比它高层的复杂对象更容易理解和实现。然后由这些部件对象来“装配”复杂对象。 * * * * * 不带参数的构造函数称为缺省构造函数。 * * * * 面向对象程序设计4. 谢谢 * * * 机制:将解决问题的重点放在如何实现细节过程方面,将数据与操作这些数据的函数分开,围绕功能实现或操作流程来设计程序。 形式:主模块+若干个子模块(main()+子函数) 它们之间以数据作为连接 特点:自顶向下,逐步求精——功能分解 程序=算法+数据结构 缺点:由于数据与操作这些数据的代码(函数)相分离,一旦数据改变,则需要重新编写函数。程序功能扩充时,需大量修改函数,效率低,是手工作坊式的编程。 * 面向对象的观点:认为自然界是由一组彼此相关并能相互通信的实体(对象)所组成。 面向对象的程序设计方法:使用面向对象的观点来描述现实问题,然后用计算机语言来模仿并处理该问题。 要求:描述或处理问题时应高度概括、分类、和抽象。 目的:实现软件设计的产业化。 * * * 注意:同一问题可能有不同的抽象结果——根据解决问题的要求不同,产生的抽象成员可能不同 * 外部接口:此对象利用它与其它对象发生联系。 特定的访问权限:在对象外部不能访问或修改受保护的内部实现细节。 * * 关于继承与派生,以后会详细介绍。 * 以后会详细介绍。 * 函数是将逻辑上相关的语句与数据封装,用于完成特定的功能。 而类则是逻辑上相关的函数与数据的封装,它是对所要处理的问题的描述。 * * * * * * * * 将函数体放在类的声明中。 * 在类外实现成员函数,使用inline关键字。(接下页) * * * * * 给各成员数据赋初值。 * 作用:使用一个对象(参数指定的对象),去初始化一个正在被建立的同类型对象 * * * 构造函数的实现: Clock::Clock(int NewH, int NewM, int NewS) { Hour=H; Minute=M; Second=S; } 建立对象时构造函数的作用: void main() { Clock c (0,0,0); //隐含调用构造函数,将初始值作为实参。 c.ShowTime(); } * 拷贝构造函数 拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。 class 类名 { public : 类名(形参);//构造函数 类名(类名 对象名);//拷贝构造函数 ... }; 类名:: 类名(类名 对象名)//拷贝构造函数的实现 { 函数体 } 构造函数和析构函数 * 例4-2 拷贝构造函数举例 class Point { public: Point(int xx=0,int yy=0){X=xx; Y=yy;} Point(Point p); int GetX() {return X;} int GetY() {return Y;} private: int X,Y; }; 构造函数和析构函数 Point::Point (Point p) { X=p.X; Y=p.Y; cout拷贝构造函数被调用endl; } * 例4-2 拷贝构造函数举例 当用类的一个对象去初始化该类的另一个对象时系统自动调用它实现拷贝赋值。 void main(void) { Point A(1,2); Point B(A); //拷贝构造函数被调用 coutB.GetX()endl; } 构造函数和析构函数 * 例4-2拷贝构造函数举例 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。例如: void fun1(Point p) { coutp.GetX()endl; } void main() { Point A(1,2); fun1(A); //调用拷贝构造函数 } 构造函数和析构函数 * 拷贝构造函数(例4-2) 当函数的返回值是类对象时,系统自动调用拷贝构造函数。例如: Point fun2() { Point A(1,2); return A; //调用拷贝构造函数 } void main() { Point B; B=fu

文档评论(0)

1亿VIP精品文档

相关文档