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開發中如果不經自頂向下的整體劃分,而是一開始就自底向上的採用面向對象設計方法開發系統,同樣也會造成系統結構不合理、各部分關系失調等問題
所以面向對象設計方法和結構化方法目前仍是兩種在系統開發領域相互依存的、不可替代的方法