仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 676|回复: 18
打印 上一主题 下一主题

[学习教程] 发布一篇汇合与承继器

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
针对一个特定成绩的办理,假如事前不晓得必要几个对象,大概它们的延续工夫有多长,那末也不晓得怎样保留那些对象。既然云云,如何才干晓得那些对象请求几空间呢?事前上基本没法提早晓得,除非进进运转期。
在面向对象的计划中,年夜多半成绩的办理举措仿佛都有些草率——只是复杂地创立另外一品种型的对象。用于办理特定成绩的新型对象包容了指向其他对象的句柄。固然,也能够用数组来做一样的事变,那是年夜多半言语都具有的一种功效。但不克不及只看到这一点。这类新对象一般叫作“汇合”(亦叫作一个“容器”,但AWT在分歧的场所使用了这个术语,以是本书将一向相沿“汇合”的称号。在必要的时分,汇合会主动扩大本人,以便顺应我们在个中置进的任何工具。以是我们事前不用晓得要在一个汇合里容下几工具。只需创立一个汇合,今后的事情让它本人卖力好了。
侥幸的是,计划优秀的OOP言语都配套供应了一系列汇合。在C++中,它们是以“尺度模板库”(STL)的情势供应的。ObjectPascal用本人的“可视组件库”(VCL)供应汇合。Smalltalk供应了一套十分完全的汇合。而Java也用本人的尺度库供应了汇合。在某些库中,一个惯例汇合即可满意人们的年夜多半请求;而在另外一些库中(出格是C++的库),则面向分歧的需求供应了分歧范例的汇合。比方,能够用一个矢量一致对一切元素的会见体例;一个链接列表则用于包管一切元素的拔出一致。以是我们能依据本人的必要选择得当的范例。个中包含集、行列、散列表、树、仓库等等。
一切汇合都供应了响应的读写功效。将某样工具置进汇合时,接纳的体例是非常分明的。有一个叫作“推”(Push)、“增加”(Add)或其他相似名字的函数用于做这件事变。但将数据从汇合中掏出的时分,体例却其实不老是那末分明。假如是一个数组情势的实体,好比一个矢量(Vector),那末大概能用索引运算符或函数。但在很多情形下,如许做常常会无功而返。别的,单选定函数的功效长短常无限的。假如想对汇合中的一系列元素举行利用或对照,而不是仅仅面向一个,这时候又该怎样办呢?
举措就是利用一个“持续器”(Iterator),它属于一种对象,卖力选择汇合内的元素,并把它们供应给承继器的用户。作为一个类,它也供应了一级笼统。使用这一级笼统,可将汇合细节与用于会见谁人汇合的代码断绝开。经由过程承继器的感化,汇合被笼统成一个复杂的序列。承继器同意我们遍历谁人序列,同时毋需体贴基本布局是甚么——换言之,不论它是一个矢量、一个链接列表、一个仓库,仍是其他甚么工具。如许一来,我们就能够天真地改动基本数据,不会对程序里的代码形成搅扰。Java最入手下手(在1.0和1.1版中)供应的是一个尺度承继器,名为Enumeration(列举),为它的一切汇合类供应服务。Java1.2新增一个更庞大的汇合库,个中包括了一个名为Iterator的承继器,能够做比老式的Enumeration更多的事变。
从计划角度动身,我们必要的是一个全功效的序列。经由过程对它的利用,应当能办理本人的成绩。假如一品种型的序列便可满意我们的一切请求,那末完整没有需要再换用分歧的范例。有两方面的缘故原由促使我们必要对汇合作出选择。起首,汇合供应了分歧的接口范例和内部举动。仓库的接口与举动与行列的分歧,而行列的接口与举动又与一个集(Set)或列表的分歧。使用这个特性,我们办理成绩时便有更年夜的天真性。
其次,分歧的汇合在举行特定操纵时常常有分歧的效力。最好的例子即是矢量(Vector)和列表(List)的区分。它们都属于复杂的序列,具有完整分歧的接口和内部举动。但在实行一些特定的义务时,必要的开支倒是完整分歧的。对矢量内的元素举行的随机会见(存取)是一种常时操纵;不管我们选择的选择是甚么,必要的工夫量都是不异的。但在一个链接列表中,若想各处挪动,并随机选择一个元素,就需支付“惨痛”的价值。并且假定某个元素位于列表较远的中央,找到它所需的工夫也会长很多。但在另外一方面,假如想在序列中部拔出一个元素,用列表就比用矢量划算很多。这些和其他操纵都有分歧的实行效力,详细取决于序列的基本布局是甚么。在计划阶段,我们能够先从一个列表入手下手。最初调剂功能的时分,再依据情形把它换成矢量。因为笼统是经由过程承继器举行的,以是能在二者便利地切换,对代码的影响则显得微乎其微。
最初,记着汇合只是一个用来安排对象的蕴藏所。假如谁人蕴藏所能满意我们的一切必要,就完整没需要体贴它详细是怎样完成的(这是年夜多半范例对象的一个基础观点)。假如在一个编程情况中事情,它因为其他要素(好比在Windows下运转,大概由渣滓搜集器带来了开支)发生了内涵的开支,那末矢量和链接列表之间在体系开支上的差别就也许不是一个年夜成绩。我们大概只必要一品种型的序列。乃至能够设想有一个“完善”的汇合笼统,它能依据本人的利用体例主动改动下层的完成体例。
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-21 11:21:27 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-21 11:21:27 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
乐观 该用户已被删除
地板
发表于 2015-1-31 12:32:06 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
透明 该用户已被删除
5#
发表于 2015-2-3 05:08:14 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
再见西城 该用户已被删除
6#
发表于 2015-2-4 22:17:17 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
第二个灵魂 该用户已被删除
7#
 楼主| 发表于 2015-2-8 00:28:10 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
爱飞 该用户已被删除
8#
发表于 2015-2-23 18:55:33 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
变相怪杰 该用户已被删除
9#
发表于 2015-3-7 10:01:16 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
老尸 该用户已被删除
10#
发表于 2015-3-13 04:16:07 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
飘灵儿 该用户已被删除
11#
发表于 2015-3-13 23:08:03 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
海妖 该用户已被删除
12#
发表于 2015-3-14 04:39:57 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
莫相离 该用户已被删除
13#
发表于 2015-3-19 12:29:40 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
兰色精灵 该用户已被删除
14#
发表于 2015-3-19 18:14:09 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
蒙在股里 该用户已被删除
15#
发表于 2015-3-20 23:18:51 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小女巫 该用户已被删除
16#
发表于 2015-3-26 23:17:23 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
冷月葬花魂 该用户已被删除
17#
发表于 2015-4-13 01:25:26 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
金色的骷髅 该用户已被删除
18#
发表于 2015-4-13 13:08:02 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
深爱那片海 该用户已被删除
19#
发表于 2015-4-13 21:46:43 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表