工作小驛

          Ninja!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks

              4節課中我們初步的了解到了一些面向對象的概念,和一些特性。例如封裝。這節課我們來進一步認識一下,這種思想。對了,在這里我說這是一種思想,是想問題的方法。即使沒有javaC++smalltalk這樣的面向對象語言也有這種思想。其實這種思想在上世紀60年代就已經存在了。還有一個常見的誤區,不光是初學者,就是有些干了幾年的程序員也是這樣,以為用java寫東西就是面向對象,這都是錯誤的。

          那么面向對象到底是什么東西呢?能夠明確的給出概念非常少,但是我們可以分析一下。它與面向過程的思想做一個比較,面向過程是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現過程;面向對象是指,我們考慮問題時,把任何東西看做是對象,以對象為單位,考慮它的屬性及方法。

          好比一個木匠在做一把凳子,如果他是面向過程的木匠,他會想到制作凳子的過程。“先做什么呢?凳子腿?凳子板?用什么工具呢?”。如果他是一個面向對象的木匠,他會把所有的東西看做成對象,“凳子腿,凳子板兩個對象。凳子腿有屬性,長方體的,長度,寬度是多少厘米,有方法釘釘子。凳子板的屬性,正方形,邊長是多少厘米等等問題。”這樣的話,面向對象的木匠會依據這些條件。將一個凳子組裝在一起。最終目的是做成一個凳子,用什么思想方法去做,是值得研究的。

          通過剛才的例子,我們會有一種感覺,面向對象的木匠會對事務量化的分析,用“數學”的方法處理問題似的。好像他更具有進步意義。面向對象的思想也確實有著他的先進之處,它把世界上的所有事務看做成為對象,這樣的話更貼近于現實世界,這樣的話使得邏輯清晰,誰看報告的時候也喜歡看條理清晰的報告啊。這樣使得面向對象的軟件開發,成為上世紀90年代直到現在的主流開發技術。傳統開發方法存在問題

          1.軟件重用性差
                重用性是指同一事物不經修改或稍加修改就可多次重復使用的性質。軟件重用性是軟件工程追求的目標之一。誰愿意來來回回的寫一件事情呢。

          2.軟件可維護性差
                軟件工程強調軟件的可維護性,強調文檔資料的重要性,規定最終的軟件產品應該由完整、一致的配置成分組成。在軟件開發過程中,始終強調軟件的可讀性、可修 改性和可測試性是軟件的重要的質量指標。實踐證明,用傳統方法開發出來的軟件,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。

          3.開發出的軟件不能滿足用戶需要
                用傳統的結構化方法開發大型軟件系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟件系統往往不能真正滿足用戶的需要。

          現在的面向對象的思想已經擴展到很多方面,如數據庫系統、交互式界面、應用結構、應用平臺、分布式系統、網絡管理結構、CAD技術、人工智能等領域。而且他指的是面向對象分析(OOA),面向對象設計(OOD),面向對象編程(OOP),這一套過程了。

           

          下面我們來看一下,經常用到的重要概念,也就是java語言的的OOP特性,這是對于OOP而言的,不含前面的OOAOOD的。因為是初學嘛,還沒有學到怎么分析和設計呢。JavaOOP有三大特性:封裝、繼承、多態

          封裝的概念已經在4說過了,我們講的是,它用權限修飾符private使得屬性不能被外界訪問,像是人的五臟六腑怎么能讓人隨意的碰呢?人的這個屬性也是要封裝的。如有再不明白,請訪問我們的技術論壇

          說一下容易理解的繼承:

          當一個類是另一個類的特例時,這兩個類之間具有父子類的關系。子類繼承了父類的方法和屬性,就是說子類可以重用父類中的這部分代碼。比如:轎車是車的一個特例。轎車是車的子類。就是說,轎車繼承了車的一切特性。繼承用關鍵字extends表示。

          實踐:

          //這是基類

          public class Che {

                         private int wheel = 4;

                         public int getWheel() {

                            return wheel;

                         }   }

                               public class Jiaoche extends Che {

                         private String pinpai = "桑塔納";

                         public String getPinpai() {

                            return pinpai;

                     }   }

                               public class Testche {

                         public static void main(String[] args) {

                            Jiaoche car = new Jiaoche();      

                            int wheels = car.getWheel(); //調用基類的方法

                            String Pinpal = car.getPinpai();//調用本身的方法

                            System.out.println("車有 "+wheels+" 個輪子");

                            System.out.println("轎車的品牌是 "+Pinpal);

                     }   }

          上述例子源碼和附加練習源碼打包下載

          注意:java語言與C++不同只可以從一個父類繼承哦(單繼承)。

          還有就是最難理解的多態了,我們下次課講面向對象的多態性。

          posted on 2007-07-28 10:41 王君 閱讀(158) 評論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 萝北县| 宜川县| 连城县| 漾濞| 湖北省| 延安市| 黎平县| 织金县| 长宁县| 延吉市| 辽阳县| 白朗县| 西峡县| 阳泉市| 晴隆县| 徐州市| 汶川县| 白城市| 璧山县| 台中市| 合肥市| 龙门县| 丹凤县| 盐城市| 南安市| 宜都市| 崇左市| 临洮县| 宁蒗| 西畴县| 萨嘎县| 祁东县| 彝良县| 莒南县| 金寨县| 通州区| 通山县| 通化市| 江安县| 长宁区| 曲水县|