摘要:
朝客户端编程迈进的时候,最重要的一个问题就是插件的设计。利用插件,程序员可以方便地为浏览器添加 新功能,用户只需下载一些代码,把它们“插入”浏览器的适当位置即可。这些代码的作用是告诉浏览器 “从现在开始,你可以进行这些新活动了”(仅需下载这些插入一次)。有些快速和功能强大的行为是通过 插件添加到浏览 阅读全文
摘要:
Web最初采用的“服务器-浏览器”方案可提供交互式内容,但这种交互能力完全由服务器提供,为服务器 和因特网带来了不小的负担。服务器一般为客户浏览器产生静态网页,由后者简单地解释并显示出来。基本 HTML 语言提供了简单的数据收集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,另外还有一个 按钮 阅读全文
摘要:
Web这个词刚开始显得有些泛泛,似乎“冲浪”、“网上存在”以及“主页”等等都和它拉上了一些关系。 甚至还有一种“Internet 综合症”的说法,对许多人狂热的上网行为提出了质疑。我们在这里有必要作一些 深入的探讨,但在这之前,必须理解客户机/服务器系统的概念,这是充斥着许多令人迷惑的问题的又一个 阅读全文
摘要:
既然Java 不过另一种类型的程序设计语言,大家可能会奇怪它为什么值得如此重视,为什么还有这么多的人 认为它是计算机程序设计的一个里程碑呢?如果您来自一个传统的程序设计背景,那么答案在刚开始的时候 并不是很明显。Java 除了可解决传统的程序设计问题以外,还能解决World Wide Web(万维网 阅读全文
摘要:
创建一个对象后,只要我们需要,它就会一直存在下去。但在程序结束运行时,对象的“生存期”也会宣告 结束。尽管这一现象表面上非常合理,但深入追究就会发现,假如在程序停止运行以后,对象也能继续存 在,并能保留它的全部信息,那么在某些情况下将是一件非常有价值的事情。下次启动程序时,对象仍然在 那里,里面保留 阅读全文
摘要:
在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手 头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。最开始的时候,那些 拥有机器低级知识的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。尽管这 是一种有用的 阅读全文
摘要:
从最古老的程序设计语言开始,错误控制一直都是设计者们需要解决的一个大问题。由于很难设计出一套完 美的错误控制方案,许多语言干脆将问题简单地忽略掉,将其转嫁给库设计人员。对大多数错误控制方案来 说,最主要的一个问题是它们严重依赖程序员的警觉性,而不是依赖语言本身的强制标准。如果程序员不够 警惕——若比 阅读全文
摘要:
每个对象都要求资源才能“生存”,其中最令人注目的资源是内存。如果不再需要使用一个对象,就必须将 其清除,以便释放这些资源,以便其他对象使用。如果要解决的是非常简单的问题,如何清除对象这个问题 并不显得很突出:我们创建对象,在需要的时候调用它,然后将其清除或者“破坏”。但在另一方面,我们 平时遇到的问 阅读全文
摘要:
由于集合是我们经常都要用到的一种工具,所以一个集合库是十分必要的,它应该可以方便地重复使用。这 样一来,我们就可以方便地取用各种集合,将其插入自己的程序。Java 提供了这样的一个库,尽管它在Java 1.0和 1.1中都显得非常有限(Java 1.2 的集合库则无疑是一个杰作)。 1. 下溯造型与 阅读全文
摘要:
针对一个特定问题的解决,如果事先不知道需要多少个对象,或者它们的持续时间有多长,那么也不知道如 何保存那些对象。既然如此,怎样才能知道那些对象要求多少空间呢?事先上根本无法提前知道,除非进入 运行期。 在面向对象的设计中,大多数问题的解决办法似乎都有些轻率——只是简单地创建另一种类型的对象。用于 解 阅读全文
摘要:
在面向对象的程序设计中,由于C++的引入而显得尤为突出的一个问题是:所有类最终是否都应从单独一个 基础类继承。在Java 中(与其他几乎所有OOP语言一样),对这个问题的答案都是肯定的,而且这个终级基 础类的名字很简单,就是一个“Object”。这种“单根结构”具有许多方面的优点。 单根结构中的所有 阅读全文
摘要:
从技术角度说,OOP(面向对象程序设计)只是涉及抽象的数据类型、继承以及多形性,但另一些问题也可能 显得非常重要。本节将就这些问题进行探讨。 最重要的问题之一是对象的创建及破坏方式。对象需要的数据位于哪儿,如何控制对象的“存在时间”呢? 针对这个问题,解决的方案是各异其趣的。C++认为程序的执行效率 阅读全文
摘要:
设计程序时,我们经常都希望基础类只为自己的衍生类提供一个接口。也就是说,我们不想其他任何人实际 创建基础类的一个对象,只对上溯造型成它,以便使用它们的接口。为达到这个目的,需要把那个类变成“抽象”的——使用abstract 关键字。若有人试图创建抽象类的一个对象,编译器就会阻止他们。这种工具 可有效 阅读全文
摘要:
在doStuff()的代码里,最让人吃惊的是尽管我们没作出任何特殊指示,采取的操作也是完全正确和恰当 的。我们知道,为 Circle 调用draw()时执行的代码与为一个 Square或 Line 调用draw()时执行的代码是不 同的。但在将draw()消息发给一个匿名 Shape时,根据 Sha 阅读全文
摘要:
针对继承可能会产生这样的一个争论:继承只能改善原基础类的函数吗?若答案是肯定的,则衍生类型就是 与基础类完全相同的类型,因为都拥有完全相同的接口。这样造成的结果就是:我们完全能够将衍生类的一 个对象换成基础类的一个对象!可将其想象成一种“纯替换”。在某种意义上,这是进行继承的一种理想方 式。此时,我 阅读全文
摘要:
就其本身来说,对象的概念可为我们带来极大的便利。它在概念上允许我们将各式各样数据和功能封装到一 起。这样便可恰当表达“问题空间”的概念,不用刻意遵照基础机器的表达方式。在程序设计语言中,这些 概念则反映为具体的数据类型(使用class 关键字)。 我们费尽心思做出一种数据类型后,假如不得不又新建一种 阅读全文
摘要:
创建并测试好一个类后,它应(从理想的角度)代表一个有用的代码单位。但并不象许多人希望的那样,这 种重复使用的能力并不容易实现;它要求较多的经验以及洞察力,这样才能设计出一个好的方案,才有可能 重复使用。 许多人认为代码或设计方案的重复使用是面向对象的程序设计提供的最伟大的一种杠杆。 为重复使用一个类 阅读全文
摘要:
从根本上说,大致有两方面的人员涉足面 向对象的编程:“类创建者”(创建新数据类型的人)以及“客户程序员”(在自己的应用程序中采用现成 数据类型的人;注释④)。对客户程序员来讲,最主要的目标就是收集一个充斥着各种类的编程“工具 箱”,以便快速开发符合自己要求的应用。而对类创建者来说,他们的目标则是从头 阅读全文
摘要:
亚里士多德或许是认真研究“类型”概念的第一人,他曾谈及“鱼类和鸟类”的问题。在世界首例面向对象 语言Simula-67 中,第一次用到了这样的一个概念: 所有对象——尽管各有特色——都属于某一系列对象的一部分,这些对象具有通用的特征和行为。在 Simula-67 中,首次用到了class 这个关键字 阅读全文
摘要:
所有编程语言的最终目的都是提供一种“抽象”方法。一种较有争议的说法是:解决问题的复杂程度直接取 决于抽象的种类及质量。这儿的“种类”是指准备对什么进行“抽象”?汇编语言是对基础机器的少量抽 象。后来的许多“命令式”语言(如FORTRAN,BASIC 和 C)是对汇编语言的一种抽象。与汇编语言相比,这 阅读全文
摘要:
但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的一个例子。 首先是最初的方案,然后经历各种程序逻辑,将方案不断改革为更恰当的设计。通过整个过程的学习,大家 可体会到使设计思想逐渐变得清晰起来的一种途径。 阅读全文
摘要:
开始编写网络应用时,就会发现所有Java 特性和库仿佛早已串联到了一起。本章将探讨如何通过因特网通 信,以及Java 用以辅助此类编程的一些类。此外,这里也展示了如何创建一个 Java 程序片,令其同一个 “通用网关接口”(CGI)程序通信;揭示了如何用C++编写CGI程序;也讲述了与 Java 1 阅读全文
摘要:
Java 配套提供了“抽象 Windows 工具包”(AWT)。这实际是一系列类的集合,能以一种可移植的形式解决 视窗操纵问题。这些窗口化程序既可以程序片的形式出现,亦可作为独立的应用程序使用。本章将向大家介 绍AWT 以及网上程序片的创建过程。我们也会探讨AWT的优缺点以及Java 1.1 在GU 阅读全文
摘要:
Java 提供了一套内建的机制,可提供对多个并发子任务的支持,我们称其为“线程”。这线程均在单一的程 序内运行。除非机器安装了多个处理器,否则这就是多个子任务的唯一运行方式。尽管还有别的许多重要用 途,但在打算创建一个反应灵敏的用户界面时,多线程的运用显得尤为重要。举个例子来说,在采用了多线 程技术 阅读全文
摘要:
由于我们在 Java 中同对象沟通的唯一途径是“句柄”,所以将对象传递到一个函数里以及从那个函数返回一 个对象的概念就显得非常有趣了。本章将解释在函数中进出时,什么才是为了管理对象需要了解的。同时也 会讲述 String(字串)类的概念,它用一种不同的方式解决了同样的问题。 阅读全文
摘要:
若只有指向基础类的一个句柄,Java 的运行期类型标鉴定(RTTI)使我们能获知一个对象的准确类型是什 么。一般情况下,我们需要有意忽略一个对象的准确类型,让 Java 的动态绑定机制(多形性)为那一类型实 现正确的行为。但在某些场合下,对于只有一个基础句柄的对象,我们仍然特别有必要了解它的准确类型 阅读全文
摘要:
理论上,我们可将任何程序分割为三部分:输入、处理和输出。这意味着 IO(输入/输出)是所有程序最为关键的部分。在这一章中,大家将学习Java 为此提供的各种类,如何用它们读写文件、内存块以及控制台 等。“老”IO和 Java 1.1 的“新”IO 将得到着重强调。除此之外,本节还要探讨如何获取一个对 阅读全文
摘要:
对一个非常简单的程序来说,它可能只拥有一个固定数量的对象,而且对象的“生存时间”或者“存在时 间”是已知的。但是通常,我们的程序会在不定的时间创建新对象,只有在程序运行时才可了解到它们的详 情。此外,除非进入运行期,否则无法知道所需对象的数量,甚至无法得知它们确切的类型。为解决这个常 见的程序设计问 阅读全文
摘要:
Java 最基本的设计宗旨之一便是组织错误的代码不会真的运行起来。编译器会尽可能捕获问题。但某些情况 下,除非进入运行期,否则问题是不会被发现的。这些问题要么属于编程错误,要么则是一些自然的出错状 况,它们只有在作为程序正常运行的一部分时才会成立。Java 为此提供了“违例控制”机制,用于控制程序 阅读全文
摘要:
若由你自己来干,可能要花9个月的时间才能发现和理解多形性的问题,这一特性实际是 OOP一个重要的基 础。通过一些小的、简单的例子,读者可知道如何通过继承来创建一系列类型,并通过它们共有的基础类对 那个系列中的对象进行操作。通过 Java 的多形性概念,同一系列中的所有对象都具有了共通性。这意味着我 阅读全文
摘要:
继承的概念是几乎所有 OOP语言中都占有重要的地位。它是对现有类加以利用,并为其添加新功能的一种有 效途径(同时可以修改它,这是第 7章的主题)。通过继承来重复使用原有的代码时(再生),一般需要保 持“基础类”不变,只是将这儿或那儿的东西串联起来,以达到预期的效果。然而,继承并不是在现有类基 础上制 阅读全文
摘要:
代码封装到一起的方式,以及在库的其他部分隐藏时,为什么仍有一部分处于暴露状态。首先 要讨论的是 package和 import关键字,它们的作用是进行文件级的封装(打包)操作,并允许我们构建由类 构成的库(类库)。此时也会谈到目录路径和文件名的问题。本章剩下的部分将讨论 public,private 阅读全文
摘要:
构建器,它的作用是担保初始化的正确实现。对构建器的定义要涉及函数过载的概念(因为可 能同时有几个构建器)。随后要讨论的是清除过程,它并非肯定如想象的那么简单。用完一个对象后,通常 可以不必管它,垃圾收集器会自动介入,释放由它占据的内存。这里详细探讨了垃圾收集器以及它的一些特 点。在这一章的最后,我们 阅读全文
摘要:
起源于C 和C++,由Java 继承的所有运算符。除此以外,还要学习运算符一些不易使人注意的 问题,以及涉及造型、升迁以及优先次序的问题。随后要讲述的是基本的流程控制以及选择运算,这些是几乎所有程序设计语言都具有的特性:用if-else 实现选择;用 for和while 实现循环;用 break和 阅读全文
摘要:
这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并 讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。这一章会向大家 提出一些对象创建的基本问题,比如构建器、对象存在于何处、创建好后把它们置于什么地方以及魔术般的 垃圾收集 阅读全文
摘要:
本章将大家带到可以着手写自己的第一个 Java 程序的地方,所以必须对一些基本概念作出解释,其中包括对 象“句柄”的概念;怎样创建一个对象;对基本数据类型和数组的一个介绍;作用域以及垃圾收集器清除对 象的方式;如何将 Java 中的所有东西都归为一种新数据类型(类),以及如何创建自己的类;函数、自变 阅读全文
摘要:
1 package Com.TomTest; 2 3 4 import java.awt.FlowLayout; 5 import java.awt.event.*; 6 import javax.swing.JButton; 7 import javax.swing.JFrame; 8 import javax.swing.JLabel; 9 import javax.s... 阅读全文