上机浅谈 C++ 和 JAVAppt课件_第1页
上机浅谈 C++ 和 JAVAppt课件_第2页
上机浅谈 C++ 和 JAVAppt课件_第3页
上机浅谈 C++ 和 JAVAppt课件_第4页
上机浅谈 C++ 和 JAVAppt课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上機淺談 C+ 與 JAVA張芷燕 90.5.22 Part I 上機淺談 C+何謂物件導向n在軟體發展時,甚至寫程式時,物件成為腦海裡的主角,函數和資料變成物件內的一部份。n程式設計之核心工作在於描述物件、組織物件、安排物件之溝通傳遞訊息方式。物件之分類與組織n類別的永恆性n 類別比物件較具有永恆性,在軟體設計過程中,當我們找到物件時,也必須掌握此物件之類別。n例如:某公司有A、B兩位推銷員。這時我們就找到推銷員是類別, A 、B是此類別中的兩個物件。父子類別關係鞋子慢跑鞋球鞋籃球鞋網球鞋Base Class(Super Class)SubClass(Derived class)整體部分關係

2、汽車引擎輪胎WholePartTurbo C+之特色nTurbo C+是Turbo C的擴充,也保存了Turbo C原有的功能。nTurbo C+擴充的部分包括:n 1. 語法上的擴充n 2. OOP之擴充語法上的擴充n多重定義函數及符號n參考引數n自然設定引數nInline functionn函數原型觀念nnew與delete符號nStream I/OOOP之擴充n類別n朋友函數n虛擬類別及函數n建構者與除構者n多元物件與函數n抽象資料型態n繼承類別 ( Class )n類別之任務是把資料和函數組織並封裝起來。n class 類別名稱 n 資料 1n 資料 2n n 函數 1n 函數 2n

3、n(資料成員)(成員函數)C+ Example#1#includeclass Tree public : int age; double height; void input ( double hei ) height = hei; ;void main( ) Tree a; a.input (2.1);C+ Example#1 (Cont.)#includeclass Tree public : int age; double height; void input ( double hei );Void Tree:input( double hei ) height = hei; void

4、main( ) Tree a; a.input (2.1);資料保護 nC+ 新增了三個關鍵字來處理關於型別成員的保護,這 三個關鍵字都可直接使用於型別的定義之中,只須在關鍵字 後面加個冒號。除非遇到一個新的關鍵字,否則其後的成員 ,不論是資料或函數,都會被此關鍵字所限制住。 C這三個 關鍵字分別是: npublic nprivate nprotected 資料保護 ( Cont. )npublic代表公用的意思,也就是說,程式中的每一個 變數、函數、物件都可以任意使用這個成員而沒有限制。 nprivate 是私用的意思,除了這個型別以外,其他類 別都不能使用私用的成員。 nprotected

5、 是受到保護的意思,意義上和 private是 一樣的,但是如果有一個衍生型別繼承了這個型別,則這 個衍生型別仍然可以使用這些受到保護的成員。同樣的情 形,衍生型別卻不能使用基底型別的 private成員。 朋友函數n所謂朋友函數,其實是一般的函數,但是某類別中經由 friend關鍵字宣告其為此類別的朋友函數,則此函數便可以 自由使用此類別的成員,不論其為 public 、 private還是 protected 。宣告某一個函數為朋友函數只需在類別的定義 中加上函數宣告,前面並加上 friend 關鍵字即可。 n朋友函數並非此類別中的成員函數。C+ Example#2#includeclas

6、s Time int hour, minute; public : int month, day; Time( int hour, int min, int mon, int da ) hour = h; minute = min; month = mon; day = da; xhour() return hour; xmin() return minute; friend void report ( Time a );C+ Example#2 ( Cont. )void report ( Time a ) cout “nhour:” a.hour “nminute:” a.minute “

7、nmonth:” a.month “nday:” a.day ; void main( ) Time a ( 22, 50, 8, 15 ); report( a ); 繼承 (Inheritance )C+ 的繼承機能,主要有以下幾點特性: 1.新的物件可以從舊的物件繼承而來。 2.新的物件繼承舊的物件時,並不會把舊的物件的程式碼拷 貝一份到新的物件中,造成程式碼的重複。 3.新的物件可以加入新的資料成員和成員函數。 4.新的物件也可以對舊的物件的行為重新定義。 5.程式設計師不需要舊的物件的原始程式碼。 C+ Example#3#includeclass Tree public : int

8、 age; double height; void input ( int ag, double hei ) age = ag; height = hei; ;Class Fruit_tree : public Tree public: int month; double price; double input_price( double pri ) price = pri; C+ Example#3 (Cont.) double compute_amount( double weight ) return ( weight*price ); ;void main( ) double amou

9、nt; Fruit_tree a; a.input( 2, 15.0 ); a.input_price( 20.0 ); amount = apute_amount( 25.0 );Part II 上機淺談 JAVAJAVA 誕生 1991年,Sun成立了一個小組研究一個可以控制家電產品的新軟體技術,這個小組希望能研究出一種可以在不同硬體上做控制的系統,剛開始的時候他們試著擴展C+的功能,後來遇到一些編譯器技術上的難題,最後決定另起爐灶,自行發展新的程式語言Oak,這個程式語言早期的發展並不順利,在爭取電視機上的電腦控制器專案失敗後,整個小組被分散,只剩下幾個人在研究將這種電腦技術應用到CD-

