随着处理机速度到达1GHz, 以及存储设备有几千兆位,个人计算机和服务器对I/O的要求是很苛刻的。因此,对开发一种高速接口来替换SCSI和其他小型系统的I/O接口一直存在着很大的兴趣。其结果是高性能串行总线的IEEE标准1394, 通常称为火线。
火线比SCSI和其他I/O接口有许多优点。它的速度快、价格便宜而且容易实现。事实上,火线不仅在计算机系统,而且在消费者电子产品,如数码相机、VCR和电视机都很受欢迎。在这些产品中,火线用于传送视频图像,这些视频图像正在越来越多地来自于(诸如数码相机,数码摄相机等)数字化设备。
火线接口的强项之一是采用串行传送(每次一位)而不是并行传送。并行接口,如SCSI,需要较多的线,这意味着较宽、较贵的电缆以及较宽、较贵的带有更多引脚(要弯曲或断开)的连接器。一条带有多根线的电缆需要屏蔽保护以避免线之间的电干扰。
此外,恰恰在计算机增加计算能力和I/O要求时,它们的体积正变得更小。手提式和袖珍式计算机给连接器很小的空间,但却需要高速数据传输率来处理图象和视频。
火线的目的是提供单个接口,带有简单的连接器,它能够通过单个端口来处理许多设备,因此,鼠标、激光打印机、SCSI、外部磁盘驱动器、声音,和局域网连接都能用这单个连接器所取代。这种连接器是受Nintendo Gameboy中所用的连接器的启发。它的使用是如此方便,用户只要在机器背后插入即可。
火线使用菊花链配置,从单个端口可连接多达63个设备。而且多达1022条火线
本材料版权归八舍109所有,任何人以任何形式使用请自觉支付版税!
总线能用桥接器互连,使得系统能支持所需要那么多的外设。
火线提供大家所知的热插入,它不需要关闭计算机系统或重新配置系统就能连接和断开外设。
3.1 C++和面向对象的程序设计
一些面向对象的程序设计概念在语言间渗透。例如微软Quick Pascal是允许使用对象的第一批语言中的一个。C++有什么使得它是一种适合于开发面向对象程序的语言?如同先前所提到的,答案是类(class)数据类型。给该语言建立对象之能力的是建立在C结构类型之上的C++类(class)类型。还有,C++把另外几个特性引入面向对象的程序设计,这些特性并不包含在简单地利用对象的其他一些语言中。C++的优点包括强类型、运算符重载和较少地强调预处理。的确你能使用其他一些产品和采用其他一些语言来进行面向对象的程序设计,但是采用C++的众多好处是显著的。这是为面向对象的程序设计而设计的语言,并非(现有语言的)式样翻新。
面向对象的程序设计是一种程序设计技术,使得你能把一些概念看作各种各样的对象。通过使用对象,你能表示要被执行的任务、它们之间的相互作用和必须观察的某些给定的条件。一种数据结构经常形成某个对象的基础;因此,在C或C++中,结构类型能形成某种基本对象。与对象的通信,如前提到的,能通过使用消息来完成。消息的使用类似于在面向过程的程序中对函数的调用。当某对象收到一个消息时,包含在该对象内的一些方法作出响应。方法类似于面向过程程序设计的函数。然而,方
本材料版权归八舍109所有,任何人以任何形式使用请自觉支付版税!
法是对象的一部分。
C++的类是对C和C++结构类型的扩充,并且形成了面向对象程序设计所需要的抽象数据类型。类能包含紧密相关的一些条目,它们共享一些属性。更正式地说,对象只不过是类的实例。
最终,应该出现包含很多对象类型的类库,你能使用这些对象类型的实例去拼合程序代码。
在你更详细地考察这些术语之前,一个好的主意是熟悉与C++和面向对象程序设计相关的另外几个概念,如同下面几节所述的。
封装
封装指的是每个对象把它的成员数据和成员函数(方法)组合成单个结构的方式。
图3-1举例说明了你如何能组合数据域和方法以建立对象。
典型地,一个对象的描述是一个C++类的一部分, 且包括对该对象内部结构的描述、该对象如何与其他对象相关,以及把该对象的功能细节和该类的外部相隔离的某种形式的保护。C++类结构做到了所有这些。
在一个C++类中,你使用私有的、公共的和/或受保护的描述符来控制对象的功能细节。在面向对象的程序设计中,公共(public)部分一般用于接口信息(方法),使得该类可在各应用中重用。如果数据或方法被包含在公共部分,它们在该类外部也可用。类的私有部分把数据或方法的可用性局限于该类本身。包含数据或方法的受保护 本材料版权归八舍109所有,任何人以任何形式使用请自觉支付版税!
部分被局限于该类和任何派生子类。
类层次结构
C++类实际上用作创建对象的模板或模式。从类描述形成的对象都是该类的实例。开发类层次结构是可能的,其中有一个主类和几个子类。在C++中, 做这事的基础是派生类。父类表示更一般化的任务,而派生子类执行一些特定的任务。例如,早先讨论的林肯类也许包含整个林肯系列公共的数据和方法,诸如引擎、检测仪表、电池、制动能力和操纵。从父类派生的子类,诸如Tour Car、Mark Ⅷ和Continental可能包含该类专用的一些款项。例如,1995 Continental是该系列中唯一具有主动悬架系统的汽车。
继承
面向对象程序设计中的继承使得一个类能继承某对象类的一些性质。父类用作派生类的模式,且能以几种方式被改变(在下一章中你将了解成员函数能被重载、新的成员函数能被添加,并且成员存取特权能被改变)。如果某个对象从单个父类继承其属性,称为单继承。如果某个对象从多个父类继承属性,便称为多继承。继承是一个重要概念,因为它使得无须对代码做大的改变就能重用类定义。继承鼓励重用代码,因为子类是对父类的扩充。
多态性
与类层次结构相关的另一个重要的面向对象概念是公共消息能被发送到诸父类对
本材料版权归八舍109所有,任何人以任何形式使用请自觉支付版税!
象和所有派生子类对象。按正式的术语,这称为多态性。
多态性使每个子类对象能以一种对其定义来说适当的方式对消息格式作出响应。试设想收集数据的一个类层次结构。父类可能负责收集某个个体的姓名、社会安全号、职业和雇佣年数,那末你能使用子类来决定根据职业将添加什么附加信息。一种情况,一个管理职位会包括年薪,而另一种情况,销售员职位会包括小时工资和回扣信息。因此,父类收集一切子类公共的通用信息,而子类收集与特定工作描述相关的附加信息。多态性使得公共的数据收集消息能被发送到每个类。父类和子类两者都以对该消息是恰当的方式作出响应。多态性促进现有代码的可扩充性。
虚函数
多态性赋予对象以当对象的精确类型还未知时响应来自例行程序之消息的能力。在C++中这能力是迟绑定的结果。使用迟绑定,地址在运行时刻动态地确定,而不是如同传统的编译型语言在编译时刻静态地确定。这静态的(固定的)方法往往称为早绑定。函数名被替换为存储地址。你使用虚函数来完成迟绑定。在随后的派生类将通
过重定义函数之实现而重载该函数时,在父类中定义虚函数。当你使用虚函数时,消息不是直接传给对象,而是作为指向对象的指针传送。
虚函数利用了地址信息表, 该表在运行时刻使用构造符而被初始化。一个构造符每当创建它的类的一个对象时被调用。这里构造符的工作是把虚函数与地址信息表链接,在编译运转期间虚函数的地址是未知的;相反,给出的是(在运行时刻确定的)
本材料版权归八舍109所有,任何人以任何形式使用请自觉支付版税!
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机专业英语翻译(3)在线全文阅读。
相关推荐: