1 / 28

Java 物件導向程式設計

Java 物件導向程式設計. 國立善化高級中學 蕭嘉民. Java 的特性. 自由軟體:學生可免費取得 。 解譯執行位元組碼,可在 不同的 平台上執行。 電腦網路支援:系統物件可分散儲存於不同的電腦(像是運用RMI機制),充份利用電腦分散式處理的效能。 具有C++語言的部分特性:Java捨棄了容易引起錯誤的指標、運算符過載、多重繼承等特性。. 大綱. 程式編譯與執行環境設定 類別與物件 繼承性 Inheritance 封裝性 Encapsulation 多型性 Polymorphism 多載性 overloading 覆蓋性 Overriding.

Download Presentation

Java 物件導向程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java物件導向程式設計 國立善化高級中學 蕭嘉民

  2. Java的特性 • 自由軟體:學生可免費取得。 • 解譯執行位元組碼,可在不同的平台上執行。 • 電腦網路支援:系統物件可分散儲存於不同的電腦(像是運用RMI機制),充份利用電腦分散式處理的效能。 • 具有C++語言的部分特性:Java捨棄了容易引起錯誤的指標、運算符過載、多重繼承等特性。

  3. 大綱 • 程式編譯與執行環境設定 • 類別與物件 • 繼承性Inheritance • 封裝性Encapsulation • 多型性Polymorphism • 多載性overloading • 覆蓋性Overriding

  4. 設定JAVA的工作目錄與環境變數 編輯[系統變數]Path,於[變數值]最後加入C:\Program Files\Java\jdk1.6.0_18\bin ,按下[確定] (路徑依實際安裝jdk版本不同,略有差異)。

  5. 類別與物件 屬性(Attribute):例如飛機類別之屬性:載客量、掛載重量、長度、翼展、高度、翼面積、空重、載重、可用載重、最大起飛重量、最高速度、巡航速度、航程、實用升限、爬升率、翼負荷。 方法(Method):例如:飛機類別之方法:起飛、爬升、降落、巡航、雷達導航,顯示油耗等。波音747是飛機物件,具有飛機類別所定義的屬性與方法。 飛機圖片來源:維基百科http://zh.wikipedia.org/wiki/Wiki,圖表設計:蕭嘉民

  6. 類別與物件的說明

  7. 程序導向與物件導向差異 • 炒泡麵是一種具有金門當地特色的小吃,製作方式分別以使用程序導向與物件導向兩種方式來描述作法。

  8. 程序導向 • 1.倒入2杯250cc的水到鍋子中,並以火煮至沸騰。 • 2.水沸騰,在碗裏把蛋攪伴後,蛋汁倒入鍋子中。 • 3.蛋熟了後,將兩包味味麵放入鍋子中,並加以攪伴。 • 4.一碗香茹肉躁(先行炒過),放入鍋子中與麵條一起炒。 • 5.將韭菜2支切成小薄片,放入鍋中。 • 6.將1把茼莪放入鍋中。 • 7.將2匙沙茶醬加入鍋中,並攪伴均勻,蓋上鍋蓋約1分鐘即可。

  9. 物件導向 水處理好、雞蛋處理好、味味麵處理好、香茹肉躁處理好、韭菜處理好、茼莪處理好、沙茶醬處理好,蓋上鍋蓋約1分鐘即可。

  10. 物件的抽象化說明與實例 圖片來源:維基百科http://zh.wikipedia.org/wiki/Wiki

  11. 物件的抽象化說明與實例 地圖是抽象化的一種例子,地圖是真實地形的抽象化結果,上面只需提供使用者所需的資訊(方向、距離、街道名稱),如右上圖之街道地圖。 右下圖之真實地形存在著巨細靡遺的資訊:如某個地方有幾棵樹(種類、高度…)、幾棟建築物(樓高、日式風格、巴洛克風格…)、幾條馬路(寬度、長度、路名…)、各式地形地物等等。 資料來源:取自Google地圖資料

  12. 範例程式1:實作如何由類別建立物件

  13. 物件導向設計-繼承

  14. 物件導向設計-繼承

  15. 物件導向程式實作方式 • 物件導向程式在實作上有兩種方式,分別是“is a”與“has a ”,繼承是一種is a 或 is a kind of的關係 • “is a”意義上為“是一種” • “has a ”:意義上為“有一個” 

  16. 物件導向程式實作方式 class plane //飛機類別 { ….. } public fighter extends plane //is a:戰鬥機類別fighter繼承飛機類別 { radar a_radar ; //has a:戰鬥機類別fighter 包含的屬性 missilea_missile ; oil-box a_oilbox; }

  17. 範例程式2:實作inheritance.java 類別繼承

  18. 物件導向設計-封裝 • 減低了程式設計的複雜性 • 維護物件存取的一致性與安全性-在物件狀態隱藏的過程,程式只能使用一致的方法,來存取物件的內部資料或方法,以保障物件完整與安全。

  19. 範例程式3:實作daughter.java 說明封裝性

  20. 物件導向設計-多型 • 多型是在繼承關係下,單一物件實體可以被宣告成多種型別 • 多型是為了能開發出可擴充的程式,讓程式開發人員在程式撰寫上更有彈性。多型在不同的情形下,扮演不同的角色,函式在執行的時候,面對不同的型別或物件能有自動相對應的操作及功能。 • Bicycle a_Bicycle = new Bicycle() 使用腳踏車類別的方式,來看待物件a_Bicycle。 • Vehicle b_Bicycle = new Bicycle() 使用交通工具類別的方式,來看待物件b_Bicycle • Bicycle c_Bicycle = new Vehicle ("KHS","摺疊車","black") 建立物件,會造成程式編譯錯誤。從邏輯的觀點來看,如果把所有交通工具看成是腳踏車,這是不合理的。

  21. 範例程式4:實作Polymorphism.java多型性說明

  22. 多型範例練習

  23. 物件導向設計-多載overloading • 多載,在原始碼中的同一段程式,可以對不同的資料型別或不同的class物件進行操作。如果沒有使用多載,程式必須為了處理不同的騎○○,必須寫出不同的類別方法。 • 騎腳踏車、摩托車、馬,因為處理的訊息相異,動作就不同。 class Person { ... void rideBicycle(Bicycle a_Bicycle) //騎腳踏車 {... } void rideMotorcycle(Motorcycle a_Motorcycle ) //騎摩托車 {... } void rideHorse(Horse a_Horse ) //騎馬 {... } }

  24. 物件導向設計-多載overloading 使用多載概念後,Person類別有三個ride()類別方法,可使騎ride動作有一致對應方法,到底該執行一個,是依照傳入的參數型態(Bicycle、Motorcycle、Horse)來做判斷的。 class Person { ... void ride(Bicycle a_Bicycle) //騎腳踏車 {... } void ride(Motorcycle a_Motorcycle ) //騎摩托車 {... } void ride(Horse a_Horse ) //騎馬 {... } }

  25. 範例程式5:實作範例程式Overloading.java多載

  26. 物件導向設計-覆蓋Overriding • 覆蓋Overriding,子類別透過繼承方式來取代父類別原有的類別方法,程式在執行過程中會執行子類別的方法,而不會執行父類別的方法,透過覆蓋方法,可提高程式的可用性與維持一致性的界面。

  27. 範例程式6:實作範例程式overriding_son.java覆蓋

  28. 謝謝各位指教

More Related