10、ROM和多媒體上,後來Sun將Oak改為Java,並將這種技術移植到Web網路上。JAVA 的特性 Java是一種簡單,物件導向,分散式,直譯,強韌,平安,架構中立,可移植,高效率,多重線串,動態的新程式語言。Java的程式架構和C+類似,但刪除C+的一些功能,如指標,運算元重覆定義(Operator Overloading),多重繼承(MultiInheritance)和自動強迫同型Automatic Coercions),另外Java提供了記憶體資源回收(Auto garbage collection)使程式員可以不用去留意記憶體殘留的問題。物件導向 (Object Oriented) J

11、ava的物件導向功能來自C+,運用物件導向的技術可以使原本非常胖的大系統變得更簡捷,以及容易維護。強韌 (Robust) Java計劃一開始是用來控制先進的家電產品,當然不希望使用此系統的微波爐煮到一半當機。Java要求你在系統發展初期便做明確的定義,而如果有錯誤的地方,在編譯的時候就會出現錯誤的訊息,雖然這樣做並不能排除品質確認的問題,不過它讓這道程序變得簡單許多。平安 (Secure) Java另一個目的是要提供網路,分散式運算環境,一個Java程式在編譯後會轉成byte code,其中並含有 public-key加密演算法,以確保程式不會遭病毒侵入。另外是採用Reference 而非指標

12、,讓應用程式不可能利用指標偽造資料結構的存取權,進而更改物件內部資料。架構中立性 (Architecture Neutral) Java的設計目標是要支援網路應用程式,你的程式可以編譯成byte code後存在server上,而不管你用的機器是PC或工作站,只要你的瀏覽器支援Java,你就可以透過網路抓到byte code並加以執行。可移植、直譯 (Portable、Interpreted) 在Java的規範中並無任何架構相依性,Java byte code可以透過網路傳送到各角落,並在支援Java直譯器的機器上執行,而在byte code裡面含有一些Compile time的資訊,這樣使得程

13、式更容易偵錯。高效能 (High Performance) Byte code的格式在設計上即考慮到機器碼的產生,因此產生實際的機器碼有一定的品質,在Java白皮書中就說明在Sun SPARC 10上測試,Byte code轉換成機器碼後執行的速度,幾乎和C、C+沒什麼兩樣。多重線串 (Multi Thread) 在比較複雜的系統,有時會希望一些事情能同步進行,以提供良好的互動與回應,不幸的是設計一個同時處理許多事件的程式,其複雜度遠較單一事件處理程式要難上許多,Java擁有一組高複雜度的同步化基本單元,使得程式間的同步容易且更強韌。Two program styles in JAVAnApp

14、lication一般的應用程式nApplet應用在網路上(WWW)JAVA Applicationn只能包含一個 public class,並且在此class中,包含main()的主程式。nFile name必須和public class的名稱相同,大小寫也必須相同。n在JAVA程式中,所有Class的名稱開頭第一個字必須大寫。n程式註解與C+一样,运用 / 或 /*/。JAVA Application Example#1/ Welcome1.javapublic class Welcome1 public static void main( String args ) System.out.

15、println(“Welcome to JAVA Programming!”); JAVA Application 執行方式n在程式所在目錄下,編譯Welcome1.javan c: javac Welcome1.javan 就會產生 Welcome1.class。n接下來,透過JAVA直譯器執行:n c: java Welcome1n 就可以得到執行結果。Example#1 執行結果JAVA Application Example#2/ Welcome2.javaimport javax.swing.JOptionPane;public class Welcome2 public stati

16、c void main( String args ) JOptionPane.showMessageDialog( null, “Welcome to JAVA!” ); System.exit(0); Example#2 執行結果JAVA Applet 生命週期 當一個含有 Applet 的 HTML第一次顯示在畫面上時,Browser會送一個init訊息給Applet,Applet會執行init()做初始化的動作,之後再呼叫start()開始執行。當使用者看下一頁的時候,也就是說Applet在畫面上消失了,Browser送出一個stop令Applet執行 stop() 以暫時停止 Appl

17、et的運作,稍後使用者若再回到這個畫面時, Applet 會收到 start 訊息並再次執行, 等到使用者離開這一個HTML,Browser送出destory給Applet,完成一個週期、清除記憶體並釋放出所有資源。JAVA Applet 架構/ MyApplet.javaimport javax.swing.JApplet;import java.awt.Graphics; / GUIpublic class MyApplet extends JApplet .(see next page)JAVA Applet 架構 (Cont.)public void init() public voi

18、d start() public void stop() public void destroy() public void paint() .JAVA Applet Example#3/ Hello.javaimport javax.swing.JApplet;import java.awt.Graphics;public class Hello extends JApplet public void paint( Graphics g ) g.drawString( Hello World! , 25,25 ); Hello.htmlJAVA Applet 執行方式n在程式所在目錄下,編譯

19、Hello.javan c: javac Hello.javan 就會產生 Hello.class,這個步驟與Application相同。n接下來,透過HTML呼叫:n c: appletviewer Hello.htmln 就可以得到執行結果。Example#3 執行結果JAVA Applet Example#4/ Addition.javaimport javax.swing.*;import java.awt.Graphics;public class Addition extends JApplet double sum; public void init() String firstN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论