java和UML-2-物件導向

來源:互聯網
上載者:User

標籤:電腦專業   人工智慧   中國人   雲端運算   編寫程式   

    在互連網時代的今天,人工智慧和大資料雲端運算的到來,我們可以看到,電腦的世界越來越趨近人類世界。

從程式設計語言上說,也是同樣越來越趨近人類語言,從開始的機器語言,到後來的組合語言,到進階語言與低級語言分界的C語言,直到現在的物件導向語言。

    機器語言,從名稱上就可以看出,機器語言是電腦能夠直接識別的,我們都知道電腦是二進位的,只能識別0,1。那麼問題就來了,用機器語言編寫程式,那基本不是學電腦的,而是電子的,因此,機器語言真是專業中的專業,也許只能那些技術大咖能暢遊在機器世界,對於我們這種普通人,只可遠觀而已。

由此,組合語言的產生,用標籤代表命令,將極大簡化學習難度,這個時候應該就是我們電腦專業人士的的春天開始到來。

    而c語言的產生,已經基本貼近人類語言了,當然,是歐美國家的語言,與看這篇博文的你,基本沒啥關係,因為看這篇博文的基本都是中國人。但是無論中國美國,至少c語言在理解上,都簡單了太多。但是,這個時候由於硬體發展並不迅速,因此,基本只是寫一些小程式或者寫一些演算法,比如演算法,這個明顯與邏輯能力更貼近,因此,c語言也更注重邏輯的表達,也就是我們平時做事,第一步做什麼,下一步做什麼。。。。這種順序邏輯,非常符合人類做事,但是我們也可以看到,這個基本是一件事一件事的來描述這個世界,因此,c語言也叫結構化過程化的語言,強調演算法或者說軟體的運行過程。

    隨著硬體的發展,大型程式的到來,現在的程式不能只用程式來表達,而系統這個詞可能更貼近。這個時候,物件導向的思想就出來了。所謂的對象我們可以理解為我們所看到所有的一切,人,貓,狗,桌子,電腦,手機等等所有的一切。都是對象,以前是過程流,比如數學考試的時候,做題,c語言就會第一步,第二步的描述做題的步驟,但是物件導向是訊息流程+對象。給一道題,人做題,做完把答案給你。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/8A/37/wKioL1grD43y8BnKAAANoflorWg399.png-wh_500x0-wm_3-wmp_4-s_4116455151.png" title="class1.png" alt="wKioL1grD43y8BnKAAANoflorWg399.png-wh_50" />

    而在這其中,人具體怎麼做,並不強調,這樣從可以看到題目,人,答案,這些名詞。每個名詞都是對象,“把題目給人”,“人做完給出答案”這就是訊息流程,也就是輸入與輸出。

 

    當然,物件導向並不是說沒有過程化的東西,比如,把題目給了人之後,人怎麼實現,還是需要程式員按照過程化的實現,但是在整體結構上,我們並不去強調過程,而是強調對象之間的配合,由部分組成整體,實現系統。

 

    物件導向中“類”這個字,在我們生活中常見,比如人類,分類等等。而物件導向中,類與對象的區別,有時候讓人一頭霧水。下面我將介紹,類與對象的區別:

 

    類與對象的區別很簡單:類是抽象的描述,對象是實際存在的。比如,人類,就是很抽象,只能形容人類有什麼共同點,比如,姓名,性別,年齡,住址,但是並不具體,但是具體到某一個人,比如張三,男,23歲,廣州等,前面對人類共同的描述就是類,張三就是這個類的一個執行個體,也就是對象了。下面我將舉例說明:類要記住一個詞叫:“分類”  如下:

 

手機分為智能手機和非智能手機,智能手機有三星,蘋果,華為。非智能手機有oppo,nokia

由此,可以看出它們的關係為:

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/8A/3B/wKiom1grD5yBemvCAAAxj3DtdXE582.png-wh_500x0-wm_3-wmp_4-s_1687420851.png" title="class2.png" alt="wKiom1grD5yBemvCAAAxj3DtdXE582.png-wh_50" />

