面向?qū)ο笏枷?/h1>

“上帝創(chuàng)造了人,并給了人思想焙糟,而思想是決定萬物的根本尺度” ——引


面向?qū)ο蟮母拍?/h1>

面向?qū)ο笾该嫦蚩陀^規(guī)律之間的關系题翻,人類平常的思維方式就是面向?qū)ο蟮呐旁祝匀唤绲氖挛锱c事物之間是對象與對象之間的關系褐鸥。我們要解決一個問題時线脚,這個問題就變成了對象赐稽,而這個過程就變成了面向?qū)ο蟆?/p>

一切都是對象

(1) 所有東西都是對象叫榕。可將對象想象成一種新型變量姊舵;它保存著數(shù)據(jù)晰绎,但可要求它對自身進行操作。理論上講括丁,可從要解決的問題身上提出所有概念性的組件荞下,然后在程序中將其表達為一個對象。

(2) 程序是一大堆對象的組合史飞;通過消息傳遞尖昏,各對象知道自己 該做些什么。為了向?qū)ο蟀l(fā)出請求构资,需向那個對象“發(fā)送一條消息”抽诉。更具體地講,可將消息想象為一個調(diào)用請求吐绵,它調(diào)用的是從屬于目標對象的一個子例程或函數(shù)迹淌。

(3) 每個對象都有自己的存儲空間,可容納其他對象己单“η裕或者說,通過封裝現(xiàn)有對象纹笼,可制作出新型對象纹份。所以,盡管對象的概念非常簡單廷痘,但在程序中卻可達到任意高的復雜程度蔓涧。

(4) 每個對象都有一種類型。根據(jù)語法牍疏,每個對象都是某個“類”的一個“實例”蠢笋。其中,“類”( Class )是“類型”( Type )的同義詞鳞陨。一個類最重要的特征就是“能將什么消息發(fā)給它昨寞?”瞻惋。

(5) 同一類 所有對象都能接收相同的消息。這實際是別有含義的一種說法援岩,大家不久便能理解歼狼。由于類型為“圓”( Circle )的一個對象也屬于類型為“形狀”( Shape )的一個對象,所以一個圓完全能接收形狀消息享怀。這意味著可讓程序代碼統(tǒng)一指揮“形狀”羽峰,令其自動控制所有符合“形狀”描述的對象,其中自然包括“圓”添瓷。這一特性稱為對象的“可替換性”梅屉,是 面向?qū)ο笞钪匾母拍钪弧?br> 面向?qū)ο蠼o我們帶來了極大的靈活性,面向?qū)ο缶幊讨形覀兏雨P注的是對象與對象的關系鳞贷,整體的架構(gòu)也就是各個對象之間的關系坯汤。

面向?qū)ο笳Z言的主要特性

這里用java語言來描述

【1】封裝性

封裝體現(xiàn)的是軟件的內(nèi)部有更好的模塊性基礎,
強調(diào)的是“高內(nèi)聚搀愧、低耦合”惰聂,防止程序因相互依賴性而帶來的變動影響。面向?qū)ο蠓庋b的基本單位是對象咱筛,它比傳統(tǒng)的語言更為清晰搓幌,封裝的主要內(nèi)容是對象的屬性以及行為。在一個類中迅箩,對象的屬性用變量或常量來表示溉愁,行為用方法來定義,方法可以直接訪問對象中的一個或多個屬性沙热。把對同一個對象的進行操作的方法和相關的方法放在同一個類中叉钥,把同一個對象的操作和數(shù)據(jù)放在同一個類中。
例如:一個女孩想用手機進行自拍然后分享出去 這個過程就涉及到女孩篙贸、手機投队、自拍照幾個對象,而女孩本身是不能直接生成照片的 拍照是手機里面的功能 所以女孩是使用手機去拍照的 拍照以及分享照片的功能就相當于手機里面封裝的方法爵川,女孩不需要知道它是怎么實現(xiàn)的敷鸦,而是直接調(diào)用手機→拍照這個對象的方法來實現(xiàn)自拍。
這就是面向?qū)ο蟮姆庋b性寝贡。這個例子應該比較形象了……

【2】抽象性

抽象就是找出一些事物的相似和共性之處扒披,然后把它們歸類到一類事物中去,只考慮這些事物
的共性之處圃泡,忽略與這些事物無關的東西碟案。
例如:每個人都有自己的年齡、名字和生日 這些東西是人共同擁有的颇蜡。
如: 定義一個Person類

 class Person{
   String name;
   int age;
   String birthday价说;
  }

人是有多個方面屬性的事物辆亏,而當前只需了解人的這些最基本的信息,就把它們歸到一個類中鳖目,
這就是一種抽象扮叨。當我們需要時,就根據(jù)不同的對象來傳入對應的參數(shù)领迈,而不需要為每個對象都去重新定義屬性彻磁。抽象就是根據(jù)當前需要的東西去將他們歸類,而不必考慮與它無關的事情狸捅。

