当前位置:文档之家› 用java设计并实现绘图板

用java设计并实现绘图板

南京师范大学中北学院

毕业设计(论文)

(2012届)

题目:用java设计并实现绘图板

专业:电子信息工程

姓名:梅登海学号: 18083820 指导教师:侯奋飞职称:副教授

填写日期: 2012年4月

南京师范大学中北学院教务处制

目录

摘要 (1)

Abstract (2)

第一章JAVA简介 (3)

1.1什么是JA V A (3)

1.2JA V A的起源及发展史 (3)

1.3JA V A的现状 (5)

1.4JA V A未来的发展趋势和范围 (6)

第二章关于用JA V A实现绘图板 (8)

1.1JA V A实现绘图版的意义及目的 (8)

1.2用JAVA实现绘图版的研究范围和达到的技术要求 (8)

第三章JA V A的特点分析 (9)

3.1JA V A语言的优点 (9)

3.2JA V A语言与C/C++语言的区别 (10)

第四章JA V A语言的编程规范 (12)

4.1创建具有很强内聚力的类 (12)

4.2创建松散连接和高度专用的方法 (12)

4.3编程原则 (12)

第五章java的GUI设计 (16)

5.1 java.awt: (17)

5.2 AWT的功能: (17)

5.3 AWT的组件: (17)

5.4 java的图形设计: (18)

第六章JAVA编译器介绍 (21)

6.1 JCreator的功能简介 (21)

6.2 Eclipse简介 (21)

6.2.1历史背景 (22)

6.2.2Eclipse版本介绍 (22)

6.2.3 Eclipse功能简介 (23)

第七章用JA V A设计并实现绘图版 (24)

7.1绘图版的功能及设计方案 (24)

7.1.1绘图版的功能 (24)

7.1.2设计方案 (24)

7.2 程序的流程结构图 (25)

7.3部分程序分析 (26)

7.4程序示例图片 (33)

结论 (38)

致谢 (39)

参考文献 (40)

摘要

本文介绍了软件语言JAVA的结构模型和设计方法,说明了JAVA设计语言的一些优势和不足还有其在现在的很多系统设计中的重要地位和作用。同时也比较了JAVA语言和其它语言的不同点,主要是与c++作了一些比较。用JAVA实现绘图版的方法有很多种,而本文介绍的主要是用JAVA自带的内部类及其方法实现的绘图板,实现了可以画直线,曲线,圆,矩形,椭圆等,可以选择很多不同的颜色,并可以用不同的颜色来填充。Java 主要有两种平台,一个是JCreator还有一个是Eclipse。本文编写的程序主要是在JCreator编译器上进行调试。最终开发出一个非常好的绘图版。

关键字:JAVA语言;绘图板;JCreator;调试

Abstract

This paper introduces the model of a software language Java and its design methods. Notes some of the Java language?s advantages and disadvantages, and its important status and role in the present system design. The author also compares the Java language with other computer languages from the different points, particular compared with C++. There are many kinds of methods to complete the work by Java. This paper introduces how to use Java?s internal class to implement the software, the software can be used to paint line, curve, circle, rectangular and so on. It also can be used to fill circle, rectangular which has been painted with the selected color. This paper introduces two Java platforms for the development. One is JCreator and another is Eclipse. The procedures are mainly debugged in the compiler of JCreator. Eventually, a good draw pad is developed.

Keywords: JAVA; Drawing pad; JCreator; Debugging

第一章JA V A简介

1.1 什么是JAVA

Java是一种软件技术

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

是一种为 Internet发展的计算机语言

是一种使网页(Web Page)产生生动活泼画面的语言

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

是一种语言,用以产生小应用程序(Applet(s))

是一种简化的C++语言,是一种安全的语言,具有阻绝计算机病毒传输的功能

是一种将安全性(Security)列为第一优先考虑的语言

是一种突破用户端机器环境和CPU结构的语言

是一种只写一次,即可在任何机器上执行(Write Once Run Anywhere)的语言是有史以来,第一套允使用者将应用程序(Applications)通过Internet从远端的服务器(Remote Server)传输到本地端的机器上(Local Machine)并执行的语言

