admin 管理员组

文章数量: 1184232


2024年4月17日发(作者:spring aop原理面试必备)

Java程序语言和环境的设计目的是为了解决现代程序设计上的问题。它最初是一项较大规模『消

费者电子产品先进软件发展专案』的一部份,该专案目的是为了发展小型、可靠、可移植、分布式、

实时的嵌入式系统。我们在专案一开始原决定采用C++,不过碰到一些问题。最初,那只是编译器技

术方面的问题,可是后来我们遭遇更多困难,且发现最好的解决方式就是更换编程语言。

Java是一种简单、面向对象、分布式、解释、健 壮、安全、结构中立、可移植、高效能、多线

程、动态的语言。描述系统特性的方法之一就是把一堆高效能的术 语摆在一起。一如上述,我们也使

用一组标准的术语来描述Java。以下我们将解释这些术语在 Java上代表的意义,以及我们试图解决

的问题是哪些。『首先,我们要介绍阿基米得公司(Archimedes Inc.);它是我们为了方便说明Java功

能而虚构的一家软件公司。阿基米得从事有关基本物理教学 用途的软件开发,其软体设计目的是要与

使用者产生交互关系,不仅提供一如传统教科书的文字 与插图,而且也包括一组软件实验工作室,供

使用者进行实验和模拟真实世界的物理行为。例 如,它最基本的一项实验允许学生组成杠杆和滑轮,

然后观察它们的物理作用。在以下的论述 中,我们将借由这些实验和阿基米得设计师的旁白,以说明

Java语言概念。』

★ 简单

我们想建立一种真正简单的系统,它允许使用者 轻易地设计程序而不需要像现今的标准程序一

样接受深奥的训练。目前大多数程序设计师都采用 C语言,而面向对象程序设计师则大多使用C++。

因此,即使我们发现C++并非适合我们,我 们在Java的设计上还是尽可能让它与C++相近,以确

保系统更容易被理解。Java删除许多极少被使用、不容易理解和令人混淆 的C++功能,这些功能在

我们的使用经验中只能带来麻烦而非效益。删除的功能主要包括运算符 重载(operator

overloading)、多重继承(inheritance)以及广泛的自动强迫同型(automatic coercions); 重载是指

以一个辨识元参照多重项目,Java语言也提供重载函数,不过它重载的对象是方法(method)而非变

量或运算符。我们增加自动内存垃圾收集(auto garbage collection) 功能,因此简化Java程序工作,

不过同时也让系统变得稍复杂一些。储存管理(storage management)是使C与C++ 应用程序变得

1

复杂的常见的一项原因,即关于内存的分配与释放。Java语言的自动垃圾收集功能(周期性地 释放未

被使用的内存)不仅简化了程序设计工作,而且能大幅度减少小错误(bugs)数量。『阿基米得设计师们

原想花时间思考杠杆与滑轮原 理,但是后来却发现大部份时间都浪费在世俗的程序工作上。事实上,

他们的核心专业知识在于 教学而非程序设计。这些程序工作中最复杂的部份就是从他们那二万行程序

码中,找出那些地方 浪费了内存。』 确保Java『简单化』的另一特性在于『小而单 纯』。Java的目

标之一是要协助开发能独立地在小型机器上顺利执行的软件。Java的基本解释器 (interpreter)和对象

类(class)支援约占4OKB,而若增加基本的标准程序库和线程(thread)支援 (它 实际上是一整自含式

的微核心) 需增加175K。体积小对于在嵌入式的系统中的使用是很重要的,并因 此Java可以通过网

络轻易下载。

★ 面向对象

这是在业界被过度渲染的术语之一。不过,面向对象是一项很强的设计功能,因为它促成明确

的接口定义,并允许发展者建立可重复使用的『软 件IC』。简单的说,面向对象设计是一种以数据(对

象) 及其接口为重心的程序设计技术。我们以木匠比例;一位『面向对象』木匠最重视的是他想制作

的椅子,其次才是他用来制做椅子的工具。相反的,一位『非面向对象』木匠是把主要的心思放在工

具上。面向对象设计也是定义程序模块如何『即插即用』的机制。Java的面向对象设施实质上就是

C++,并包含 Objective C的一些延伸,以提供更有动态的解决方案。『阿基米得设计师在他们的模

拟式中设计许多 东西,包括绳子与橡皮筋等。他们初期的C版本产品是一个非常庞大的系统,因为

他们必须个别地设计软件来描述绳子和橡皮筋。当以面向对象方式重新设计应用程序时,他们发现可

以定义一个基本对象来代表绳子与橡皮筋两者之间的共同部份,然后绳子与橡皮筋即定义成基本对象

类型的子对象类。其后,当他们有需要增加链结时就能非常轻易地建立起来,因为他们可以将这些链

结建立在先前已设计妥当的对象之上,而不需要整个重新设计新对象模拟。』

★ 分布式

2


本文标签: 设计 面向对象 基本 程序 软件