- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
引入面向对象方法
第章 引入面向对象方法
图1-3 动物学中的继承性
图1-3中,狗类是从哺乳动物类派生出来的,而柯利狗类又是从狗类派生出来的,这就构成了类的层次。哺乳动物类是狗类的直接基类,是柯利狗类的间接基类,柯利狗不但继承它的直接基类的所有特性,还继承它的所有间接基类的特征。
面向对象程序设计为什么要提供继承机制?或者说继承有什么作用?继承的作用有两个:一是避免公用代码的重复开发,减少代码和数据冗余;二是通过增强一致性来减少模块间的接口和界面。
如果没有继承机制,那么每次软件开发都要从零开始,并且类的开发者在构造类时“各自为政”,使类与类之间没有什么联系,分别是一个个独立的实体。继承使程序不再是毫无关系的类的堆砌,而是具有良好的结构。
继承机制为程序员提供了组织、构造和重用类的一种手段。继承使得基类的属性和操作被派生类重用,在派生类中只需描述其基类中没有的属性和操作即可。这样就避免了公用代码的重复开发,增加了程序的可重用性,减少了代码和数据的冗余。
继承机制是面向对象方法的关键技术。这是因为类的继承性所构成的层次关系和人类认识客观世界的过程和方法吻合,从而使得人们能够用和认识客观世界一致的方法来设计软件。
④ 多态性
面向对象程序设计的另一个重要特性是多态性。所谓多态,是指一个名字有多种语义。下面我们考察多态性问题的一个类比问题。假设一辆汽车停在了属于别人的车位上,司机可能会听到这样的要求:请把车挪开。司机在听到请求后,所做的反应应该是把车开走;在家里,一把小椅子挡住了孩子的去路,她可能会请求妈妈:请把小椅子挪开,妈妈过去搬起小椅子,放到一边。在这两件事情中,司机和妈妈的工作都是挪开一样东西,但是他们在听到请求以后的行为是截然不同的。对于挪开这个请求,还可以有更多的行为与之对应。“挪开”从字面上看是相同的,但由于作用的对象不同,操作的方法也就不同。
与此类似,面向对象程序设计中的多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。例如,有一个窗口(Window)类对象,还有一个扑克牌(PlayingCard)类对象,现在对它们都发出“移动”的消息,“移动”操作在Window类对象和PlayingCard类对象上可以有不同的行为。
C++语言支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是通过虚函数来实现的(详细内容见第7章和第9章)。多态性增强了软件的灵活性和重用性,为软件的开发和维护提供了极大的便利,尤其是采用了虚函数和动态联编机制后,允许用户以更为明确、易懂的方式去建立通用的软件。
(5)面向对象程序设计的优点
面向对象程序设计方法是软件开发史上的一个重要里程碑。这种方法从根本上改变了人们以往设计软件的思维方式,程序员将精力集中于要处理对象的设计和研究上,极大地减少了软件开发的复杂性,提高了软件开发的效率。面向对象程序设计主要具有以下优点。
① 真实的建模
因为我们生活在对象世界中,面向对象程序设计方法能更精确地模仿现实世界,符合人们习惯的思维方法,便于分解大型的、复杂多变的问题。
② 可提高程序的可重用性
重复使用一个类,可以方便地构造出软件系统,加上继承机制,极大地提高软件的开发效率。
③ 可改善程序的可维护性
用传统程序设计语言开发出来的软件很难维护,这是长期困扰人们的一个严重问题,是软件危机的突出表现。但面向对象程序设计方法所开发的软件可维护性较好。在面向对象程序设计中,对对象的操作只能通过消息传递来实现,所以只要消息模式即对应的方法界面不变,方法体的任何修改都不会导致发送消息的程序的修改,这显然为程序的维护带来了方便。此外,类的封装和信息隐藏机制使得外界对其中的数据和程序代码的非法操作成为不可能,这也就大大地减少了程序的错误率。
由于面向对象程序设计具有上述优点,它是目前解决软件开发面临难题的最有希望、最有前途的方法之一。
1.2 C++语言的产生和特点
1.2.1 C++语言的产生
FORTRAN语言是世界上第一种计算机高级语言,诞生于1954年,其后出现了多种计算机高级语言,其中使用最广泛、影响最大的是BASIC语言和C语言。
BASIC语言于1964年在FORTRAN语言的基础上简化而成,它是为初学者设计的小型高级语言。C语言是一种高效的编译型结构化程序设计语言,于1972年由美国贝尔实验室的Dennis Ritchie研制成功。C语言最初用作UNIX操作系统的描述语言,其功能强、性能好,能像汇编语言那样高效、灵活,又支持结构化程序设计。随着UNIX操作系统的广泛应用,C语言赢得了程序员们的青睐,到了20世纪80年代已经广为流行,成为一种应用广泛的程序设计语言。
但C语言也存在如下局限性。
(1)C语言类型检查机制较弱,这使得程序中的一些错误不能在编译
文档评论(0)