日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

《数据结构与抽象:Java语言描述(原书第4版)》一1.4 像使用自动贩卖机一样使用ADT...

發(fā)布時(shí)間:2024/1/1 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《数据结构与抽象:Java语言描述(原书第4版)》一1.4 像使用自动贩卖机一样使用ADT... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本節(jié)書摘來華章計(jì)算機(jī)《數(shù)據(jù)結(jié)構(gòu)與抽象:Java語(yǔ)言描述(原書第4版)》一書中的第1章 ,第1.4節(jié),[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學(xué)  新英格蘭理工學(xué)院 辛運(yùn)幃 饒一梅 譯 更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“華章計(jì)算機(jī)”公眾號(hào)查看。

1.4 像使用自動(dòng)販賣機(jī)一樣使用ADT

假定你站在一臺(tái)自動(dòng)販賣機(jī)前,如圖1-3所顯示,或者更高級(jí)的一臺(tái),休息一下,然后從販賣機(jī)中買些東西!


當(dāng)站在自動(dòng)販賣機(jī)前時(shí),會(huì)看到它的界面。投入硬幣并且按下按鈕,就能購(gòu)物了。下面是對(duì)自動(dòng)販賣機(jī)的觀察結(jié)果:

  • 你僅能執(zhí)行機(jī)器的界面提供給你的特定任務(wù)。
  • 你必須理解這些任務(wù)——即你必須知道買一瓶汽水應(yīng)該怎么辦。
  • 你不能訪問機(jī)器內(nèi)部,因?yàn)殒i著的外殼封裝了它。
  • 即使你不知道內(nèi)部將發(fā)生什么,但你可以使用機(jī)器。
  • 如果有人用改進(jìn)版替換了機(jī)器內(nèi)部的機(jī)制但沒改變界面,你仍然能用同樣的方式使用機(jī)器。
    與自動(dòng)販賣機(jī)的用戶一樣,你就像本章前面見過的ADT包的客戶。剛剛說的對(duì)自動(dòng)販賣機(jī)用戶的觀察,類似于對(duì)包的客戶的觀察:
  • 客戶僅能執(zhí)行ADT包說明的操作。這些操作常常聲明在一個(gè)Java接口中。
  • 客戶必須遵守ADT包提供的操作規(guī)范。即客戶的程序員必須理解如何使用這些操作。
  • 客戶不使用ADT操作就不能訪問包中的數(shù)據(jù)。封裝原理將數(shù)據(jù)表示隱藏在ADT的內(nèi)部。
    客戶可以使用包,即使程序員不知道數(shù)據(jù)是如何存儲(chǔ)的。
  • 如果有人改變了包操作的實(shí)現(xiàn),只要界面沒有改變,客戶仍然能用同樣的方式使用包。

在前一節(jié)的示例中,每個(gè)包都是實(shí)現(xiàn)ADT包的類的一個(gè)實(shí)例。即,每個(gè)包是一個(gè)對(duì)象,它的行為是ADT包的操作。你可以把每個(gè)這樣的對(duì)象看作我們剛描述的自動(dòng)販賣機(jī)。每個(gè)對(duì)象封裝了包的數(shù)據(jù)和操作,就像自動(dòng)販賣機(jī)封裝了它的產(chǎn)品(汽水)和輸送系統(tǒng)一樣。
有些ADT操作有輸入,類似于你投入自動(dòng)販賣機(jī)中的硬幣。有些ADT操作有輸出,類似于自動(dòng)販賣機(jī)提供的找零、汽水、消息及提示燈。
現(xiàn)在假定你是自動(dòng)販賣機(jī)面板或界面的設(shè)計(jì)人員。機(jī)器能做什么?在使用機(jī)器時(shí)人應(yīng)該做什么?考慮在機(jī)器內(nèi)如何保存及輸送汽水瓶,對(duì)你是否有幫助?我們強(qiáng)調(diào),你應(yīng)該忽略這些方面,而把注意力完全集中于人如何使用機(jī)器上——即你要關(guān)注界面的設(shè)計(jì)。忽略無(wú)關(guān)細(xì)節(jié)能使你的任務(wù)更簡(jiǎn)單,并提高設(shè)計(jì)質(zhì)量。
我們記得,作為設(shè)計(jì)原則,抽象要求你關(guān)注于什么而不是如何。當(dāng)你設(shè)計(jì)一個(gè)ADT并最終設(shè)計(jì)一個(gè)類時(shí),使用數(shù)據(jù)抽象將關(guān)注焦點(diǎn)集中在你想對(duì)數(shù)據(jù)做什么,而不必?fù)?dān)心如何完成這些任務(wù)。本章開頭,當(dāng)設(shè)計(jì)ADT包時(shí)我們練習(xí)了數(shù)據(jù)抽象。當(dāng)我們選擇包應(yīng)該有的方法時(shí),我們沒有考慮如何表示包。相反我們集中考慮每個(gè)方法應(yīng)該做什么。
最后,我們編寫詳細(xì)說明該方法的Java接口。然后編寫一個(gè)使用包的客戶程序,但仍然不知道它的實(shí)現(xiàn)。如果有人為我們編寫了實(shí)現(xiàn),我們的程序大概能正確執(zhí)行。如果其他人給我們一個(gè)更好的實(shí)現(xiàn)版本,我們不需要修改已經(jīng)編寫的客戶程序仍能繼續(xù)使用。客戶的這個(gè)特征是抽象的主要優(yōu)勢(shì)。

總結(jié)

以上是生活随笔為你收集整理的《数据结构与抽象:Java语言描述(原书第4版)》一1.4 像使用自动贩卖机一样使用ADT...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。