//防御方法通過輸入參數接收攻擊力,如果攻擊力小于防御力,生命值不受影響,反之傷害值=攻擊力-防御力

成都創新互聯公司成立于2013年,是專業互聯網技術服務公司,擁有項目成都網站設計、做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元瑪納斯做網站,已為上家服務,為瑪納斯各地企業和個人服務,聯系電話:13518219792
public void recovery(int attack){
recovery(15) 是你自己本身定義的方法,用來判斷攻擊力和防御能力的大小從而去改變他們的生命值。
比如就你那參數 15來說。 攻擊是15 防御才10 所以對象會受到15-10=5的傷害
如何寫出好的Java代碼
1. 優雅需要付出代價。
從短期利益來看,對某個問題提出優雅的解決方法,似乎可能花你更多的時間。但當它終于能夠正確執行并可輕易套用于新案例中,不需要花上數以時計,甚至以天計或以月計的辛苦代價時,你會看得到先前所花功夫的回報(即使沒有人可以衡量這一點)。這不僅給你一個可更容易開發和調試的程序,也更易于理解和維護。這正是它在金錢上的價值所在。這一點有賴某種人生經驗才能夠了解,因為當你努力讓某一段程序代碼變得比較優雅時,你并不是處于一種具生產力的狀態下。但是,請抗拒那些催促你趕工的人們,因為那么做只會減緩你的速度罷了。
2. 先求能動,再求快。
即使你已確定某段程序代碼極為重要,而且是系統的重要瓶頸,這個準則依然成立。盡可能簡化設計,讓系統能夠先正確動作。如果程序的執行不夠快,再量測其效能。幾乎你總是會發現,你所認為的”瓶頸”其實都不是問題所在。把你的時間花在刀口上吧。
3. 記住”各個擊破”的原理。
如果你所探討的問題過于混雜,試著想像該問題的基本動作會是什么,并假設這一小塊東西能夠神奇地處理掉最難的部分。這”一小塊”東西其實就是對象–請撰寫運用該對象的程序代碼,然后檢視對象,并將其中困難的部分再包裝成其他對象,依此類推。
4. 區分class開發者和class使用者(使用端程序員)。
Class 使用者扮演著”客戶”角色,不需要(也不知道)class的底層運作方式。Class開發者必須是class設計專家,并撰寫class,使它能夠盡可能被大多數新手程序員所用,而且在程序中能夠穩當執行。一套程序庫只有在具備通透性的情況下,使用起來才會容易。
5.當你撰寫class時,試著給予明了易懂的名稱,減少不必要的注解。
你給客戶端程序員的接口,應該保持概念上的單純性。不了這個目的,當函數的重載(overloading)適合制作出直覺、易用的接口時,請善加使用。
6. 也必你的分析和設計必須讓系統中的classes保持最少,須讓其Public interfaces保持最少,以及讓這些classes和其他classes之間的關聯性( 尤其是base classes)保持最少。
如果你的設計所得結果更甚于此,請問問自己,是否其中每一樣東西在整個程序生命期中都饒富價值?如果并非如此,那么,維護它們會使你付出代價。開發團隊的成員都有不維護”無益于生產力提升”的任何東西的傾向;這是許多設計方法無法解釋的現象。
7. 讓所有東西盡量自動化。先撰寫測試用的程序代碼(在你撰寫class之前),并讓它和class結合在一起。請使用makefile或類似工具,自動進行測試動作。
通過這種方式,只要執行測試程序,所有的程序變動就可以自動獲得驗證,而且可以立即發現錯誤。由于你知道的測試架構所具備的安全性,所以當你發現新的需求時,你會更勇于進行全面修改。請記住,程序語言最大的改進,是來自型別檢查、異常處理等機制所賦予的內置測試動作。但這些功能只能協助你到達某種程度。開發一個穩固系統時,你得自己驗證自己的classes或程序的性質。
8. 在你撰寫class之前先寫測試碼,以便驗證你的class 是否設計完備。如果你無法撰寫測試碼,你便無法知道你的class 的可能長相。撰寫測試碼通常能夠顯現出額外的特性(features)或限制 ( constraints)__它們并不一定總是能夠在分析和設計過程中出現。測試碼也可做為展示class 用法的示例程序。
9. 所有軟件設計上的問題,都可以通過”引入額外的概念性間接層(conceptual indirection)”加以簡化。這個軟件工程上的基礎法則是抽象化概念的根據,而抽象化概念正是面向對象程序設計的主要性質。
10. 間接層(indirection)應該要有意義(和準則-9致)。
這里所指的意義可以像”將共用程序代碼置于惟一函數”這么簡單。如果你加入的間接層(或抽象化、或封裝等等)不具意義,它可能就和沒有適當的間接層一樣糟糕。
11. 讓class盡可能微小而無法切割(atomic)。
賦予每個class單一而清楚的用途。如果你的classes或你的系統成長得過于復雜,請將復雜的classes切割成比較簡單的幾個classes。最明顯的一個判斷指針就是class的大小:如果它很大,那么它工作量過多的機會就可能很高,那就應該被切割。重新設計class的建議線索是:
1) 復雜的switch語句:請考慮運用多態(Polymorphism)。
2) 許多函數各自處理類型極為不同的動作:請考慮切割為多個不同的(classes)。
12. 小心冗長的引數列(argument lists)。
冗長的引數列會使函數的調用動作不易撰寫、閱讀、維護。你應該試著將函數搬移到更適當的class中,并盡量以對象為引數。
13. 不要一再重復。
如果某段程序代碼不斷出現于許多derived class函數中,請將該段程序代碼置于某個base class 函數內,然后在derived class函數中調用。這么做不僅可以省下程序代碼空間,也可以讓修改該段程序代碼動作更易于進行。有時候找出此種共通程序代碼還可以為接口增加實用功能。
14. 小心switch語句或成串的if-else 子句。
通常這種情況代表所謂的”type-check coding”。也就是說究竟會執行哪一段程序代碼,乃是依據某種型別信息來做抉擇(最初,確切型別可能不十分明顯)。你通常可以使用繼承和多態來取代此類程序代碼;Polymorphical method (多態函數)的調用會自動執行此類型別檢驗,并提供更可靠更容易的擴充性。
15. 從設計觀點來看,請找出變動的事物,并使它和不變的事物分離。
也就是說,找出系統中可能被你改變的元素,將它們封裝于classes中。你可以在《Thinking in Patterns with Java》(可免費下載于 www. BruceEckel. Com)大量學習到這種觀念。
16. 不要利用subclassing來擴充基礎功能。
如果某個接口元素對class而言極重要,它應該被放在base class 里頭,而不是直到衍生(derivation)時才被加入。如果你在繼承過程中加入了函數,或許你應該重新思考整個設計。
17. 少就是多。
從class 的最小接口開始妨展,盡可能在解決問題的前提下讓它保持既小又單純。不要預先考量你的class被使用的所有可能方式。一旦class被實際運用,你自然會知道你得如何擴充接口。不過,一旦class被使用后,你就無法在不影響客戶程序代碼的情況下縮減其接口。如果你要加入更多函數倒是沒有問題–不會影響既有的客戶程序代碼,它們只需重新編譯即可。但即使新函數取代了舊函數的功能,也請你保留既有接口。如果你得通過”加入更多引數”的方式來擴充既有函數的接口,請你以新引數寫出一個重載化的函數;通過 這種方式就不會影響既有函數的任何客戶了。
18. 大聲念出你的classes,確認它們符合邏輯。
請base class和derived class 之間的關系是”is-a”(是一種),讓class和成員對象之間的關系是”has-a”(有一個)。
19. 當你猶豫不決于繼承(inheritance)或合成(組合,composition)時,請你問問自己,是否需要向上轉型(upcast)為基礎型別。
如果不需要,請優先選擇合成(也就是是使用成員對象)。這種作法可以消除”過多基礎型別”。如果你采用繼承,使用者會認為他們應該可以向上轉型。
20. 運用數據成員來表示數值的變化,運用經過覆寫的函數(overrided method)來代表行為的變化 。
也就是說,如果你找到了某個 class, 帶有一些狀態變量,而其函數會依據這些變量值切換不同的行為,那么你或許就應該重新設計,在subclasses 和覆寫后的函數(overrided methods)中展現行為止的差異。
21. 小心重載(overloading)。
函數不應該依據引數值條件式地選擇執行某一段程序代碼。這種情況下你應該撰寫兩個或更多個重載函數(overloaded methods)
22. 使用異常體系(exception hierarchies)
最好是從Java標準異常體系中衍生特定的classes, 那么,捕捉異常的人便可以捕捉特定異常,之后才捕捉基本異常。如果你加入新的衍生異常,原有的客戶端程序仍能通過其基礎型別來捕捉它。
23. 有時候簡單的聚合(aggregation)就夠了。
飛機上的”旅客舒適系統”包括數個分離的元素:座椅、空調、視訊設備等等,你會需要在飛機上產生許多這樣的東西。你會將它們聲明為Private成員并開發出一個全新的接口嗎?不會的,在這個例子中,元素也是Public接口的一部分,所以仍然是安全的。當然啦,簡單聚合并不是一個常被運用的解法,但有時候的確是。
24. 試著從客戶程序員和程序維護的角度思考。
你的class應該設計得盡可能容易使用。你應該預先考量可能性有的變動,并針對這些 可能的變動進行設計,使這些變動日后可輕易完成。
25. 小心”巨大對象并發癥”。
這往往是剛踏OOP領域的過程式(procedural)程序員的一個苦惱,因為他們往往最終還是寫出一個過程式程序,并將它們擺放到一個或兩個巨大對象中。注意,除了application framework (應用程序框架,譯注:一種很特殊的、大型OO程序庫,幫你架構程序本體)之外,對象代表的是程序中的觀念,而不是程序本身。
26. 如果你得用某種丑陋的方式來達成某個動作,請將丑陋的部分局限在某個class里頭。
27. 如果你得用某種不可移植方式來達成某個動作,請將它抽象化并局限于某個class里頭。這樣一個”額外間接層”能夠防止不可移植的部分擴散到整個程序。這種作法的具體呈現便是Bridge設計模式(design pattern)。
28. 對象不應僅僅只用來持有數據。
對象也應該具有定義明確界限清楚的行為。有時候使用”數據對象”是適當的,但只有在通用形容器不適用時,才適合刻意以數據對象來包裝、傳輸一群數據項。
29. 欲從既有的classes身上產生新的classes時,請以組合(composition)為優先考量。
你應該只在必要時才使用繼承。如果在組合適用之處你卻選擇了繼承,你的設計就滲雜了非必要的復雜性。
30. 運用繼承和函數覆寫機制來展現行為上的差異,運用fields(數據成員)來展現狀態上的差異。
這句話的極端例子,就是繼承出不同的classes表現各種不同的顏色,而不使用”color”field.
31. 當心變異性(variance)。
語意相異的兩個對象擁有相同的動作(或說責任)是可能的。OO世界中存在著一種天生的引誘,讓人想要從某個class繼承出另一個subclass,為的是獲得繼承帶來的福利。這便是所謂”變異性”。但是,沒有任何正當理由足以讓我們強迫制造出某個其實并不存在的superclass/subclass關系。比較好的解決方式是寫出一個共用的base class,它為兩個derived classes制作出共用接口–這種方式會耗用更多空間,但你可以如你所盼望地從繼承機制獲得好處,而且或許能夠在設計上獲得重大發現。
32. 注意繼承上的限制。
最清晰易懂的設計是將功能加到繼承得來的class里頭;繼承過程中拿掉舊功能(而非增加新功能)則是一種可疑的設計。不過,規則可以打破。如果你所處理的是舊有的class程序庫,那么在某個class的subclass限制功能,可能會比重新制定整個結構(俾使新class得以良好地相稱于舊 class)有效率得多。
33. 使用設計模式(design patterns)來減少”赤裸裸無加掩飾的機能(naked functionality)”。
舉個例子,如果你的class只應該產出惟一一個對象,那么請不要以加思索毫無設計的手法來完成它,然后撰寫”只該產生一份對象”這樣的注解就拍拍屁股走人。請將它包裝成singleton(譯注:一個有名的設計模式,可譯為”單件”)。如果主程序中有多而混亂的”用以產生對象”的程序代碼,請找出類似 factory method這樣的生成模式(creational patterns),使價錢可用以封裝生成動作減少”赤裸裸無加掩飾的機能”(naked functionality)不僅可以讓你的程序更易理解和維護,也可以阻止出于好意卻帶來意外的維護者。
34. 當心”因分析而導致的癱瘓(analysis paralysis)”。
請記住,你往往必須在獲得所有信息之前讓項目繼續前進。而且理解未知部分的最好也最快的方式,通常就是實際前進一步而不只是紙上談兵。除非找到解決辦法,否則無法知道解決辦法。Java擁有內置的防火墻,請讓它們發揮作用。你在單一class或一組classes中所犯的錯誤,并不會傷害整個系統的完整性。
35. 當你認為你已經獲得一份優秀的分析、設計或實現時,請試著加以演練。
將團隊以外的某些人帶進來-他不必非得是個顧問不可,他可以是公司其他團隊的成員。請那個人以新鮮的姿態審視你們的成果,這樣可以在尚可輕易修改的階段找出問題,其收獲會比因演練而付出的時間和金錢代價來得高。實現 (Implementation)
36. 一般來說,請遵守Sun的程序編寫習慣。
價錢可以在以下網址找到相關文檔:java.sun.com/docs/codeconv/idex.html。本書盡可能遵守這些習慣。眾多Java程序員看到的程序代碼,都有是由這些習慣構成的。如果你固執地停留在過去的編寫風格中,你的(程序代碼)讀者會比較辛苦。不論你決定采用什么編寫習慣,請在整個程序中保持一致。你可以在home.wtal.de/software-solutions/jindent上找到一個用來重排Java程序的免費工具。
37. 無論使用何種編寫風格,如果你的團隊(或整個公司,那就更好了)能夠加以標準化,那么的確會帶來顯著效果。這代表每個人都可以在其他人不遵守編寫風格修改其作品,這是個公平的游戲。標準化的價值在于,分析程序代碼時所花的腦力較小,因而可以專心于程序代碼的實質意義。
38. 遵守標準的大小寫規范。
將 class名稱的第一個字母應為大寫。數據成員、函數、對象(references)的第一個字母應為小寫。所有識別名稱的每個字都應該連在一塊兒,所有非首字的第一個字母都應該大寫。例如: ThisIsAClassName thisIsAMethodOrFieldName 如果你在static final 基本型別的定義處指定了常量初始式(constant initializers),那么該識別名稱應該全為大寫,代表一個編譯期常量。 Packages是個特例,其名稱皆為小寫,即使非首字的字母亦是如此。域名(org, net, edu 等等)皆應為小寫。(這是Java 1.1遷移至Java 2時的一項改變) 。
39、不要自己發明”裝飾用的”Private數據成員名稱。
通常這種的形式是在最前端加上底線和其他字符,匈牙利命名法(Hungarian notation)是其中最差的示范。在這種命名法中,你得加入額外字符來表示數據的型別、用途、位置等等。仿佛你用的是匯編語言(assembly language)而編譯器沒有提供任何協肋似的。這樣的命名方式容易讓人混淆又難以閱讀,也不易推行和維護。就讓classes和packages來進行”名稱上的范
圍制定(name scoping)”吧。
40、當你擬定通用性的class時,請遵守正規形式(canonical form)。
包括equals( )、hashCode( )、clone( ) ( 實現出Cloneable),并實現出Comparable和Serialiable等等。
41、對于那些”取得或改變Private數據值”的函數,請使用Java Beans 的”get”、”set”、”is”等命名習慣,即使你當時不認為自己正在撰寫Java Bean。這么做不僅可以輕易以Bean的運用方式來運用你的class,也是對此類函數的一種標準命名方式,使讀者更易于理解。
42、對于你所擬定的每一個class,請考慮為它加入static public test( ),其中含有class功能測試碼。
你不需要移除該測試就可將程序納入項目。而且如果有所變動,你可以輕易重新執行測試。這段程序代碼也可以做為class的使用示例。
43、有時候你需要通過繼承,才得以訪問base class的protected成員。
這可能會引發對多重基類(multiple base types)的認識需求。如果你不需要向上轉型,你可以先衍生新的class發便執行protected訪問動作,然后在”需要用到上述 protected成員”的所有classes中,將新class聲明為成員對象,而非直接繼承。
44、避免純粹為了效率考量而使用final函數。
只有在程序能動但執行不夠快時,而且效能量測工具(profiler)顯示某個函數的調用動作成為瓶頸時,才使用final函數。
45、如果兩個classes因某種功能性原因而產生了關聯(例如容器containers和迭代器iterators),那么請試著讓其中某個class成為另一個class 的內隱類(inner class)。
這不僅強調二者間的關聯,也是通過”將class名稱嵌套置于另一個class 內”而使同一個class 名稱在單一Package中可被重復使用。Java 容器庫在每個容器類中都定義了一個內隱的(inner)Iterator class,因而能夠提供容器一份共通接口。運用內隱類的另一個原因是讓它成為private實現物的一部分。在這里,內隱類會為信息隱藏帶來好處,而不是對上述的class關聯性提供肋益,也不是為了防止命名空間污染問題(namespace pollution)。
46、任何時候你都要注意那些高度耦合(coupling)的 classes.請考慮內隱類(inner classes)為程序擬定和維護帶來的好處。內隱類的使用并不是要去除classes間的耦合,而是要讓耦合關系更明顯也更便利。
47、不要成為”過早最佳化”的犧牲品。
那會讓人神經錯亂。尤其在系統建構初期,先別煩惱究竟要不要撰寫(或避免)原生函數(native methods)、要不要將某些數聲明為final、要不要調校程序代碼效率等等。你的主要問題應該是先證明設計的正確性,除非設計本身需要某種程度的效率。
48、讓范圍(作用域,scope)盡可能愈小愈好,這么一來對象的可視范圍和壽命都將盡可能地小。
這種作法可降低”對象被用于錯誤場所,因而隱藏難以察覺的臭蟲”的機會。假設你有個容器,以及一段走訪該容器的程序片段。如果你復制該段程序代碼,將它用于新的容器身上,你可能會不小心以舊容器的大小做為新容器的走訪上限值。如果舊容器已不在訪問范圍內,那么編譯期便可找出這樣的錯誤。
49、使用Java 標準程序庫提供的容器。
請熟悉他們的用法。你將因此大幅提升你的生產力。請優先選擇ArrayList來處理序列(sequences),選擇HashSet來處理集合(sets)、選擇HashMap來處理關聯式數組(associative arrays),選擇Linkedlist (而不是Stack) 來處理 shacks和queues。
50、對一個強固的(robust)程序而言,每一個組成都必須強固。
請在你所撰寫的每個class中運用Java 提供的所有強固提升工具:訪問權限、異常、型別檢驗等等。通過這種方式,你可以在建構系統時安全地移往抽象化的下一個層次。
51、寧可在編譯期發生錯誤,也不要在執行期發生錯誤。
試著在最靠近問題發生點的地方處理問題。請優先在”擲出異常之處”處理問題,并在擁有足夠信息以處理異常的最接近處理函數(handler)中捕捉異常。請進行現階段你能夠對該異常所做的處理;如果你無法解決問題,應該再次擲出異常。
52、當心冗長的函數定義。
函數應該是一種簡短的、”描述并實現class接口中某個可分離部分”的功能單元。過長且復雜的函數不僅難以維護,維護代價也高。或許它嘗試做太多事情了。如果你發現這一類函數,代表它應該被切割成多相函數。這種函數也提醒你或許得撰寫新的class。小型函數同樣能夠在你的class中被重復運用。(有時候函數必須很大才行,但它們應該只做一件事情。)
53、盡可能保持”Private”。
一旦你對外公開了程序庫的概況(method、Class 或field)。你便再也無法移除它們。因為如果移除它們,便會破壞某個現有的程序代碼,使得它們必須重新被編寫或重新設計。如果你只公開必要部分,那么你便可以改變其他東西而不造成傷害。設計總是會演化,所以這是個十分重要的自由度。通過這種方式,實現碼的更動對derived class 造成的沖擊會降最低。在多線程環境下,私密性格外重要-只有private數據可受保護而不被un-synchronized(未受同步控制)的運用所破壞。
54、大量運用注解,并使用javadoc的”注解文檔語法”來產生程序的說明文檔。
不過注解應該賦予程序代碼真正的意義;如果只是重申程序代碼已經明確表示的內容,那是很煩人的。請注意,通常Java class和其函數的名稱都很長,為的便是降低注解量。
55、避免使用”魔術數字”,也就是那種寫死在程序代碼里頭的數字–如果你想改變它們,它們就會成為你的惡夢,因為你永遠都沒有辦法知道”100″究竟代表” 數組大小”或其他東西。你應該產生具描述性的常量度名稱,并在程序中使用該常量名稱。這使程序更易于理解也更易于維護。
56、撰寫構造函數時,請考慮異常狀態。最好情境下,構造函數不執行任何會擲出異常的動作。
次佳情境下,class 只繼承自(或合成自)強固的(robust)classes,所以如有任何異常被擲出,并不需要清理。其他情況下,你就得在finally子句清理合成后的classes。如果某個構造函數一定會失敗,適當的動作就是擲出異常,使調用者不至于盲目認為對象已被正確產生而繼續執行。
57、如果你的class需要在”客戶程序員用完對象”后進行清理動作,請將清理動作,放到單一而定義明確的函數中。最好令其名稱為cleanup() 以便能夠將用途告訴他人。此外請將boolean旗標放到class中,用以代表對象是否已被清理,使finalize()得以檢驗其死亡條件(請參考第 4章)。
58、finalize() 只可用于對象死亡條件的檢驗(請參考4章),俾有益于調試。
特殊情況下可能需要釋放一些不會被垃圾回收的內存。因為垃圾回收器可能不會被喚起處理你的對象,所以你無法使用finalize()執行必要的清理動作。基于這個原因,你得擬定自己的”清理用”函數。在class finalize()中,請檢查確認對象的確已被清理,并在對象尚未被清理時,擲出衍生自Runtime Exception 的異常。使用這種架構前,請先確認finalize()在你的系統上可正常動作(這可能需要調用System.gc()來確認)。
59、如果某個對象在某個特定范圍(scope)內必須被清理(cleaned up),而不是被垃圾回收機制收回,請使用以下方法;將對象初始化,成功后立刻進入擁有finally子句的一個try區段內。Finally子句會引發清理動作。
60、當你在繼承過程中覆寫了finalize(),請記得調用super. Finalize()。
但如果你的”直接上一層superclass”是Object,,就不需要這個動作。你應該讓super.finalize() 成為被覆寫(overridden)之finalize()的最后一個動作而不是第一個動作,用以確保base class的組件在你需要它們的時候仍然可用。
61、當你撰寫固定大小的對象容器,請將它們轉換為數組–尤其是從某個函數返回此一容器時。
通過這種方式,你可以獲得數組的”編譯期型別檢驗”的好處,而且數組接收者可能不需要”先將數組中的對象加以轉型”便能加以使用。請注意,容器庫的base class (Java. Util. Collection) 具有兩個toArray(),能夠達到這個目的。
62、在interface(接口)和abstract class(抽象類)之間,優先選擇前者。
如果你知道某些東西即將被設計為一個base class,你的第一選擇應該是讓它成為interface;只有在一定得放進函數或數據成員時,才應該將它改為abstract class. Interface只和”客戶端想進行什么動作”有關,class則比較把重心放在實現細節上。
63、在構造函數中只做惟一必要動作:將對象設定至適當狀態。
避免調用其他函數(除了final函數),因為這些函數可能會被其他人覆寫因而使你在建構過程中得不可預期的結果(請參考第7章以取得更詳細的信息)。小型而簡單的構造函數比較不可能擲出異常或引發問題。
64、為了避免一個十分令人泄氣的經驗,請確認你的classpath中的每個名稱,都只有一個未被放到packages里頭class。否則編譯器會先找到另一個名稱相同的class,并回報錯誤消息。如果你懷疑你的classpath出了問題,試著從classpath中的每個起點查找同名的.class文件。最好還是將所有classes都放到packages里頭。
65、留意一不小心犯下的重載(overloading)錯誤。
如果你覆寫base class 函數時沒有正確拼寫其名稱,那么便會增加一個新的函數,而不是覆寫原有的函數。但是情況完全合法,所以你不會從編譯器或執行期系統得到任何錯誤消息–你的程序代碼只是無法正確作用,如此而已。
66、當心過早最佳化。
先讓程序動起來,再讓它快–但只有在你必須(也就是說只有在程序被證明在某段程序代碼上遭遇效能瓶頸)時才這么做。除非你已經使用效能量測工具(profiler)找出瓶頸所在,否則你可能性只是在浪費你的時間。效能調校的”隱藏成本”便是讓你的程序代碼變得更不可讀、更難維持。
67、記住,程序代碼被閱讀的時間多于它被撰寫的時間。
清晰的設計能夠制作出去易懂的程序。注解、細節說明、示例都是無價的。這些東西能夠幫助你和你的后繼者。如果沒有其他信息,那么Java 線上文檔找出一些有用的信息時,你所遭遇的挫敗應該足以讓你相信這一點。
public class Tes {
static int hp = 500;//血量
static int[] wuqi = {20,50,100};//武器
static int gj = 0;//攻擊力
public static void test(){
while (hp0) {//如果血量大于0就繼續循環
int wq=(int)(Math.random()*3);//隨機選擇武器
int sjs=(int)(Math.random()*2)+1;//暴擊
gj = wuqi[wq];
if (sjs==2 gj==100) {//如果武器為魔劍且暴擊,攻擊力翻倍
gj = gj*2;
}
hp=hp-gj;//怪物剩余血量
}
System.out.println("怪物已死亡!");
}
public static void main(String[] args) {
Tes.test();
}
}
對于每個學Java的朋友來說,其他的技能或許不需要你那么地重視,但是學Java的技能一定是得十分重視的,對于Java代碼編寫出色的朋友,企業是一百二十個歡迎的。
Java代碼很大程度上就是一個Java程序員的臉面,那么如何提升寫Java代碼的技能?跟IT培訓一起往下看。
如何提升寫Java代碼的技能呢?1目標,如果你的寫的Java代碼目標是超越你自己,那么很容易達成,今天比明天再進步一點,明天比后天再進步一點就好,每天進步一點,那么你就在不斷的超越自己,但是這個很難衡量,關鍵看你為自己制定的目標,這個就必須你特別的具有自制力,然后有著超凡的執行力。
2.目標,如果你的寫的Java代碼目標是超越別人,那么這個其實也不容易。
你的目標人物,首先確定為誰好呢?超越別人,有時候你的心氣很難平,超越別人,但是超越別人,你能做的更好的地方是什么有時候是特別模糊的,所以這個也得好好思考,目標人物要選對,方法要對,心態也得對。
3.提升,首先有個明確的目標,然后再實際提升Java代碼。
首先是滿足客戶需求寫好你的Java代碼,然后是精益求精修改你的Java代碼,如果只是匆匆忙忙地進入下一個任務中,那么你不可避免地成為了窮忙族。
代碼寫了,但是并沒有實際效率,Java代碼的編寫,最少寫三次吧。
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。 電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。 計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不采用機器語言,因為它非常難于記憶和識別。 目前通用的編程語言有兩種形式:匯編語言和高級語言。 匯編語言的實質和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。 高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,并且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由于省略了很多細節,編程者也就不需要有太多的專業知識。 高級語言主要是相對于匯編語言而言,它并不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。 高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類:執行方式類似于我們日常生活中的“同聲翻譯”,應用程序源代碼一邊由相應語言的解釋器“翻譯”成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。 編譯類:編譯是指在應用源程序執行之前,就將程序源代碼“翻譯”成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。 [NextPage] 學習編程,從何入手 如果樓主想學習編程,卻又不知從何入手,那么樓主不妨看看下面的幾種學習方案,可能會給樓主一些啟示吧! 方案一 Basic語言 Visual Basic 優點 (1)Basic 簡單易學,很容易上手。 (2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。 (3)眾多的控件讓編程變得象壘積木一樣簡單。 (4)Visual Basic 的全部漢化讓我們這些見了English就頭大的人喜不自禁。 缺點 (1)Visual Basic 不是真正的面向對象的開發文具。 (2)Visual Basic 的數據類型太少,而且不支持指針,這使得它的表達能力很有限。 (3)Visual Basic 不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得Visual Basic 的編譯速度大大變慢。 綜述:方案一適合初涉編程的朋友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,并用VB 做出自己的作品。對于那些把編程當做游戲的朋友來說,VB 是您最佳的選擇。 Basic/Visual Basic簡介 方案二 Pascal語言 Delphi 優點 (1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。 (2)Delphi是一門真正的面向對象的開發工具,并且是完全的可視化。 (3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。 (4)Delphi具有強大的數據庫開發能力,可以讓你輕松地開發數據庫。 缺點 Delphi幾乎可以說是完美的,只是Pascal語言的過于嚴謹讓人感覺有點煩。 綜述: 方案二比較適合那些具有一定編程基礎并且學過Pascal語言的朋友。 Pascal語言簡介 Delphi簡介 方案三 C語言 Visual C++ 優點 (1)C語言靈活性好,效率高,可以接觸到軟件開發比較底層的東西。 (2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。 (3)VC是微軟制作的產品,與操作系統的結合更加緊密。 缺點 對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過于專業溝靡話愕謀喑貪 謎哐 捌鵠椿嵊脅恍〉睦 選 綜述: VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那么學習VC你一定不會后悔的。 C語言簡介 方案四 C++語言 C++ Builder 優點 (1)C++語言的優點全部得以繼承。 (2)完全的可是化。 (3)極強的兼容性,支持OWL、VCL和MFC三大類庫。 (4)編譯速度非常快。 缺點 由于推出的時間太短,關于它的各種資料還不太多。 綜述:我認為C++ Builder 是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。 C語言簡介 方案五 SQL語言 Power Builder 對于一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對于初學者來說,PowerBuilder也許是最好的數據庫開發工具。各種各樣的控件,功能強大的PowerBuilder語言都會幫助你開發出自己的數據庫應用程序。 [NextPage] JSP簡介 在Sun正式發布JSP(Java Server Pages)之后,這種新的Web應用開發技術很快引起了人們的關注。JSP為創建高度動態的Web應用提供了一個獨特的開發環境。按照 Sun 的說法,JSP能夠適應市場上包括Apache WebServer 、IIS4.0在內的85%的服務器產品。 JSP與ASP的簡單比較 JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。在ASP或JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴于Web服務器,而ASP和JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然后一起發送給瀏覽器。ASP和JSP都是面向Web服務器的技術,客戶端瀏覽器不需要任何附加的軟件支持。 ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區別。 此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成Servlet并由Java虛擬機執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。 運行環境 執行 JSP 代碼需要在服務器上安裝 JSP 引擎。此處我們使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。為便于學習,這個軟件包提供了大量可供修改的示例。安裝 JSWDK 之后,只需執行 startserver 命令即可啟動服務器。在默認配置下服務器在端口 8080 監聽,使用 即可打開缺省頁面。 在運行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是" work "子目錄下的內容。執行示例頁面時,可以在這里看到 JSP 頁面如何被轉換成 Java 源文件,然后又被編譯成 class 文件(即 Servlet )。 JSWDK 軟件包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在服務器端執行。因此,在瀏覽器中使用"查看源文件"菜單是無法看到 JSP 源代碼的,只能看到結果 HTML 代碼。所有示例的源代碼均通過一個單獨的" examples "頁面提供。 Java Servlet是一種開發Web應用的理想構架。 JSP以Servlet技術為基礎,又在許多方面作了改進。JSP頁面看起來象普通HTML頁面,但它允許嵌入執行代碼,在這一點上,它和ASP技術非常相似。利用跨平臺運行的JavaBean 組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。JSP必將成為ASP技術的有力競爭者。 [NextPage] SQL語言簡介 SQL全稱是“結構化查詢語言(Structured Query Language)”,最早的是IBM的圣約瑟研究實驗室為其關系數據庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的數據庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的數據庫開發系統,都支持SQL語言作為查詢語言。 Structured Query Language包含4個部分: 數據查詢語言DQL-Data Query Language SELECT 數據操縱語言DQL-Data Manipulation Language INSERT, UPDATE, DELETE 數據定義語言DQL-Data Definition Language CREATE, ALTER, DROP 數據控制語言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK SQL的歷史 在70年代初,E.E.Codd首先提出了關系模型。70年代中期,IBM公司在研制 SYSTEM R關系數據庫管理系統中研制了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of RD上公布的。 1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS數據庫系統中也實現了SQL。 1986年10月,美國ANSI采用SQL作為關系數據庫管理系統的標準語言(ANSI X3. 135-1986),后為國際標準化組織(ISO)采納為國際標準。 1989年,美國ANSI采納在ANSI X3.135-1989報告中定義的關系數據庫管理系統的SQL標準語言,稱為ANSI SQL 89, 該標準替代ANSI X3.135-1986版本。該標準為下列組織所采納: ● 國際標準化組織(ISO),為ISO 9075-1989報告“Database Language SQL With Integrity Enhancement” ● 美國聯邦政府,發布在The Federal Information Processing Standard Publication(FIPS PUB)127 目前,所有主要的關系數據庫管理系統支持某些形式的SQL語言, 大部分數據庫打算遵守ANSI SQL89標準。 SQL的優點 SQL廣泛地被采用正說明了它的優點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。 (1) 非過程化語言 SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。 SQL不要求用戶指定對數據的存放方法。 這種特性使用戶更易集中精力于要得到的結果。所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。查詢優化器知道存在什么索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什么類型的索引。 (2) 統一的語言 SQL可用于所有用戶的DB活動模型,包括系統管理員、數據庫管理員、 應用程序員、決策支持系統人員及許多其它類型的終端用戶。基本的SQL 命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。 SQL為許多任務提供了命令,包括: ● 查詢數據 ● 在表中插入、修改和刪除記錄 ● 建立、修改和刪除數據對象 ● 控制對數據和數據對象的存取 ● 保證數據庫一致性和完整性 以前的數據庫管理系統為上述各類操作提供單獨的語言,而SQL 將全部任務統一在一種語言中。 (3) 是所有關系數據庫的公共語言 由于所有主要的關系數據庫管理系統都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程序都是可以移植的。 [NextPage] Java語言簡介 一. Java的由來 當1995年SUN推出Java語言之后,全世界的目光都被這個神奇的語言所吸引。那么Java到底有何神奇之處呢? Java語言其實最是誕生于1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立于平臺的軟件技術,而且在網絡出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網絡的出現改變了OAK的命運。 在Java出現以前。Internet上的信息內容都是一些乏味板的HTML文檔。這對于那些迷戀于WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEN中看到一些交互式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬件平臺就可以執行的應用程序,當然這些程序還要有極大的安全保障。對于用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用于WEB上,并且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。于是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。 二. Java的定義 Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。 Java的開發環境有不同的版本,如sun公司的Java Developers Kit, 簡稱 JDK。后來微軟公司推出了支持Java規范的Microsoft Visual J++ Java開發環境,簡稱 VJ++。 三. Java的特點 1. 平臺無關性 平臺無關性是指Java能運行于不同的平臺。Java引進虛擬機 原理,并運行于虛擬機,實現不同平臺的Java接口之間。使 用Java編寫的程序能在世界范圍內共享。Java的數據類型與 機器無關,Java虛擬機(Java Virtual Machine)是建立在 硬件和操作系統之上,實現Java二進制代碼的解釋執行功能, 提供于不同平臺的接口的。 2. 安全性 Java的編程類似C++,學習過C++的讀者將很快掌握Java的精 髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序 運行時,內存由操作系統分配,這樣可以避免病毒通過指 針侵入系統。Java對程序提供了安全管理器,防止程序的 非法訪問。 3. 面向對象 Java 吸取了C++面向對象的概念,將數據封裝于類中,利用類 的優點,實現了程序的簡潔性和便于維護性。類的封裝性、 繼承性等有關對象的特性,使程序代碼只需一次編譯,然后 通過上述特性反復利用。程序員只需把主要精力用在類和接 口的設計和應用上。Java 提供了眾多的一般對象的類,通 過繼承即可使用父類的方法。在 Java 中,類的繼承關系是單一的非多重的,一個子類 只有一個父類,子類的父類又有一個父類。Java 提供的 Object 類及其子類的繼承關系如同一棵倒立的樹形,根類 為 Object 類, Object 類功能強大,經常會使用到它及其 它派生的子類。 4. 分布式 Java建立在擴展TCP/IP網絡平臺上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網絡上的文件和使用本機文件一樣容易。 5. 鍵壯性 Java致力于檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特征大大提高了開發Java應用程序的周期。Java提供: Null指針檢測、 數組邊界檢測、 異常出口、 Byte code校驗。 四. Java與C/C++語言 Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特征。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。 Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,并增加了一些很有用的功能,如自動收集碎片。 Java去掉了以下幾個C和C++功能: 指針運算 結構 typedefs #define 需要釋放內存 這將減少了平常出錯的50%。而且,Java很小,整個解釋器只需215K的RAM。 面象對象:Java實現了C++的基本面象對象技術并有一些增強,(為了語言簡單,刪除了一些功能)。Java處理數據方式和用對象接口處理對象數據方式一樣。 五. Java與Internet 我們知道,早先的 www 僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。 Java并不是為 Internet,WWW而設計的,它也可以用來編寫獨立的應用程序。Java 是一種面向對象語言。Java 語言類似于 C++ 語言,所以已熟練掌握 C++語言的編程人員,再學習 Java 語言就容易得多!Java 程序需要編譯。實際上有兩種 Java 程序:一種 Java 應用程序是一個完整的程序,如 Web 瀏覽器。一種 Java 小應用程序是運行于 Web 瀏覽器中的一個程序. Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。你能從你的瀏覽器里直接播放聲音。你還能播放頁面里的動畫。Java還能告訴你的瀏覽器怎樣處理新的類型文件。當我們能在2400 baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。 當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火墻,阻止非法侵入。 電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能 與運行于不同平臺的機器的全世界客戶開展業務。Java以其強安全性、平臺無關性、硬件結構無關性、語言簡潔同時面向對象,在網絡編程語言中占據無可比擬的優勢,成為實現電子商務系統的首選語言。 Java程序被放置在Internet服務器上,當用戶訪問服務器時,Java程序被下載到本地的用戶機上,由瀏覽器解釋運行。 [NextPage] PowerBuilder簡介 PowerBuilder的產生 PowerBuilder是美國著名的數據庫應用開發工具生產廠商PowerSoft推出的成功產品,其第一版于1991年6月正式投入市場。它是完全按照客戶/服務器體系結構研制設計的,采用面向對象技術,圖形化的應用開發環境,是數據庫的前端開發工具。 PowerBuilder的特點 它支持應用系統同時訪問多種數據庫,其中既包括Oracel,Sybase之類的大型數據庫,又包括FOXPRO之類支持ODBC接口的小型數據庫,PowerBuilder是完全可視化的數據庫開發工具,它提供了大量的控件,大大加快了項目的開發速度,也使開發者更容易掌握數據庫的開發。 它使用的編程語言叫做工PowerScripr,它也是一種高級的,結構化的編程語言。PowerScript提供了一套完整的嵌入式SQL語句,開發人員可以像使用其它語句一樣自由地使用SQL語言,這樣就大大增強了程序操縱和訪問數據庫的能力。可以說PowerBuilder既適合初學者快速學習數據庫的開發,又可以讓有經驗的開發人員開發出功能強大的數據庫,是一種適用面非常廣的開發工具。 PowerBuilder是一個用來進行客戶/服務器開發的完全的可視化開發環境。使用PowerBuilder,你可以用一種可視的直觀的方式來創建應用程序的用戶界面和數據庫接口。這是一個總的概念,實際上是開發人員使用PowerBuilder去開發應用程序,由于所開發的各種應用程序充分利用了圖形用戶接口(GUI)的優點,所以PowerBuilder被認為是一個圖形工具。 在客戶/服務器結構的應用中,PowerBuilder具有描述多個數據庫連接與檢索的能力。特別是PowerBuilder能從大多數流行的RDBMS中存取數據,且不管數據存放在什麼地方;另外,各種應用程序又可以獨立于RDBMS,因為PowerBuilder可以使用數據庫的標準操作語言SQL(結構化查詢語言)進行。 使用PowerBuilder,可以很容易地開發出功能強大的圖形界面的訪問服務器數據庫的應用程序,PowerBuilder提供了建立符合工業標準的應用程序(例如訂單登記、會計及制造系統)所需的所有工具。 PowerBuilder應用程序由窗口組成,這些窗口包含用戶與之交互的控件。開發人員可以使用所有標準空間(如按鈕、復選框、下拉式列表框或編輯框)以及PowerBuilder提供的特殊的使應用程序更易于開發和使用的控件。 通常人們把PowerBuilder看成是一種開發工具,實際上它比其他工具強得多,是一種強有力的開發環境。開發人員不僅能用它來開發用戶容易使用的各種應用程序還可以通過PowerBuilder修改數據庫,利用400多個內部定義函數,可以開發能和其他應用程序進行的各種應用程序。 PowerBuilder正在成為客戶/服務器應用開發的標準。相對于其他任何客戶/服務器開發環境,PowerBuilder使開發人員的工作更快、成本更低、質量更高、功能更強。 PowerBuilder為應用開發提供了全面綜合性的支持,可以分別概括為如下幾點: 事件驅動的應用程序 功能強大的編程語言與函數 面向對象的編程 跨平臺開發 開放的數據庫連結系統 PowerBuilder開發環境 PowerBuilder開發環境由一系列集成的圖形畫板(Painter)組成,應用開發人員通過簡單的鼠標操作即可設計、建立、交互檢驗和測試客戶/服務器應用程序。 [NextPage] Delphi簡介 Delphi這個名字源于古希臘的城市名。它集中了第三代語言的優點。以Object Pascal為基礎,擴充了面向對象的能力,并且完美地結合了可視化的開發手段。Delphi自1995年3 月一推出就受到了人們的關注,并在當年一舉奪得了多項大獎。 Delphi的出現打破了V承可視化編程領域一統天下的局面。并且Delphi使用了本地編譯器直接生成技術,使程序的執行性能遠遠高于其它產品生成的程序。它還是真正的面向對象的編程語言。PASCAL語言的嚴謹加上可視化的優勢和強大的數據庫功能使得它有充分的資本和微軟的VB叫板。許多人當時都認為Pascal 是最有前途的程序設計語言,并預測Delphi將會成為可視化編程的主流環境。 Delphi在你編好程序后自動轉換成.EXE文件它運行時速度比VB快,而且編譯后不需要其他的支持庫就能運行。它的數據庫功能也挺強的,是開發中型數據庫軟件理想的編程工具。 Delphi適用于應用軟件、數據庫系統、系統軟件等類型的開發。而且它擁有和VB差不多一樣的功能,而且一樣能應用API函數,這在控制Windows很有用。 Delphi是全新的可視化編程環境,為我們提供了一種方便、快捷的Windows應用程序開發工具。它使用了Microsoft Windows圖形用戶界面的許多先進特性和設計思想,采用了彈性可重復利用的完整的面向對象程序語言(Object-Oriented Language)、當今世界上最快的編輯器、最為領先的數據庫技術。對于廣大的程序開發人員來講,使用Delphi開發應用軟件,無疑會大大地提高編程效率,而且隨著應用的深入,您將會發現編程不再是枯燥無味的工作——Delphi的每一個設計細節,都將帶給您一份欣喜。 Delphi的基本形式 Delphi實際上是Pascal語言的一種版本,但它與傳統的Pascal語言有天壤之別。一個Delphi程序首先是應用程序框架,而這一框架正是應用程序的“骨架”。在骨架上即使沒有附著任何東西,仍可以嚴格地按照設計運行。您的工作只是在“骨架”中加入您的程序。缺省的應用程序是一個空白的窗體(form),您可以運行它,結果得到一個空白的窗口。這個窗口具有Windows窗口的全部性質:可以被放大縮小、移動、最大最小化等,但您卻沒有編寫一行程序。因此,可以說應用程序框架通過提供所有應用程序共有的東西,為用戶應用程序的開發打下了良好的基礎。 Delphi已經為您做好了一切基礎工作——程序框架就是一個已經完成的可運行應用程序,只是不處理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代碼而已。 在空白窗口的背后,應用程序的框架正在等待用戶的輸入。由于您并未告訴它接收到用戶輸入后作何反應,窗口除了響應Windows的基本操作(移動、縮放等)外,它只是接受用戶的輸入,然后再忽略。Delphi把Windows編程的回調、句柄處理等繁復過程都放在一個不可見的Romulam覆蓋物下面。
分享文章:最小戰斗力Java代碼 最小戰力編程
網頁URL:http://www.yijiale78.com/article28/hihijp.html
成都網站建設公司_創新互聯,為您提供網站營銷、建站公司、電子商務、商城網站、網站排名、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