• 正文
    • 1 理解接口與實現的區(qū)別
    • 2 使用抽象思維設計接口
    • 3 思考過程
    • 4 總結
  • 相關推薦
申請入駐 產業(yè)圖譜

面向對象的程序設計:以對象的方式進行思考

01/20 13:50
656
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1 理解接口與實現的區(qū)別

以上一篇文章的電視機需要插電使用的例子繼續(xù)來講解:請求對象(電視機),接口(插座),實現(發(fā)電廠)

對電視而言,插電使用,只需要標準的插座即可,具體的電從哪里來,是火力發(fā)電廠,或是太陽能發(fā)電,亦或是畜電池逆變供電,電視機是不需要關心的。

發(fā)電廠或供電設備屬于實現,220V交流電插座屬于接口。改變實現不會對電視機的使用產生影響,而改變接口則會。

    接口:呈現給外部使用的服務屬于接口,進一步將,只需要呈現需要使用的接口。實現:實現的細節(jié)對外部是進行隱藏的,對代碼編寫來說,修改實現是不需要變動用戶代碼的。

2 使用抽象思維設計接口

面向對象編程的一大優(yōu)勢,是可以重用類,而這些可重用的類,接口通常比較抽象。

    具體接口:功能明確抽象接口:通用性高

舉個例子:創(chuàng)建一個出租車對象,有抽象接口(送到機場)和具體接口(左轉、右轉、啟動、停止)

對于抽象接口,送到機場,不管是在哪座城市,哪個位置,都可以到達機場,只是具體的路徑可能會不一樣。

對于具體接口,左轉、右轉、啟動、停止,在每個城市,或每個位置,都需要具體的指明如何到達。

對比來看,抽象接口,更具有通用性。

3 思考過程

在設計類時,為了盡量隱藏內部原理,需要遵循一些規(guī)則:

    只提供需要的接口,也意味著提供的接口盡可能少只有真正需要時才添加接口,不提供超出需求的接口可以先將接口都定義為私有,在開始使用該類時,將需要開放的接口改為公有

3.1 確定用戶

在出租車的示例中,用戶是實際使用系統(tǒng)的人,那用戶具體是指誰呢?

對于要打車的人,確實屬于用戶。

對于出租車司機,想對于出租車這個對象來說,司機也屬于客戶。

注意:這里實際有3個對象:出租車、打車的人、司機

然后用戶是2個:打車的人、司機

3.2 對象行為

確定出用戶之后,還要確定對象的行為。

確定對象行為,就是要從每個用戶視角,分析每個對象的目的以及需要做的事情。

3.3 環(huán)境約束

對象的功能可能會受到環(huán)境的影響,例如,在出租車的例子中,司機不能通過座壞了的橋,即使是最短的路徑。

3.4 識別公共接口

以租車對象為例,使用該對象時,需要的過程包括:

    上車指明目的地付車費下車

對于打車的人,如果要打車,需要:

    確定要去的地方打車給司機付錢

在程序設計開始,只需要先考慮如何使用這個對象,先不用考慮如何構建這個對象。在思考的過程中,可能會發(fā)現該對象需要一些額外的接口,比如:把行李放到后備箱等。

下面是一個Cabbie(出租車司機)的類圖,描述了其可用的方法。

3.5 識別實現

在公共接口確定了之后,接下來才是實現的過程。對于非公共接口,都可以認位是實現。

用戶不需要看到具體的實現過程。公共方法中的代碼,也屬于實現,用戶只能看到接口。

    接口代表了用戶如何看待對象實現則是對象的具體細節(jié)

4 總結

本篇介紹了面對對象的程序設計中,如果以對象的方式進行思考,包括理解接口與實現的區(qū)別,使用抽象思維設計接口,以及具體的思考過程。

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