面向?qū)ο蟮木幊痰囊粋€(gè)基本原理 - 隱藏內(nèi)部狀態(tài)和要求的所有交互通過對(duì)象的方法被稱為數(shù)據(jù)封裝來(lái)執(zhí)行。
翻譯自ORACLE Java Tutorials --What Is an Object?
對(duì)象是理解面向?qū)ο蠹夹g(shù)的關(guān)鍵徘钥。 現(xiàn)在看看肢娘,你會(huì)發(fā)現(xiàn)很多真實(shí)世界的例子:你的狗,你的桌子橱健,你的電視機(jī),你的自行車笨忌。
現(xiàn)實(shí)世界的對(duì)象共有兩個(gè)特征:它們都有狀態(tài)和行為俱病。 狗有狀態(tài)(名稱,顏色途凫,品種溢吻,饑餓)和行為(吠叫果元,抓取犀盟,搖擺尾巴)。 自行車還具有狀態(tài)(當(dāng)前檔位阅畴,當(dāng)前踏板節(jié)奏,當(dāng)前速度)和行為(改變檔位监署,改變踏板節(jié)奏纽哥,施加剎車)。 識(shí)別現(xiàn)實(shí)世界對(duì)象的狀態(tài)和行為是開始面向?qū)ο缶幊趟伎嫉暮梅椒ā?/p>
現(xiàn)在要花一點(diǎn)時(shí)間來(lái)觀察你眼前的現(xiàn)實(shí)世界中的物體晓避。 對(duì)于你看到的每個(gè)對(duì)象只壳,問自己兩個(gè)問題:“這個(gè)對(duì)象可能在哪些狀態(tài)?” 和“該對(duì)象執(zhí)行什么可能的行為吕世?”梯投。 確保寫下你的觀察。當(dāng)你這樣做尔艇,你會(huì)注意到么鹤,現(xiàn)實(shí)世界的對(duì)象在復(fù)雜中變化。你的臺(tái)式電腦燈可能只有兩種可能的狀態(tài)(開啟和關(guān)閉)和兩種可能的行為(打開棠耕,關(guān)閉)柠新,但你的臺(tái)式電臺(tái)可能具有其他狀態(tài)(開,關(guān)恨憎,當(dāng)前音量,當(dāng)前電臺(tái))和行為(打開 瓤荔,關(guān)閉,增加音量输硝,減小音量腔丧,尋找,掃描和調(diào)諧)愉粤。 你還可能會(huì)注意到,一些對(duì)象反過來(lái)也將包含其他對(duì)象如蚜。 這些現(xiàn)實(shí)世界的觀察全部轉(zhuǎn)化為面向?qū)ο缶幊痰氖澜纭?/p>
- 軟件對(duì)象在概念上類似于現(xiàn)實(shí)世界對(duì)象:它們也包括狀態(tài)和相關(guān)行為影暴。 對(duì)象將其狀態(tài)存儲(chǔ)在字段(某些編程語(yǔ)言中的變量)中,并通過方法(某些編程語(yǔ)言中的函數(shù))公開其行為撬呢。方法(Methods )對(duì)對(duì)象的內(nèi)部狀態(tài)進(jìn)行操作妆兑,并作為對(duì)象同對(duì)象通信的主要機(jī)制。
面向?qū)ο蟮木幊痰囊粋€(gè)基本原理 - 隱藏內(nèi)部狀態(tài)和要求的所有交互通過對(duì)象的方法被稱為數(shù)據(jù)封裝來(lái)執(zhí)行芯勘。
- 考慮一輛自行車腺逛,例如:
- 通過歸因于狀態(tài)(當(dāng)前速度,當(dāng)前踏板節(jié)奏和當(dāng)前檔位)安疗,并提供改變狀態(tài)的方法茄靠,該對(duì)象仍然控制外部世界如何被允許使用它。 例如慨绳,如果自行車只有6檔真竖,則改變齒輪的方法可以拒絕小于1或大于6的任何值厌小。
將代碼捆綁到各個(gè)軟件對(duì)象中提供了許多好處,包括:
模塊化:
對(duì)象的源代碼可以與其他對(duì)象的源代碼獨(dú)立編寫和維護(hù)讨韭。 一旦創(chuàng)建癣蟋,一個(gè)對(duì)象可以很容易地傳遞到系統(tǒng)內(nèi)部。信息隱藏:
僅通過與對(duì)象的方法進(jìn)行交互濒生,其內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)將從外部世界隱藏起來(lái)幔欧。代碼重用:
如果對(duì)象已經(jīng)存在(也許由另一個(gè)軟件開發(fā)人員編寫),你可以在程序中使用該對(duì)象礁蔗。 這允許專家實(shí)現(xiàn)/測(cè)試/調(diào)試(implement/test/debug)復(fù)雜的,任務(wù)特定的對(duì)象浴井,然后你可以信任地在自己的代碼中運(yùn)行他們。可插拔性和調(diào)試(Pluggability and debugging)簡(jiǎn)便性:
如果特定的對(duì)象變得有問題厉碟,您可以將其從應(yīng)用程序中刪除屠缭,并插入不同的對(duì)象作為替換崭参。 這類似于在現(xiàn)實(shí)世界中修復(fù)機(jī)械問題。 如果螺栓斷裂何暮,則更換它,而不是整個(gè)機(jī)器跨新。