网上书店管理系统外文资料翻译中文版.doc
《网上书店管理系统外文资料翻译中文版.doc》由会员分享,可在线阅读,更多相关《网上书店管理系统外文资料翻译中文版.doc(18页珍藏版)》请在咨信网上搜索。
1、毕业设计(论文)外文资料翻译系 : 信息工程学院 专 业: 计算机科学与技术 姓 名: xxxxxx 学 号: xxxxxxxxx (用外文写)外文出处: Thinking.In。Java。4th。Edition 附 件: 1.外文资料翻译译文;2.外文原文. 指导教师评语: 签名: 2011年 月 日附件1:外文资料翻译译文一切都是对象“如果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界”.Ludwig Wittgenstein(18891951)“尽管以C+为基础,但Java是一种更纯粹的面向对象程序设计语言”。 无论C+还是Java都属于杂合语言.但在Java中,设计者觉得这
2、种杂合并不像在C+里那么重要。杂合语言允许采用多种编程风格;之所以说C+是一种杂合语言,是因为它支持与C语言的向后兼容能力。由于C+是C的一个超集,所以包含的许多特性都是后者不具备的,这些特性使C+在某些地方显得过于复杂。 Java语言首先便假定了我们只希望进行面向对象的程序设计.也就是说,正式用它设计之前,必须先将自己的思想转入一个面向对象的世界(除非早已习惯了这个世界的思维方式)。只有做好这个准备工作,与其他OOP语言相比,才能体会到Java的易学易用。在本章,我们将探讨Java程序的基本组件,并体会为什么说Java乃至Java程序内的一切都是对象。1.1 用句柄操纵对象每种编程语言都有自
3、己的数据处理方式.有些时候,程序员必须时刻留意准备处理的是什么类型。您曾利用一些特殊语法直接操作过对象,或处理过一些间接表示的对象吗(C或C+里的指针)?所有这些在Java里都得到了简化,任何东西都可看作对象,。因此,我们可采用一种统一的语法,任何地方均可照搬不误。但要注意,尽管一切都“看作”对象,但操纵的标识符实际是指向一个对象的“句柄”(Handle)。在其他Java参考书里,还可看到有的人将其称作一个“引用,甚至一个“指针。可将这一情形想象成用遥控板(句柄)操纵电视机(对象)。只要握住这个遥控板,就相当于掌握了与电视机连接的通道。但一旦需要“换频道”或者“关小声音,我们实际操纵的是遥控板
4、(句柄),再有遥控板自己操纵电视机(对象)。如果要在房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电视机。此外,即使没有电视机,遥控板亦可独立存在.也就是说,只是由于拥有一个句柄,并不表示必须有一个对象同它连接。所以如果想容纳一个词或句子,可创建一个String句柄:String s;但这里创建的只是句柄,并不是对象.若此时向s发送一条消息,就会获得一个错误(运行期)。这是由于s实际并未与任何东西连接(即“没有电视机).因此,一种更安全的做法是:创建一个句柄时,记住无论如何都进行初始化:String s = “zyp;然而,这里用到了Java语言的一个特性:字串可以用加引
5、号的文本初始化。通常,必须为对象使用一种更通用的初始化方法。1。2 有对象都必须创建创建句柄时,我们希望它用一个新对象连接。通常用new关键字达到这一目标.New的意思是:“把我变成这些对象的一种新类型”.所以在上面的例子中,可以说:String s = new String(“asdf”);它不仅指出“给我一个新的字符串”,也通过提供一个初始字符串,指出了“如何生成这个新字串”. 当然,字串(String)并非唯一的类型.Java配套提供了数量众多的现成类型。对我们来讲,最重要的就是记住能自行创建类型。事实上,这应是Java程序设计的一项基本操作,是继续本书后余部分学习的基础。1.2。1 存
6、储到什么地方程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:(1)寄存器.这是最快的保存区域,因为它位于不同于其他存储区的地方-处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹(另一方面,C和C+允许您向编译器建议寄存器的分配方式)。(2)堆栈.驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。
7、创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”.这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里-特别是对象句柄,但Java对象并不存储于其中.(3)堆。一种通用的内存池(也在RAM区域),用于存放所有的Java对象。和堆栈不同,“内存堆或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长时间。因此,用堆保存数据时会得到更大的灵活性.要求创建一个对象时,只需要用new命令编制相关的代码即可。执行这些代码时,会在堆里自动
8、进行数据的保存。当然,为达到这种灵活性,必然付出一定的代价:在堆里分配存储空间时会花掉更长的时间(如果确实可以在Java中像在C+中一样在栈中创建对象).(4)常量存储。常数值通常直接置于程序代码内部。这样做是安全的,因为他们永远都不会改变。有的常数需要严格地保护,所以可考虑将他们置入只读存储器(ROM)。(5)非RAM存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外.其中两个最重要的例子便是“流式对象”和“持久化对象”。对于流式对象,对象会转化成字节流,通常会发给另一台机器。而对于持久化对象,对象保存在磁盘中.即使程序中止运行,他们仍可保持自己的状态不变。对
9、于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其他媒体中。一旦需要,甚至能将他们恢复成普通的、基于RAM的对象。Java 提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对数据库中存储和读取对象信息的支持。1.2.2 特例:基本类型在程序设计中经常用到一系列类型,他们需要特殊对待。可以把他们想像成“基本类型。之所以特殊对待,是因为new将对象存储在“堆”里,故用new创建一个对象特别是小的、简单的变量,往往不是很有效.因此,对于这些类型,Java采取与C和C+相同的方法。也就是说,不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个
10、变量直接存储“值”,并置于堆栈中,因此更加高效。Java要确定每种基本类型所占存储空间的大小。他们的大小并不像其他大多数语言那样随机器硬件架构的变化而变化。这种所占存储空间大小的不变性是Java程序比用其他大多数语言编写的程序更具可移植性的原因。所有数值类型都有正负号,所以不要去寻找无符号的数值类型。Boolean类型所占存储空间的大小没有明确指定,仅定义为能够取字面值true或false。基本类型具有的包装器类,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。例如:Char c = x;Character ch = new Character(c);也可以这样用:Character
11、 ch = new Character(x);包装基本类型的原因将在以后的章节中说明.高精度数字Java提供了两个用于高精度计算的类:BigInteger 或 BigDecimal.虽然它们大体上属于“包装器类”的范畴,但二者都没有对应的基本类型。不过,这两个类包含的方法,提供的操作与对基本类型所能执行的操作相识。也就是说,能作用于int或float的操作,也能作用于BigInteger或Big Decimal。只不过必须以方法调用方式取代运算符方式来实现。由于这么做复杂了许多,所以运算速度会比较慢。在这里,我们以速度换取了精度。BigInteger支持任意精度的整数。也就是说,在运算中,可以
12、准确地表示任何大小的整数值,而不会丢失任何信息。BigDecimal支持任何精度的定点数,例如,可以用它进行精确的货币计算。关于调用这两个类的构造器和方法的详细信息,请查阅JDK文档。1。2.2 Java中的数组几乎所有的程序设计语言都支持数组.在C和C+中使用数组是很危险的,因为C和C+中的数组就是内存块.如果一个程序要访问其自身内存块之外的数组,或在数组初始化前使用内存(程序中常见的错误),都会产生难以预料的后果.Java的主要目标之一是安全性,所以许多在C和C+里困扰程序员的问题在Java里不会再出现呢。Java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组
13、上少量的内存开销及运行时的下标检查为代价的。但由此换来的是安全性和效率的提高,因此付出的代价是值得的(并且Java有时可以优化这些操作)。当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动初始化为一个特定值,该值拥有自己的关键字null。一旦Java看到null,就知道这个引用还没有指向某个对象.在使用任何引用前,必须为其指定一个对象;如果试图使用一个还是null的引用,在运行时将会报错。因此,常犯的数组错误在Java中就可以避免.还可以创建用来存放基本数据类型的数组。同样,编译器也能确保这种数组的初始化,因为它会将这种数组所占的内存全部置零.数组将在以后的章节中详细讨论
14、.1。3永远不需要销毁对象 在大多数程序设计语言中,变量生命周期的概念,占据了程序设计工作中非常重要的部分。变量需要存活多长时间?如果想要销毁对象,那什么时刻进行呢?变量生命周期的混乱往往会导致大量的程序bug,本节将介绍Java是怎样替我们完成所有的清理工作,从而大大简化这个问题的。1.3.1 作用域大多数过程型语言都有作用域(scope)的概念.作用域决定了在其内定义的变量名的可见性和生命周期。在C、C+和Java中,作用域由花括号的位置决定。例如:int x = 12; /Only x availableint q = 96; /both x q available/only x ava
15、ilable/q is “out of scope”在作用域里定义的变量只可用于作用域结束之前。任何位于“/之后到行末的文字都是注释。缩排格式使Java代码更易于阅读。由于Java是一种自由格式(freeform)的语言,所以,空格、制表符、换行都不会影响程序的执行结果。尽管以下代码在C和C+中是合法的,但是在Java中却不能这样写:int x = 12;int x = 96; /illegal编译器将会报告变量x已经定义过。所以,在C和C+里将一个较大作用域的变量“隐藏起来的做法,在Java里是不允许的.因为Java设计者认为这样做会导致程序混乱。1。3。2 对象的作用域Java对象不具备和
16、基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外.所以假如你采用代码String s = new String(“a string);/ End of scope引用s在作用域终点就消失了。然而,s指向的String对象仍继续占据内存空间。在这一小段代码中,我们无法在这个作用域之后访问这个对象,因为对它唯一的引用已超出了作用域的范围。在后继章节中,读者将会看到:在程序执行过程中,怎样传递和复制引用。事实证明,由new创建的对象,只要你需要,就会一直保留下去。这样,许多C+编程问题在Java中就完全消失了。在C+中,你不仅必须要确保对象的保留时间与你需要这些对象的
17、时间一样长,而且还必须在你使用完它们之后,将其销毁。这样便带来一个有趣的问题.如果Java让对象继续存在,那么靠什么才能防止这些对象填满内存空间,进而阻塞你的程序呢?这正是C+里可能会发生的问题。这也是Java神奇之所在。Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便供其他新的对象使用。也就是说,你根本不必担心内存回收的问题。你只需要创建对象,一旦不再需要,他们就会自行消失。这样做就消除了这类编程问题(即“内存泄漏”),这是由于程序员忘记释放内存而产生的问题。1。4 创建新的数据类型:类如果一切都是对象,那么是什么决定
18、了某一类对象的外观与行为呢?换句话说,是什么确定了对象的类型?你可能期望有一个名为“type”的关键字,当然它必须还要有相应的含义。然而,从历史发展角度来看,大多数面向对象的程序设计语言习惯用关键字class来表示“我准备告诉你一种新类型的对象看起来像什么样子”。class这个关键字(以后会频繁使用,本书以后就不再用粗体字表示)之后紧跟着的是新类型的名称.例如:class ATypeName /*Class body goes here*/这就引入了一种新的类型,尽管类主体仅包含一条注释语句(星号和斜杠以及其中的内容就是注释,本章后面再讨论)。因此,你还不能用它做太多的事情。然而,你已经可以用
19、new来创建这种类型的对象。ATypeName a = new ATypeName();但是,在定义它的所有方法之前,还没有办法能让它去做更多的事情(也就是说,不能向它发送任何有意义的消息).1。4.1 字段和方法一旦定义了一个类(在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象),就可以在类中设置两种类型的元素:字段(有时被称作数据成员)和方法(有时被称作成员函数)。字段可以是任何类型的对象,可以通过其引用与其进行通信;也可以是基本类型中的一种.如果字段是对某个对象的引用,那么必须初始化该引用,以便使其与一个实际的对象(如前所述,使用new来实现)相关联。每个
20、对象都有用来存储其字段的空间;普通字段不能在对象间共享.下面是一个具有某些字段的类:Class DataOnlyint i;double d;Boolean b;尽管这个类除了存储数据之外什么也不能做,但是仍旧可以像下面这样创建它的一个对象;DataOnly data = new DataOnly();可以给字段赋值,但首先必须知道如何引用一个对象的成员.具体的实现为:在对象引用的名称之后紧接着一个句点,然后再接着是对象内部的成员名称:objectReference。menber例如:data。i = 47;data。d = 1。1;data。b = false;想修改的数据也有可能位于对象所
21、包含的其他对象中。在这种情况下,只需要再使用连接句点即可。例如:MyPlane.leftTank.capacity = 100;DataOnly类除了保存数据外没别的用处,因为它没有任何成员方法。如果想了解成员方法的运行机制,就得先了解参数和返回值的概念,稍后将对此作简略描述。基本成员默认值若累的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值,当变量作为类的成员使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化(C+没有此功能),防止产生程序错误.但是,这些初始值对你的程序来说,可能是不正确的,甚至是不合法的。所以最好明确地对变量进行初始
22、化.然而上述确保初始化的方法并不适用于“局部”变量(即非某个类的字段).因此如果在某个方法定义中有int x; 那么变量x得到的可能是任意值(与C和C+中一样),而不会被自动初始化为零。所以在使用x前,应先对其赋一个适当的值。如果忘记了这么做,Java会在编译时返回一个错误。告诉你此变量没有初始化,这正是Java优于C+的地方。(许多C+编译器会对未初始化变量给予警告,而Java则视为是错误)。1.5 方法、参数和返回值许多程序设计语言(像C和C+)用函数这个术语来描述命名子程序;而在Java里却常用方法这个术语来表示“做某些事情的方式”。实际上,继续把它看作是函数也无妨。尽管这只是用词上的差
23、别,但本书将沿用Java的惯用法,即用术语“方法”而不是“函数”来描述.Java的方法决定了一个对象能够接收什么样的消息.方法的基本组成部分包括:名称、参数、返回值和方法体。下面是它最基本的形式:ReturnType methodName(/Argument list/)/ Method body*/返回类型描述的是在调用方法之后从方法返回的值.参数列表给出了要传递方法的信息的类型和名称。方法名和参数列表(它们合起来被称为“方法签名)唯一地标识出某个方法。Java中的方法只能作为类的一部分来创建。方法只有通过对象才能被调用,且这个对象必须能执行这个方法调用。如果试图在某个对象上调用它并不具备的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 书店 管理 系统 外文 资料 翻译 中文版
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。