1.2 JAVA的起源和发展史

Java平台和语言最开始只是SUN公司在1990年12开始研究的一个内部项目。SUN 公司的一个叫做帕特里克·诺顿的工程师被升阳自己开发的C 和C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth 计划”的项目的机会。“Stealth 计划”后来改名为“Green 计划”,James Gosling(詹姆斯·高斯林)和麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,SUN公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C 语言,但是很多成员包括升阳的首席科学家比尔·乔伊,发现C 和可用的API在某些方面存在很大问题。工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C 太复杂以至很多开发者经常错误使用。他们发现C 缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。根据可用的资金,比尔·乔伊决定开发一种集C语言和Mesa语言大成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议SUN公司的工程师应该在C 的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C 的功能,他自己称这种新语言为C --,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的树而命名。就像很多开发新技术的秘密的工程一样,工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库,和其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展示。同年11月,Green计划被转化成了“FirstPerson 有限公司”,一个SUN公司的全资子公司,团队也被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度互动的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Request for proposal),FirstPerson改变了他们的目标,作

为对征求意见书的响应,提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多地控制权,因此FirstPerson的投标败给了SGI。与3DO 公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司再并回SUN公司。Java的发明,则给软件产业带来了前所未有的改变。 Sun公司以及IBM、Oracle、Netscape等公司都在大力推进Java的应用。旨在提高Java运行速度的Java芯片也在紧锣密鼓地赶制当中,有人预计不久的将来,Java的代码的运行速度和C++一样快。Java在WWW应用中的地位得到肯定以后,Sun又反过来扩展Java在家电领域的应用,Java的应用有向更广阔的领域扩展的趋势。Sun公司的高层人士称“Java的潜力远远超过作为编程语言带来的好处。事实上,Java是一种新计算模式的使能技术”。看来,Java的前程不可限量。Java可以应用在很多的方面:所有面向对象的应用开发,计算过程的可视化、可操作化的软件开发。动态画面的设计,包括图形图像的调用。交互操作的设计等等。

JAVA的发展:

1995年 JAVA语言诞生

1996年 JDK1.0发布,10个最主要的操作系统供应商申明将在其产品中支持JAVA 技术。

1997年 JDK1.1发布

1998年 JDK1.2发布,JFC/Swing技术发布,JFC/Swing被下载50万次

1999年 JAVA被分为J2SE,J2EE和J2ME,JSP/Servler技术诞生

2000年 JDK1.3发布,JDK1.4发布

2001年 Nokio公司宣布到2003年将出售1亿部支持JAVA的手机,J2EE1.3发布2002年 J2SE1.4发布,至此JAVA的计算能力有了大幅的提升

2003年 5.5亿台桌面机运行JAVA程序,75%的开发人员将JAVA作为首要的开发工具

2004年 J2SE1.5发布,同时J2SE1.5更名为J2SE5.0

2005年 JAVAONE大会召开,SUN公司宣布公开JAVASE6。此时,JAVA的各种版本被更名

2006年 Sun公司公开JAVA核心源代码

1.3 JAVA的现状

Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发,它的平台无关性直接威胁到Wintel的垄断地位。虽然新闻界的报导有的言过其实,但Java作为软件开发的一种革命性的技术,其地位已被确立,这表现在以下几个方面:

1.计算机产业的许多大公司购买了Java的许可证,包括象IBM,APPLE,NEC等大公司以及最不情愿的Microsoft。这一点说明,Java已得到了工业界的认可。

2.众多的软件开发商开始支持Java的软件产品。例如:Sun公司自己的Java开发环境JavaWorkshop已经发布。数据库厂商如:Illustra, Sysbase, Versant, Oracle 都在开发CGI接口,支持HTML和Java。

今天是以网络为中心的计算时代,不支持Java,应用程序的应用范围只能限于相同的硬件平台环境,而其中Java改变了这一现状,发挥不可替代的作用。 Java语言正在不断发展和完善,随着各种功能的完善与提炼,各种Java开发工具以及开发环境的

