天天看點

《資料結構與抽象:Java語言描述(原書第4版)》一2.1.2 一組核心方法

本節書摘來華章計算機《資料結構與抽象:java語言描述(原書第4版)》一書中的第2章 ,第2.1.2節,[美]弗蘭克m.卡拉諾(frank m. carrano) 蒂莫西m.亨利(timothy m. henry) 著 羅得島大學  新英格蘭理工學院 辛運帏 饒一梅 譯 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

基于java語言數組實作的adt包吸收了教室示例中展現的一些想法。由此得到了類arraybag,它實作了在程式清單1-1中見到過的接口baginterface。接口中的每個公有方法對應于adt包的一個操作。我們記得,接口為包中的對象定義了泛型t。我們在arraybag的定義中也用到了這個泛型。

類arraybag的定義可能相當難懂。該類确實有不少的方法。對于這樣的類,你不應該定義整個類,然後試圖去測試它。而是應該先确定一組核心方法(core method)來實作并測試這些方法,然後再繼續定義類中的其他部分。将其他方法的定義留待稍後解決,可以集中注意力,并簡化你的任務。但哪些方法應該屬于這組核心方法呢?一般地,這樣的方法應該是類的重要目的,且允許合理的測試。有時稱一組核心方法為核心組(core group)。

當處理包這樣的集合時,在集合建立之前尚不能測試大多數的方法。是以,将對象添加到集合中就是一個基本操作。如果方法add沒能正确工作,測試像remove這樣的方法将是毫無意義的。是以,包的add方法是我們首先要實作的核心方法組的一部分。

為測試add是否能正确工作,需要一個能讓我們看到包内容的方法。方法toarray可用于這個目的,是以它是一個核心方法。構造方法也是基本的,并在核心組内。類似地,核心方法可能調用的任何方法也是核心組的一部分。例如,因為我們不能将項添加到滿包中,是以方法add通過調用私有方法isarrayfull來發現一個滿數組。

核心方法。我們已經确定下列核心方法屬于類arraybag的初稿部分:

構造方法

《資料結構與抽象:Java語言描述(原書第4版)》一2.1.2 一組核心方法

有了這些核心方法,我們能構造一個包、向其中添加對象、檢視結果。在這些核心方法能正确工作之前,我們先不實作其餘的方法。

注:像add和remove這樣能改變集合底層結構的方法,可能是與實作最緊密的方法。一般地,這類方法的定義應該先于類中的其他方法。但因為在add正确之前我們不能測試remove,是以我們将remove的實作延到add完成且進行充分測試之後再進行。