网站大量收购闲置独家精品文档,联系QQ:2885784924

类与对象的构造设计.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类与对象的构造设计

第6章 类与对象的构造设计 面向对象的程序又将对象划分成类,类定义了属于 该类的所有对象的共同特征,它可作为生成对象的一种 模板,使对象成为类的实例。 从语言角度来说,类是一种新的数据类型,是一种 用户自定义类型,而对象是具有这种类型的变量。类是 一种将数据和作用于这些数据上的操作组合在一起的复 杂数据类型,是可重用的基本单元。 总之,类和对象是面向对象程序设计的核心支柱, 利用它们可以实现数据的抽象、数据和操作的封装以及 信息的隐蔽,是实现其他许多高级特性的基础。因此, 我们应该学习类和对象的定义、设计和实现方法。通过 面向对象程序设计实践进一步学习和领会面向对象的基 本思想和方法技术。 本章的学习内容 学习和掌握类的定义方法和对象的创建方法。 学习和掌握类的成员访问权限控制方法。 学习和掌握构造函数与析构函数的用法 学习和掌握类的封装、可见性和引用的操作方法 了解结构、联合的面向对象特性和用法。 3.1 类的构造和对象的创建 3.1.1 类设计的基本原则 在面向对象的程序中,客观系统自然被描绘成一系列完全自治、封装的对象,并将这些对象划分成类,类定义了属于该类的所有对象的共同特征,它可作为生成对象的一种模板,使对象成为类的实例。 从整体功能层面谈类设计,有如下三条原则: ·单一功能原则(Single Responsibility Principle)   一个class就其整体应该只提供单一的服务。如果一个class提供多样的服务,那么就应该把它拆分,反之,如果一个在概念上单一的功能却由几个class负责,这几个class应该合并。 ·开放/封闭原则(Open/Close Principle)   一个设计并实现好的class,应该对扩充开放,而对修改封闭。即,这个class应该是允许扩充的,但不允许修改。如果需要功能上的扩充,一般来说应该通过添加新类实现,而不是修改原类的代码。添加新类不单可以通过直接继承,也可以通过组合。 ·最小惊讶原理(Least Surprise Principle)  在重载函数或者用子类实现父类虚函数时,应该基本维持函数原来所期望的功能。 3.1.2 类的说明和对象的定义 类定义的一般格式如下: class class_name { private: //私有成员,缺省默认值 private variables and function; protected: //保护成员 protected variables and function; public: //公有成员 public variables and function; } object_list; 说明:(1)class_name是类名; (2)关键字public、private和protected是访问权 限修饰符,表示三种不同的访问权限。 (3)类的成员既可包括变量,又可包括函数。 (4) object_list为可选项,用户可在说明类之后, 根据需要再定义类的对象。例如: class_name object_list; 【例3.1】 类的说明与对象定义实例 #include iostream.h const int SIZE=10; class stack //类名很重要 { private:   //私有成员部分 char stk[SIZE]; int tos; public:    //公有成员部分 void init(); void push(char ch); char pop(); }; // 初始化成员变量tos void stack :: init() { tos=0; } //把一个字符压入栈中 void stack :: push(char ch) { if(tos==SIZE) { coutStack is full.\n; return; } stk[tos]=ch; tos++; } // 弹出一个字符 char stack :: pop() { if (tos==0) { coutStack is empty.\n; return 0; } tos--; return stk[tos]; } int main() { stack s1,s2;    int i ; s1.init();    s2.init();    s1.pus

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档