丰富,Java不再是一种语言的代名词,它变成了一种开发平台。J2EE(企业版)、J2ME(微型版)、J2SE(标准版)就是Java的三大核心平台。利用这三种不同的平台,人们可以来做不同行业的应用。Sun公司是主要的发展推动者,较通用的编译环境有JDK(JavaDevelopKit)与JWS(JavaWorkshop)。还有很多其他公司正在开发Java语言的编译器与集成环境,预计不久Java语言的正确性与效率都将会提高,用户用Java编程比现在用C++编程更方便。

(一) Java 语言已具备清晰的框架结构

目前,以SUN 公司公布的JAVA 最新框架结构为标准,将Java 语言以Java2 为中心,其组成分为了3 个部分:1)企业版J2EE。该版本是面对各大企业环境为中心而开发的一种以应用程序为主体的计算机网络平台,其中还包括 3 个层次:EJB、JSP、和SERVSLT ;2)标准版J2SE。其中,Java 核心编程为图形用户界面的编程、工具包程序的编写以及数据库的程序编写等;3)微型版J2ME。该版本一直以消费品和各种嵌入式设备的网络应用平台为研究中心,主要涉及的领域为手机、手机中的各种无线游戏等。其核心技术为移动信息设备小程序。从目前Java 语言的应用及推广来看,标准版的更符合大众需求,它以其简单方便的特点赢得市场好评。

(二)推动了PC 时代的发展

计算机的诞生及广泛应用推动了IT 领域的发展,但现在的计算机早已不是访问INTERNET 的唯一的途径。目前,各类更具信息化的电子产品成为一股新的力量进入IT 领域,推动了PC 时代的大发展。由于各种消费信息的急剧增加,传统的客户机的各方面条件均不如PC,PC 的发展对服务器的应用管理体统也提出了更高标准。然而,Java 语言完全满足了PC 的条件,在减少内存,直接在各类电子产品中运行,在网络中可被任何设备所识别,充分利用网络资源等方面有所突破创新,为PC 时代的发展创造了有力条件。

(三)多元化的应用系统

Java 语言所面向的客户主要为计算机中的各种应用系统、应用工具以及现代化家电等。在JAVA 语言的实时开发领域方面,IBM 公司首先开发出了适应于工业操作环境的一种嵌入式系统,以此,可以看出Java 语言在工业领域的开阔前景。随着Java 语言的诞生和发展更加的深入人心,各大知名商家陆续购买Java 的许可证,纷纷投入了对Java 语言的研究与开发中。因此,可以看出,多元化的应用系统为Java 以及各个领域的应用平台注入了无线的生机与活力。

据全球市场调查分析显示:已经有25亿部电子设备采用了Java技术,Java智能卡发行量已经达到10亿张,采用Java技术的手机达7亿多部,7亿台PC中应用了Java 技术,140家电信运营商支持Java 技术,全球有超过450 万个Java开发人员,JCP(Java 社区项目)已经有912家会员企业。

1.4 JAVA语言的未来发展趋势和发展范围

1.4.1 java的发展趋势

在IT产业的应用方面,最初Java 语言为与数据库联系紧密设计了Java servlet 和SQL-J 技术,以及JSP 技术。最为重要的是JSP 技术的迅猛发展,使JAVA 语言的网络应用更为实际化、更高效快捷,成为IT 产业首选的技术。JSP 以Java 语言作为其服务器端的使用语言,结合了JAVA SCRIPT 等多种其他客户端语言,使网络浏览器更为方便的展现。另外,从目前Java 发展前景来看,本人国更多企业倾向于JAVA/J2EE 技术,

将其作为应用程序开发的首要选择方案。由于数据方面的程序设计以及逻辑方面的程序控制已成为本人国企业环境程序应用的关键技术,并且这些都体现了JAVA 语言的优势,因此,在Java 语言的实际应用中,企业版越来越受到各大企业的欢迎。