【3】繼承性

在定義和實現(xiàn)一個類時衷蜓,可以在一個已經(jīng)存在的類的基礎上來進行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容薪贫,并且可以繼續(xù)添加新的內(nèi)容恍箭,或者根據(jù)自己的需要進行修改刻恭,這就是繼承瞧省。
舉個很簡單的例子:
定義一個父類

    class Father{
public   abstract void property();
}

然后 定義一個子類

   class Son extends Father{
  public   void property()鳍贾;
 }

這里定義了一個父類和一個子類鞍匾,兒子在父親死后要繼承父親的財產(chǎn)。因為不是和父親做同一種行業(yè)骑科,所以可以把繼承的財產(chǎn)用來自己做生意橡淑。
面向?qū)ο笾械睦^承類似于此。

【4】多態(tài)性

多態(tài)(也稱作動態(tài)綁定咆爽、后期綁定或運行時綁定)是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時并不確定梁棠,而是在程序運行期間才能夠確定。多態(tài)通過分離做什么和怎么做斗埂,從另一個角度將接口和實現(xiàn)分離開來符糊。多態(tài)不但能夠改善代碼的組織結(jié)構(gòu)和可讀性,還能夠創(chuàng)建可擴展的程序——即無論在項目最初創(chuàng)建時還是在需要加新功能時都可以“生長”的程序呛凶。多態(tài)方法調(diào)用允許一種類型表現(xiàn)出與其它類型相似的區(qū)別男娄,只要他們都是從同一個父類導出的。不修改原程序代碼漾稀,就可以改變程序運行時所綁定的具體代碼模闲,讓程序可以選擇多個運行狀態(tài),極大的增強了程序的靈活性崭捍。
例子:假設在節(jié)假日尸折,和朋友聚在一起,這時突然有人提出一個抽牌游戲殷蛇∈导校……于是我們多態(tài)性就開始了拣播,首先拿來一副撲克牌,你和朋友一人抽一張牌收擦,然后把抽出的牌攤開來比較大小贮配。
先看看如下代碼

   Board play=playfactory.getBoard();
   player.openBoard(player1)塞赂;

我們抽撲克牌時是隨機的泪勒,調(diào)用getBoard方法抽取到牌后我們并不知道這張牌數(shù)字是多大。每個人抽到的牌都是不一樣的宴猾,也就是說這個過程所得到的對象是不一樣的圆存,而每個人抽牌以及攤開牌的流程都是一樣的,最后在使用openBoard方法分別翻開抽到的牌時才知道自己抽到的牌真正的數(shù)字……(這就類似于動態(tài)綁定 運行時才知道結(jié)果)


從世界的角度來看仇哆,不同對象之間的相互作用與通信構(gòu)成了完整的世界沦辙,世界因本孤立的對象的相互影響而變得豐富,對面向?qū)ο蟮睦斫庖彩菍ΜF(xiàn)實世界的理解讹剔,只有這樣才能更好地與現(xiàn)實世界結(jié)合油讯。

從面向過程到面向?qū)ο笾饕淖兣c提升的是人的思想與思考方式,因此應該用面向?qū)ο蟮谋举|(zhì)去看世界延欠,面向?qū)ο蟮乃枷肽岸摇⒓夹g(shù)能幫助我們構(gòu)建與現(xiàn)實世界相適應的問題模型,并保持著他們的結(jié)構(gòu)由捎、關系和行為模式兔综。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狞玛,隨后出現(xiàn)的幾起案子软驰,更是在濱河造成了極大的恐慌,老刑警劉巖心肪,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭亏,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒙畴,警方通過查閱死者的電腦和手機贰镣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膳凝,“玉大人碑隆,你說我怎么就攤上這事〉乓簦” “怎么了上煤?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長著淆。 經(jīng)常有香客問我劫狠,道長拴疤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任独泞,我火速辦了婚禮呐矾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘懦砂。我一直安慰自己蜒犯,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布荞膘。 她就那樣靜靜地躺著罚随,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羽资。 梳的紋絲不亂的頭發(fā)上淘菩,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音屠升,去河邊找鬼潮改。 笑死,一個胖子當著我的面吹牛弥激,可吹牛的內(nèi)容都是我干的进陡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼微服,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缨历?” 一聲冷哼從身側(cè)響起以蕴,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辛孵,沒想到半個月后丛肮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡魄缚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年宝与,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冶匹。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡习劫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嚼隘,到底是詐尸還是另有隱情诽里,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布飞蛹,位于F島的核電站谤狡,受9級特大地震影響灸眼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伟件。 院中可真熱鬧援奢,春花似錦、人聲如沸诈悍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闸天。三九已至,卻和暖如春斜做,著一層夾襖步出監(jiān)牢的瞬間苞氮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工瓤逼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笼吟,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓霸旗,卻偏偏與公主長得像贷帮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诱告,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容