import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class awttest
{
TextField id,pw;
TextField printid,printpw;
public awttest(){
Frame f=new Frame("用户登录");
f.setLayout(new GridLayout(4,2));
id=new TextField("输入用户名",10);
pw=new TextField(10);
pw.setEchoChar('*');
f.add(new Label("用户名:",Label.CENTER));
f.add(id);
f.add(new Label("密码:",Label.CENTER));
f.add(pw);
Button b1=new Button("登陆");
Button b2=new Button("取消");
f.add(b1);
f.add(b2);
String str1=id.getText();
String str2=pw.getText();
printid=new TextField(str1,10);
printpw=new TextField(str2,10);
f.add(printid);
f.add(printpw);
f.pack();
printid.setBackground(new Color(220,0,0));
printpw.setBackground(new Color(220,0,0));
f.setSize(250,120);
f.setVisible(true);
b1.addActionListener(new ActionListener() { // 点击“显示窗口”菜单后将窗口显示出来
public void actionPerformed(ActionEvent e) {
printid.setText(id.getText());
printpw.setText(pw.getText());
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent args)
{
System.exit(0);
}
}
);
}
public static void main(String[] args){
new awttest();
}
}
OK!!可以运行
B. java有可视化编程工具吗
有的,Jbuilder 和NetBeans都是可以进行可视化的界面操作的。
另外,可视化的强大工具是SWT,在eclipse内部有存放。不过这个需要专业人员来进行。
建议不要偷懒,从基础开始学,一步一步的来。
谢谢。
C. JAVA编程是用什么软件的
JAVA编程常用的软件:
1、Eclipse:
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
2、MyEclipse:
MyEclipse是Eclipse的升级版,也是一款功能强大的J2EE集成开发环境,由Genuitec公司发布,提供免费版和收费版。被誉为最好用的Java IDE之一。
MyEclipse 是对Eclipse IDE的扩展,利用它可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。
3、IntelliJ IDEA:
IntelliJ IDEA是一款综合的Java 编程环境,被许多开发人员和行业专家誉为市场上最好用的IDE之一,与MyEclipse齐名。
它提供了一系列最实用的的工具组合:智能编码辅助和自动控制,支持J2EE,Ant,JUnit和CVS集成,非平行的编码检查和创新的GUI设计器。
4、NetBeans:
NetBeans IDE是一个屡获殊荣的集成开发环境,可以方便的在Windows、Mac、Linux和Solaris中运行。NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序。
5、BlueJ:
BlueJ是一款支持Java编程语言的集成开发环境(IDE)。它原本是为了教育目的而开发的,同时也适合于那些想做小型软件开发的开发人员。它的运行需要JDK(Java开发工具包)的帮助。BlueJ主要是为面向对象的程序设计教学而开发的,因此它的设计不同于其他的开发环境。
参考资料来源:网络-BlueJ
参考资料来源:网络-IntelliJ IDEA
参考资料来源:网络-Netbeans
参考资料来源:网络-eclipse
参考资料来源:网络-MyEclipse
D. java编程除eclipse外还有哪些工具软件
图形界面的java开发工具
JDK
Borland的JBuilder
JBuilder,JDeveloper,VisualAgeforJava
jcreater.
常见的十五种Java开发工具的特点
1、JDK(JavaDevelopmentKit)Java开发工具集
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,
有利于理解Java面向对象的设计思想。JDK的另一个显着特点是随着Java(J2EE、J2SE
以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java
应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
2、JavaWorkshop
3、NetBeans与SunJavaStudio5
NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。
SunJavaStudio是Sun公司最新发布的商用全功能JavaIDE,支持Solaris、Linux和Win
dows平台,适于创建和部署2层JavaWeb应用和n层J2EE应用的企业开发人员使用。
NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界
强大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块
化结构,第三方能够非常轻松地扩展或集成NetBeans平台。
NetBeans3.5.1主要针对一般Java软件的开发者,而JavaOneStudio5则主要针对企
业做网络服务等应用的开发者。Sun不久还将推出ProjectRave,其目标是帮助企业的开
发者进行软件开发。NetBeans3.5.1版本与其他开发工具相比,最大区别在于不仅能够
开发各种台式机上的应用,而且可以用来开发网络服务方面的应用,可以开发基于J2ME
的移动设备上的应用等。在NetBeans3.5.1基础上,Sun开发出了Java
OneStudio5,为用户提供了一个更加先进的企业编程环境。在新的Java
OneStudio5里有一个应用框架,开发者可以利用这些模块快速开发自己在网络服务方面
的各种应用程序。
4、Borland的JBuilder
Jbuilder进入了Java集成开发环境的王国,它满足很多方面的应用,尤其是对于服
务器方以及EJB开发者们来说。下面简单介绍一下Jbuilder的特点:
1)Jbuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB
(EnterpriseJavaBeans)的应用。
2)用户可以自动地生成基于后端数据库表的EJBJava类,Jbuilder同时还简化了EJ
B的自动部署功能.此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布
应用程序所必需的接口定义语言InterfaceDefinitionLanguage)和控制远程对象。
3)Jbuilder支持各种应用服务器。Jbuilder与InpriseApplicationServer紧密集
成,同时支持WebLogicServer,支持EJB1.1和EJB2.0,可以快速开发J2EE的电子商务
应用。
4)Jbuilder能用Servlet和JSP开发和调试动态Web应用。
5)利用Jbuilder可创建(没有专有代码和标记)纯Java2应用。由于Jbuilder是用纯J
ava语言编写的,其代码不含任何专属代码和标记,它支持最新的Java标准。
6)Jbuilder拥有专业化的图形调试接口,支持远程调试和多线程调试,调试器支持
各种JDK版本,包括J2ME/J2SE/J2EE。
JBuilder环境开发程序方便,它是纯的Java开发环境,适合企业的J2EE开发;缺点
是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较
吃内存,这时运行速度显得较慢。
5、Oracle的JDeveloper
Oracle9iJDeveloper(定为9.0版,最新为10g)为构建具有J2EE功能,XML和Web
services的复杂的,多层的Java应用程序提供了一个完全集成的开发环境。它为运用Ora
cle9i数据库和应用服务器的开发人员提供特殊的功能和增强性能,除此以外,它也有资
格成为用于多种用途Java开发的一个强大的工具。
Oracle9iJDeveloper的主要特点如下:
①具有UML(UnifiedModelingLanguage,一体化建模语言)建模功能。可以将业
务对象及e-business应用模型化。
②配备有高速Java调试器(Debuger)、内置Profiling工具、提高代码质量的工具
“CodeCoach”等。
③支持SOAP(SimpleObjectAccessProtocol)“简单对象访问协议”、UDDI(U
niversalDescription,DiscoveryandIntegration)“统一描述、发现和集成协议”
、WSDL()“WEB服务描述语言”等Web服务标准。
JDeveloper不仅仅是很好的Java编程工具,而且是OracleWeb服务的延伸,支
持ApacheSOAP,以及9iAS,可扩充的环境和XML和WSDL语言紧密相关。Oracle9i
Jdeveloper完全利用Java编写,能够与以前的Oracle服务器软件以及其他厂商支持J2EE
的应用服务器产品相兼容,而且在设计时着重针对Oracle9i,能够无缝化跨平台之间的
应用开发,提供了业界第一个完整的、集成了J2EE和XML的开发环境,允许开发者快速开
发可以通过Web、无线设备及语音界面访问的Web服务和交易应用,以往只能通过将传统J
ava编程技巧与最新模块化方式结合到一个单一集成的开发环境中之后才能完成J2EE应用
开发生命周期管理的事实,从根本上得到改变。缺点就是对于初学者来说,较复杂,也
比较难。
6、IBM的VisualAgeforJava
VisualAgeforJava是一个非常成熟的开发工具,它的特性以于IT开发者和业余的
Java编程人员来说都是非常用有用的。它提供对可视化编程的广泛支持,支持利用CICS
连接遗传大型机应用,支持EJB的开发应用,支持与Websphere的集成开发,方便的bean
创建和良好的快速应用开发(RAD)支持和无文件式的文件处理。
IBM为建设Web站点所推出的及其包含的Visual
AgeforJavaProfessionalEdition软件已全面转向以Java为中心,这样,Java开发人
员对WebSphere全套工具的感觉或许会好了许多。Studio所提供的工具有:Web站点管理
、快速开发JDBC页向导程序、HTML编辑器和HTML语法检查等。这确实是个不错的HTML站
点页面编辑环境。Studio和VisualAge集成度很高,菜单中提供了在两种软件包之间快速
移动代码的选项。这就让使用Studio的Web页面设计人员和使用VisualAge的Java程序员
可以相互交换文件、协同工作。
VisualAgeforJava支持团队开发,内置的代码库可以自动地根据用户做出改动而
修改程序代码,这样就可以很方便地将目前代码和早期版本做出比较。与VisualAge紧
密结合的WebsphereStudio本身并不提供源代码和版本管理的支持,它只是包含了一个
内置文件锁定系统,当编辑项目的时候可以防止其他人对这些文件的错误修改,软件还支
持诸如MicrosoftVisualSourceSafe这样的第三方源代码控制系统。VisualAgefor
Java完全面向对象的程序设计思想使得开发程序非常快速、高效。你可以不编写任何代
码就可以设计出一个典型的应用程序框架。VisualAgeforJava作为IBM电子商务解决
方案其中产品之一,可以无缝地与其他IBM产品,如WebSphere、DB2融合,迅速完成从设
计、开发到部署应用的整个过程。
VisualAgeforJava独特的管理文件方式使其集成外部工具非常困难,你无法让Vis
ualAgeforJava与其他工具一起联合开发应用。
7、BEA的WebLogicWorkshop
BEAWebLogicWorkshop是一个统一、简化、可扩展的开发环境,使所有的开发人员
都能在BEAWebLogicEnterprisePlatform之上构建基于标准的企业级应用,从而提高
了开发部门的生产力水平,加快了价值的实现。
WebLogicWorkshop除了提供便捷的Web服务之外,它能够用于创建更多种类的应用
。作为整个BEAWebLogicPlatform的开发环境。不管是创建门户应用、编写工作流、还
是创建Web应用,Workshop8.1都可以帮助开发人员更快更好地完成。
WebLogicWorkshop的主要特点如下:
①使J2EE开发切实可行,提高开发效率
BEAWebLogicWorkshop使开发人员远离J2EE内在的复杂性,集中精力专注业务
逻辑,无须操心单调乏味的基础结构代码。这种创新意味着,已被企业验证的J2EE的
强大功能,最终被大多数不熟悉Java和J2EE的应用开发人员所掌握,从而使IT部
门的工作效率提高一个数量级。
可视化设计器以及直观的概念,如事件、属性和控件等,实现了基于事件的开发。W
orkshop简化的程序设计模型,使开发人员不必掌握复杂的J2EEAPI和面向对象的程
序设计原理。所有开发人员,包括J2EE专家和具有可视化和过程化语言技能的应用开
发人员在内,都可以共同工作在BEAWebLogicEnterprisePlatform之上。Workshop
的可视化开发环境,创建带有代码注释的标准Java文件,用来说明由运行时框架实施
的企业级需求。J2EE和其他高级开发人员,借助功能强大的代码编辑功能,可以访问
Java源代码,从而弥补了可视化设计器的不足。
②构建企业级应用
通过在可伸缩、安全可靠的企业级架构上实施各种应用,BEAWebLogic
Workshop大大降低了开发风险。而且,所有应用的创建都使用标准的J2EE组件,既保
护了您的技术投资,又保持了最大的灵活性。
BEAWebLogicWorkshop运行框架,是统一整个架构的汇聚层,使单一、简化的程序设
计模型扩展到所有的BEAWebLogicEnterprisePlatform应用类型。通过解释设计时
创建的注释代码,运行时框架可以实现必要的J2EE组件,并且提取出与J2EE应用开
发有关的所有底层细节。
③降低IT复杂性
BEAWebLogicWorkshop提供各种Java控件,使得与IT资源的连接更轻而易举
。另外,在构建任何BEAWebLogicPlatform的应用中,Java控件不仅可扩展而且完
全相同。这种强大、有效的方法能够:降低IT技术的复杂性,优化信息的可用性,推
动包含"最佳业务方案"的可重用服务的开发,使开发人员能以更低的成本、更短的时间
实现更大的产出。
利用BEAWebLogicWorkshop,任何开发人员都能以最大的生产效率,构建各种
Web服务、Web应用、门户和集成项目。BEAWebLogicWorkshop是BEA的产品战略核心
,它帮助客户接触和利用面向服务架构(SOA)的强大功能。BEAWeblogicWorkshop
8.1极大简化了当前实际企业集成环境中企业级应用和服务的构建,并成为全面支持关键
企业级应用(如异步、真正松耦合和粗粒度消息传送等)的自然选择。它的缺点就是过于
复杂,对于初学者来说,理解起来较为困难。
8、WebGain的VisualCafeforJava
VisualCafe是只能在Symantec公司的Java虚拟机、Netscape公司的Java虚拟机和M
icrosoft虚拟机上工作的调试器。这对于开发者来讲是一个重要的特性,因为用户开发的
Java代码中的许多软件bug就可能中会在某种特定的虚拟机上起作用。
在修改后进行编译基继续进行调试时,VisualCafe会自动将文件存盘,使用Visual
Cafe创建的原生应用具有许多特点。除了明显的速度提高之外,Symantec使类库的二进制
方式比正常的JDK小VisualCafe为所指定的关系自动生成或更新必要的Java代码。利用V
isualCafe,用户可以从一个标准对象数据库中集合完整的Java应用程序和Applet,而
不必再编写源代码。VisualCafe还提供了一个扩充的源代码开发工具集。
VisualCafe综合了Java软件的可视化源程序开发工具,它允许开发人员在可视化视
图和源视图之间进行有效地转换。在可视化视图中进行的修改立即反映在源代码中。对
源代码的改变自动更新可视化视图。
VisualCafe具有许多源文件方面的特性,如全局检索和替换。绝大多数Java开发工
具的文献的问题在于简单地挨个介绍开发工具的每部分组件,但用户在开应用时还需要
一个面向任务的手册,利用这个手册你可以不必知道工具每一部分的特定功能就可以开
始创建自己的应用。VisualCafe提供了非常全面的用户指南,它对最开始的安装到创建
第一个Java应用和Applet都提供了全面的帮助,VisualCafe将自动生成所指明关系的必
要Java代码。VisualCafe可以在Windows95和WindowsNT平台下运行,Symantec公司为
Java开发工作提供一个在Macintosh操作系统下可以运行的RAD工具。VisualCafe编译器
速度很快,在国际化支持方面比较突出;缺点就是对于初学者来说,较复杂,也比较难。
E. eclipse怎么做java的可视化编程
在eclipse中安装插件,比如window Builder就可以变成可视化的。
一.找到对应版本的windowbuilder
打开这个链接:http://www.eclipse.org/windowbuilder/download.php
如下图,显示eclipse的版本号和对应的插件链接
然后就是创建swt工程可视化空间操作了。
F. 怎么才能让Java做到可视化编程
可视化编程就是GUI
第一步,引包:
一般引包:import javax.swing.*;
import java.awt.*;
第二步:代码
例子:将以下代码保存为test.java文件,然后用jdk提供的编译器编译运行
import javax.swing.*;
import java.awt.*;
public class test extends JFrame(){
//创建组件
JButton jb=null;
//构造函数
public test(){
//实例化组件
jb=new JButton("按钮");
//添加组件
this.add(jb);
//布局
//设置窗口在屏幕上的位置、大小和可见性
this.setLocation(100,100);
this.setSize(650,550);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(){
new test();
}
}
更多java可视化编程,可以到这个网站上去下载sun公司开发的文档tutorial
网站是:
http://www.oracle.com/technetwork/java/javase/java-tutorial-downloads-2005894.html
解压后,在tutorial\uiswing\components文件夹目录下的链接都是讲的可视化编程,不过都是英文版的。中文版的,我这里没有,有需要的自己找一下
G. 可视化编程
可视化编程,亦即可视化程序设计:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步
可视化编程是与传统的编程方式相比而言的,这里的“可视”,指的是无须编程,仅通过直观的操作方式即可完成界面的设计工作,是目前最好的Windows应用程序开发工具
可视化编程语言的特点主要表现在两个方面:一是基于面向对象的思想,引入了控件的概念和事件驱动;二是程序开发过程一般遵循以下步骤,即先进行界面的绘制工作,再基于事件编写程序代码,以响应鼠标、键盘的各种动作
可视化编程十问1
什么是可视化程序设计?可视化(Visual)程序设计是一种全新的程序设计方法,它主要是让程序设计人员利用软件本身所提供的各种控件,像搭积木式地构造应用程序的各种界面
2
可视化程序设计有哪些优点?可视化程序设计最大的优点是设计人员可以不用编写或只需编写悔瞎则很少的程序代码,就能完成应用程序的设计,这样就能极大地提高设计人员的工作效率
3
能够进行可视化程序设计的语言有哪些?能进行可视化程序设计的语言很多,比较常用的有微软的VisualBasic、VisualC++、中文VisualFoxpro、Borland公司的Delphi等
4
可视化程序设计中有哪些基本概念?主要的几个基本概念有表单、组件、属性、事件、方法等
5
什么是表单(Form)?表单是指进行程序设计时的窗口,我们主要是通过在表单中放置各种部件(如命令按钮、复选框、单选框、滚动条等)来布置应用程序的运行界面
6
什么是组件?所谓组件,就是组成程序运行界面的各种部件,如:命令按钮、复选框、单选框、滚动条等
7
什么是属神慎性?属性就是组件的性质
它说明组件在程序运行的过程中是如何显示的、组件的大小是多少、显示在何处、是否可见、是否有效8
属性可以分成哪几类?属性可分成三类,设计属性:是在进行设计时就可发挥作用的属性;运行属性:这是在程序运行过程中才发挥作用的属性;只读属性:是一种只能查看而不能改变的属性
9
什么是事件?事件就是对一个组件的操作
如用鼠标点击一个命令按钮,在这里,点击鼠标就称为一个事件(Click事件)
10
什么是方法?方法就是某个事件发生后要执行的具体操作,类似以前的程序
例如当我们用鼠标单击“退出”命令按钮时,程序就会通过执行一条命令而结束运行,命令的执行过程就叫方法
面向对象程序设计1.历史回顾1967年挪威计算中心的KistenNygaard和OleJohanDahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封装,引入了数据抽象和类的概念,它被认为是第一个面向对象语言
20世纪70年代初,PaloAlto研究中心的AlanKay所在的研究小组开发出Smalltalk语言,之后又开发出Smalltalk-80,Smalltalk-80被认为是最纯正的面向对象语言,它对后来出现的面向对象语言,如Object-C,C,Self,Eiffl都产生了深远的影响
随着面向对象语言的出现,面向对象程序设计也就应运而生且得到迅速发展
之后,面向对象不断向其他阶段渗透,1980年GradyBooch提出了面向对象设计的概念,之后面向对象分析开始
1985年,第一个商用面向对象数据库问世
1990年以来,面向对象分析、测试、度量和管理等研究都得到长足发展
实际上,“对象”和“对象的属性”这样的概念可以追溯到20世纪50年代初,它们首先出现于关于人工智能的早期着作中
但是出现了面向对象语言之后,面向对象思想才得到了迅速的发展
过去的几十年中,程序设计语言对抽象机制的支持程度不断提高:从机器语言到汇编语言,到高级语言,直到面向对象语言
汇编语言出现后,程序员就避免了直接使用0-1,而是利用符号来表示机器指令,从而更方便地编写程序;当程序规模继续增长的时候,出现了Fortran、C、Pascal等高级语言,这些高级语言使得编写复杂的程序变得容易,程序员们可以更好地对付日益增加的复杂性
但是,如果软件系统达到一定规模,即使应用结构化程序设计方法,局势仍将变得不可控制
作为一种降低复杂性的工具,面向对象语言产生了,面向对象程序设计也随之产生
2.面向对象程序设计的基本概念面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性碧棚、消息传递
通过这些概念面向对象的思想得到了具体的体现
1)对象对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体
2)类类是具有相同类型的对象的抽象
一个对象所包含的所有数据和代码可以通过类来构造
3)封装封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性
对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限
4)继承继承是让某个类型的对象获得另一个类型的对象的特征
通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性
5)多态多态是指不同事物具有不同表现形式的能力
多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度
6)动态绑定绑定指的是将一个过程调用与相应代码链接起来的行为
动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式
7)消息传递对象之间需要相互沟通,沟通的途径就是对象之间收发信息
消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息
消息传递的概念使得对现实世界的描述更容易
3.面向对象语言一个语言要称为面向对象语言必须支持几个主要面向对象的概念
根据支持程度的不同,通常所说的面向对象语言可以分成两类:基于对象的语言,面向对象的语言
基于对象的语言仅支持类和对象,而面向对象的语言支持的概念包括:类与对象、继承、多态
举例来说,Ada就是一个典型的基于对象的语言,因为它不支持继承、多态,此外其他基于对象的语言还有Alphard、CLU、Euclid、Mola
面向对象的语言中一部分是新发明的语言,如Smalltalk、Java,这些语言本身往往吸取了其他语言的精华,而又尽量剔除他们的不足,因此面向对象的特征特别明显,充满了蓬勃的生机;另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的
如由Pascal发展而来的ObjectPascal,由C发展而来的Objective-C,C,由Ada发展而来的Ada95等,这些语言保留着对原有语言的兼容,并不是纯粹的面向对象语言,但由于其前身往往是有一定影响的语言,因此这些语言依然宝刀不老,在程序设计语言中占有十分重要的地位
4.面向对象程序设计的优点面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计
在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数
其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务
在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问
每个函数都可以具有它们自己的局部数据
下图显示了一个面向过程程序中函数和数据的关系
图1面向过程程序设计中函数和数据的关系示例这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证
面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变
下图显示了一个面向对象程序中对象与函数和数据的关系
图2面向对象程序设计中函数和数据的关系示例比较面向对象程序设计和面向过程程序设计,还可以得到面向对象程序设计的其他优点:1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;2)通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;3)结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;4)通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;6)以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统;7)通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级
面对对象的程序设计方法在数据输入模块内部设计中,采用面向对象的设计方法
[6]面向对象的基本概念如下:对象:对象是要研究的任何事物
从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件
对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体
从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为
在对内的操作通常称为方法
类:类是对象的模板
即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为
类是在对象之上的抽象,对象则是类的具体化,是类的实例
类可有其子类,也可有其它类,形成类层次结构
消息:消息是对象之间进行通信的一种规格说明
一般它由三部分组成:接收消息的对象、消息名及实际变元
面向对象主要特征:封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性
封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的
封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象
继承性:继承性是子类自动共享父类之间数据和方法的机制
它由类的派生功能体现
一个类直接继承其它类的全部描述,同时可修改和扩充
继承具有传递性
继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)
类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复
继承不仅支持系统的可重用性,而且还促进系统的可扩充性
多态性:对象根据所接收的消息而做出动作
同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性
利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法
例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同
多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应
在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性
综上可知,在面对对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念
类和继承是是适应人们一般思维方式的描述范式
方法是允许作用于该类对象上的各种操作
这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性
通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象
而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统
按照BjarneSTroustRUP的说法,面向对象的编程范式:l决定你要的类;2给每个类提供完整的一组操作;3明确地使用继承来表现共同点
由这个定义,我们可以看出:面向对象设计就是“根据需求决定所需的类、类的操作以及类之间关联的过程”
面向对象设计方法的特点和面临的问题面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换
这是面向对象设计方法最主要的特点和成就
面向对象设计方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法
但是同原型方法一样,面向对象设计方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分,而是一开始就自底向上的采用面向对象设计方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题
所以面向对象设计方法和结构化方法目前仍是两种在系统开发领域相互依存的、不可替代的方法