在嵌入式设备研究应用方面,Java 语言近几年被广泛应用于移动电话、各种信息化家用电器等方面,甚至IC 卡等小型电子产品中也有所涉及。从Java 语言的发展趋势来看,这种嵌入式的研究应用范围将会进一步扩大,甚至覆盖更多的电子信息产品,方便人们生活。

近几年来,本人国移动通讯业已开始了Java 语言的应用。移动的运营方通过Java 语言所创造的网络平台为客户提供了更加丰富的网络活动及网络信息。

例如:

1、更加丰富生动的手机游戏。通过Java 语言的应用,手机游戏图像更加丰富、更具吸引力,消费者还可根据自身的需要通过Java 语言所建立的网络平台从网上下载适合自己的游戏,进一步满足消费者的需求;

2、电商交易更加方便快捷。通过Java语言的开发与应用,各手机使用者可根据自身需要通过Java 平台进行机票及酒店预订等。消费者还可操作简易的股票买卖等活动;

3、更加方便地进行网上阅读等活动。随着Java 语言的使用,手机用户可根据个人爱好,随时随地地下载自己喜欢的书籍进行阅读,大大方便人们生活。另外,Java 语言中的企业版已广为被各大商家所运用,而且,Java 技术也已成功推动了全球无线技术应用的发展,为各种无线通信、游戏市场创造了良好的商机。

1.4.2 JAVA的发展范围

IBM公司提出“高举Java大旗,全力以赴”的口号,它在全世界的11个国家有28个实验室,集聚了2500余名技术人员,全天24小时进行全方位开发;芯片巨人Intel 提出“抓住时机,占领Java阵地”!决心使Intel芯片系统成为开发Java应用运行的最佳平台;Novell则宣称“Java是Novell的未来,未来是服务器端Java的市场”;作为Java发明者的Sun公司,坚持“保卫Java大旗,发展Java之路”的方针,通过对Java的“研究椘拦坛构造棽馐詶推广”的过程,从而占领市场。此外,HP、Oracle、Apple、Sybase、Netscape、Informix、3Com、Motorola等公司均是Sun的坚强同盟。

在本国,Java的引进与开发起步早,发展水平基本与世界同步。目前,Sun公司已在中国建成了由5个授权中心、20多个Internet/Intarnet Java解决方案中心和10所Java大学、若干培训中心组成的三级结构。全面推动Java在中国的普及、应用、研究、开发,培养了数以十万计的Java开发人员。此外,Sun还牵头成立了中外软件厂商的开发联盟。

在中国,Java的开发可以说是“人才济济,成果累累”。如清华大学王克宏教授带领的课题组面向全国,自1996年开始举办了多期Java培训班和讲座,开设了数期本科生、研究生Java课程,出版了“Java系列丛书”10余册,承担了国家“九五”攻关项目“基于Java技术的交互式远程教学系统”,并与日本就Java开发进行了国际合作,成绩斐然;东大阿派下属的宝钢东软软件技术研究中心是国内是首屈一指的Java研发骨干企业,该中心从95年起就开始了Java的研发,目前,已掌握了Personal Java的核心移植技术,并成功地将JVM移植到汽车导航平台。此外,他们还开发出支持Jini 协议的即插即用网络打印机软件,以及一套Jini信息家电网络的可视化演示环境,完成了基于JavaBeans的组件化软件开发及运行支持环境等多项成果;在台湾,22家知名计算机公司成立了“Java联盟”,并在台北建立了“Java开发中心”,新竹建立了“Java 语言实验室”;在香港,举行了全岛Java杯比赛,掀起了学习Java的热潮。Java的浪

潮汹涌澎湃,席卷全球!

第二章关于用java实现绘图版

2.1 JA V A实现绘图版的意义及目的