程式碼範例:/** *@author LeiGao24 *@data 2016.11.15 *  手機--phone *  智能手機---zhiNeng *  非智能手機 -- feiZhiNeng */class phone{}class zhiNeng extends phone{}class feiZhiNeng extends phone{}//指定程式啟動並執行入口Main函數,也就是從哪裡開始執行程式//由於java是全部物件導向的,也就是說java所有的語句都必須在類中。//因此要聲明一個類,然後將Main函數放到類中。class Main{public static void Main(String[] args){//產生對象zhiNeng sanxing=new zhiNeng();zhiNeng apple=new zhiNeng();zhiNeng huawei=new zhiNeng();feiZhiNeng oppo = new feiZhiNeng();feiZhiNeng nokia = new feiZhiNeng();}}

通過以上代碼可以很好的將上副圖描述出來。

    從上面應該可以理解類與對象了。那麼問題來了,我們平時是怎麼描述一個物體的呢?

通常從兩個方面,一個是它的屬性,另一個就是它的功能。

    例如,接著上例,手機屬性:品牌,尺寸,手機功能:打電話,發簡訊

    650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/8A/3B/wKiom1grEnmgvFtvAAAUR-tGE2U157.png-wh_500x0-wm_3-wmp_4-s_173348343.png" title="phone1.png" alt="wKiom1grEnmgvFtvAAAUR-tGE2U157.png-wh_50" />

由此,我們就可以擴充代碼如下:

    

/***@author LeiGao24*@data 2016.11.15*  手機--phone*  智能手機---zhiNeng*  非智能手機 -- feiZhiNeng*/class phone{String brand;String size;public void call(){System.out.println("phone call ...");}public void mesaage(){System.out.println("phone message");}}class zhiNeng extends phone{//由於智能手機是手機的一個子類,也就是孩子,//所以,智能手機也包含品牌,尺寸,打電話,發簡訊//但是,打電話和發簡訊每個手機實現的方式是不同的,//因此,要把打電話和發簡訊兩個方法重新寫一下public void call(){System.out.println("智能打電話....此手機品牌是"+this.brand+",此手機的大小:"+this.size);}public void mesaage(){System.out.println("智能發簡訊....此手機品牌是"+this.brand+",此手機的大小:"+this.size);}}class feiZhiNeng extends phone{public void call(){System.out.println("非智能打電話....此手機品牌是"+this.brand+",此手機的大小:"+this.size);}public void mesaage(){System.out.println("非智能發簡訊....此手機品牌是"+this.brand+",此手機的大小:"+this.size);}}//指定程式啟動並執行入口Main函數,也就是從哪裡開始執行程式//由於java是全部物件導向的,也就是說java所有的語句都必須在類中。//因此要聲明一個類,然後將Main函數放到類中。class Main{ public static void main(String[] args){//產生對象zhiNeng sanxing=new zhiNeng();sanxing.brand="三星";sanxing.size="5寸";sanxing.call();sanxing.mesaage();zhiNeng apple=new zhiNeng();apple.brand="蘋果";apple.size="4寸";apple.call();apple.mesaage();zhiNeng huawei=new zhiNeng();huawei.brand="華為";huawei.size="4寸";huawei.call();huawei.mesaage();feiZhiNeng oppo = new feiZhiNeng();oppo.brand="oppo";oppo.size="2寸";oppo.call();oppo.mesaage();feiZhiNeng nokia = new feiZhiNeng();nokia.brand="諾基亞";nokia.size="3寸";nokia.call();nokia.mesaage();}}

     運行結果:

        650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/8A/37/wKioL1grFwLxZdXpAABTkHuGPN4337.png-wh_500x0-wm_3-wmp_4-s_3213066263.png" title="result1.png" alt="wKioL1grFwLxZdXpAABTkHuGPN4337.png-wh_50" />       

本文出自 “夕下等花逝” 部落格,請務必保留此出處http://sunshine2624.blog.51cto.com/3959438/1873262

java和UML-2-物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.