绘图版有着很多的功能,在很多方面本人们都要用到绘图版。特别是在现在的办公中绘图版有着重要的作用,随着电脑的设计在这些领域中扮演着越来越重要的角色,很多传统行业的工作者都希望转型,抛弃传统的画笔和纸张。实现绘图版可以用很多种语言,比如VB,C++等,他们都可以用来实现绘图这一功能。但是用JAVA实现绘图版可以使得整个设计流程更为简便和使得程序的效率有很大的提高,因为JAVA语言本身的特点就决定了用它写的程序比用C++写的程序(两者实现相同的功能)节省60%的代码和节省66%的编译时间。对于一个大的项目来说用JAVA更可以节省内存的空间,大大减少了开发的成本,这也是JAVA成为当今主流语言的一个很大的原因。

通过用JAVA实现绘图版,可以使本人们对JAVA这种面向对象的语言有着更深刻的理解。从中可以学到用JAVA编写程序需要注意的事项,可以学到怎样在实现程序之前先对整体有一个大致的了解,并可以画出流程图,然后在实现程序。

2.2 用JA V A实现绘图版的研究范围和达到的技术要求

要想用JAVA实现绘图版不但要了解JAVA这们语言的基本概念和语法,也要对类,对象,实例,接口,简单聚集类等有着深刻的理解。同是也要对JAVA自带的包中的类以及关于绘图这一块中类的方法有这一定的了解,要会运用这些知识去实现绘图这一功能。

本人们主要研究软件包java.awt.*,java.awt.event.*,java.awt.geom.*, javax.swing.*中所带的一些类及方法,以及java.util包中的vector的用法。

在软件编码阶段,主要任务是用程序来实现对象模型中的类。对于复杂的软件项目,要采取分块并行开发的方式来提高效率。要会熟练的运用JCreator这个编译器的各种功能,要会在JCreator上对程序进行调试,最终完成一个良好的高效的代码。

第三章JA V A 的特点分析

3.1 JA V A语言的优点

(1)Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

(2)Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

(3)Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

(4)Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java 程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

(5)Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

(6)Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

(7)Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

(8)Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

(9)Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

(10)Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意

的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

(11)Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

3.2 JA V A语言与C/C++语言的区别

熟悉C语言和C++语言的读者一定想搞清楚这个问题,实际上,Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言,C++语言完全相同.尽管如此,Java和C语言,C++语言又有许多差别,主要表现在如下几个方面: (1) Java中对内存的分配是动态的,它采用面向对象的机制,采用运算符new为每个对象分配内存空间,而且,实际内存还会随程序运行情况而改变。程序运行中 Java 系统自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用.按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了由于内存管理方面的差错而导致系统出问题。而C语言通过malloc()和free()这两个库函数来分别实现分配内存和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存。在C和C++这种机制中,程序员必须非常仔细地处理内存的使用问题。一方面,如果对己释放的内存再作释放或者对未曾分配的内存作释放,都会造成死机;而另一方面,如果对长期不用的或不再使用的内存不释放,则会浪费系统资源,甚至因此造成资源枯竭。

(2) Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变量来完成全局变量的功能。

(3) Java不用goto语句,而是用try-catch-finally异常处理语句来代替goto 语句处理出错的功能。

(4) Java不支持头文件,而C和C++语言中都用头文件来定义类的原型,全局变量,库函数等,这种采用头文件的结构使得系统的运行维护相当繁杂。

(5) Java不支持宏定义,而是使用关键字final来定义常量,在C++中则采用宏定义来实现常量定义,这不利于程序的可读性。

(6) Java对每种数据类型都分配固定长度。比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int 类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性,而Java则具有跨平台性(平台无关性)。

(7) 类型转换不同。在C和C++中,可通过指针进行任意的类型转换,常常带来不

安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。

(8) 结构和联合的处理。在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面。

(9) Java不再使用指针。指针是C和C++中最灵活,也最容易产生错误的数据类型.由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性。而Java对指针进行完全地控制,程序员不能直接进行任何指针操作。

(10)避免平台依赖。Java语言编写的类库可以在其它平台的Java应用程序中使用,而不像C++语言必须依赖于Windows平台。

(11)在B/S开发方面,Java要远远优于C++。

第四章JA V A语言的编程规范

4.1 创建具有很强内聚力的类

当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。当类包含许多互不相关的方法时,该类便具有较弱的内聚力。应该努力创建内聚力比较强的类。大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。在这种情况下,可以为这些不合群的方法创建一个综合性收容类。

4.2 创建松散连接和高度专用的方法

4.2.1 使所有方法都执行专门的任务

4.2.2 尽量使方法成为自成一体的独立方法

[1] 将复杂进程放入专用方法。如果应用程序使用复杂的数学公式,请考虑将每个公式放入它自己的方法中。这样使用这些公式的其他方法就不包含用于该公式的实际代码。这样也可以更容易发现与公式相关的问题。

[2] 将数据输入/输出(I/O)放入专用方法。

[3] 将专用方法中可能要修改的代码隔离。如果你知道某个进程经常变更,请将这个多变的代码放入专用方法,以便以后可以更容易的进行修改,并减少无意中给其他进程带来问题的可能性。

4.2.3 设计类和方法时,要达到下列目的:

[1] 创建更加容易调试和维护的方法

[2] 创建具有强大内聚力的类

[3] 创建高度专用的方法

[4] 创建松散连接的方法

[5] 尽量使方法具有独立性

4.3 编程原则

4.3.1 为方法和类赋予表义性强的名字

A 包:

全部小写。

标识符用点号分隔开来。为了使包的名字更易读,Sun 公司建议包名中的标识符用点号来分隔。

Sun公司的标准java分配包用标识符.java 开头。

全局包的名字用你的机构的Internet保留域名开头。

例:局部包:interface.screens

全局包:com.rational.www.interface.screens

B 类,接口:

类的名字应该使用名词。

每个单词第一个字母应该大写。

避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。

例:Class Hello;

Class HelloWorld;

Interface Apple;

C 方法:

第一个单词一般是动词。

第一个字母是小些,但是中间单词的第一个字母是大写。

●如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。

●如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。

例:getName();

setName();

isFirst();

D 变量:

1.第一个字母小写,中间单词的第一个字母大写。

不要用_或&作为第一个字母。

尽量使用短而且具有意义的单词。

单字符的变量名一般只用于生命期非常短暂的变量。i, j, k, m, n一般用于integer;c, d, e一般用于char。

如果变量是集合,则变量名应用复数。

●命名组件采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表。

例:mouseReleased();

mousePressed();

mouseMoved();

E 常量:

所有常量名均全部大写,单词间以…_?隔开。

例:int MUX_COUNT;

int NUMBER_LENGTH;

String STUDENT_SCORE;

4.3.2 为每个变量选择最佳的数据类型

这样即能减少对内存的需求量,加快代码的执行速度,又会降低出错的可能性。用于变量的数据类型可能会影响该变量进行计算所产生的结果。在这种情况下,编译器不会产生运行期错误,它只是迫使该值符合数据类型的要求。

4.3.3 尽量缩小变量的作用域

对变量来说,尽量缩小作用域将会对应用程序的可靠性产生巨大的影响。也会减少内存的开销。

4.3.4 使用代码注释

[1] 文字说明代码的作用

[2] 指出该代码的编写思路和逻辑方法

[3] 同时也可以在每个类,方法,和IF,WHILE等结束的后面加上注释来说明括号的匹配

例:

Public void setName(){

//方法体

}//end setName()

4.3.5 编写代码是最好要注意行与行之间的缩进,括号之间的配对,这样不但方便自己看代码,也使得别人也能很快的看懂代码。

例:

/**

* 检查是否为正确日期

*

* @param date

* 输入日期日期格式必须如下:YYYY/MM/DD 或者YYYYMMDD * @return false 不是日期true 是日期

*/

public static boolean checkDate(String date) {

boolean isDate = false;

if (date != null) {

int year = -1;

int month = -1;

int day = -1;

try {

if (date.length() == 10) {

date = date.replaceAll("/", ""); //用""替换掉所有"/"

}

if (date.length() == 8) {

year=Integer.parseInt(date.substring(0,4)); //substring(i, j)用

于返回一个

month= Integer.parseInt(date.substring(4, 6));

//从i开始到(j-1)结束的新字符串

day = Integer.parseInt(date.substring(6));

System.out.println(year);

System.out.println(month);

System.out.println(day);

isDate = dateCheck(year, month, day);

}

else{

isDate = false;

}

}

catch (NumberFormatException e) {

isDate = false;

e.printStackTrace();

}

}

return isDate;

}//end checkDate()

第五章java的GUI设计

5.1 java.awt

5.1.1 抽象窗口工具集(Abstract Window Tools)

[1] 基本控制组件Button Checkbox Choice List Menu TextField

[2] 复杂控制组件Canvas TextArea

[3] 其他控制组件Scrollbar Label

[4] 容器是一个可以包含组件和其他容器的组件。容器还可以具有布局管理器,用来控制容器中组件的可视化布局。AWT 包带有几个布局管理器类和一个接口,此接口可用于构建自己的布局管理器。

5.2 AWT的功能

5.2.1 AWT的功能包括以下方面:

[1] 丰富的图形界面组件

[2] 强大的事件处理模型图形和图象工具,包括形状、颜色、字体等

[3] 布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率

[4] 无关数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴操作

[5] 打印和无鼠标操作

java.awt是java基本包中最大的一个,其中定义了所有GUI组件类,以及其他用于构造图形界面的类,如字体类Font、绘图类Graphics和图像类Image等。

5.3 AWT的组件

5.3.1 文本域 TextField

文本域一般用来让用户输入像姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。

[1] 创建文本域(构造方法)

在创建文本域时,有四种类型:

TextField t1,t2,t3,t4

t1=new TextField(); //空的文本域

t2=new TextField(20); //长度为20的空的文本域

t3=new TextField(“hollo”); //带有初始文本内容的文本域

t4=new TextField(“hollo”,10); //带有初始文本内容并具有指定长度的文本域

[2] 主要方法

t1=setText(“AAA”);

String S=t1.getText();

5.3.2 按钮Button

当按下该按钮时,应用程序能执行某项操作。

[1] 创建按钮

Button b1=new Button(“OK”);

[2] 主要方法

b1.setLabel(“HELLO”); // 将按钮的标签设置为指定的字符串

b1.paramString(); //返回此Button 状态的字符串表示形式

String S=b1.getLabel(); //获得此按钮的标签

5.3.3 文本区域TextArea

主要方法:

getRows(), setRows(), getColumns(), setColumns(), append(), insert()

5.3.4 复选框 Checkbox

构造方法有五种类型:

Checkbox c1, c2, c3, c4, c4;

c1=new Checkbox(); //新建一个复选框

c2=new Checkbox(“double”); //新建一个带标签的复选框

c3=new Checkbox(“double”,true);//新建一个带标签的复选框,初始选中

c4=new Checkbox(“double”, true, group1);//新建一个带标签的复选框,初始选中并加入按钮组group1中

c5=new Checkbox(“double”,group1,true); //新建一个带标签的复选框,初始选中并加入按钮组group1中

其他主要方法:

getLabel() , setLabel();getState(), setTate();

5.3.5 按钮组 CheckboxGroup

CheckboxGroup checkboxgroup= new CheckboxGroup();

Checkbox cb1, cb2;

cb1=new Checkbox (“option1”, checkboxgroup, true);

cb2=new Checkbox (“option2”, checkboxgroup, false);

其他主要方法:

getselectedCheckbox(),setselectedCheckbox()

5.3.6 滚动条 Scrollbar

构造方法有三种:

Scrollbar s1=new Scrollbar(); //新建一个竖滚动条

Scrollbar s2=new Scrollbar(1); //新建一个指定方向的滚动条

Scrollbar s3=new Scrollbar(1,100,20,1,10); //新建一个滚动条,指定方向,初始值,可视总数,最小值,最大值

其他主要方法:

getMaximum(),getMinimum(),getValue()

setMaximum(),setMinimum(),setValue()

5.3.7 下拉列表 Choice

相关主题
文本预览
相关文档 最新文档