2008-09-27 49 views
2

一般來說,我認爲我可以很好地傳達大多數與編程相關的概念。
但是,我仍然很難概括字段,類和包之間的關係。教學:場,類和包裝關係


您如何總結「字段」,「類」和「包」以及「他們的關係」?

回答

2

自從我教C,C++和Java以來​​,我遇到過類似的問題。 這是我做的:

首先,我將軟件包單獨保存並最終解釋它們。

理想情況下,在我看來,學生應該首先了解ADT,最好是C語言。他們有結構,他們有單獨的操作。字段只是結構中的「插槽」,您甚至可以顯示內存佈局來演示它。函數是對這些結構進行操作的獨立實體。

然後,您將過渡到類,方法和字段,並從本質上顯示(禁止繼承和一些軼事),它們在很多方面都是用於ADT的語法糖。如果你需要的話,你可以教對象佈局,繼承和虛擬表(在我的經驗中,它可以幫助學生更好地理解繼承以查看內存佈局)。

最後,您將討論如何組織班級的主題。如果你教C++,你真的沒有包,但你可以解釋命名空間,討論組織和分開編譯。

如果您使用的是Java,那麼您只需解釋它們是同一名稱空間中具有特殊訪問規則並顯示它們的類的集合。 Java中的軟件包系統總是有問題,所以我通常會通過模式(例如,將UI軟件包與C分離)。

總之:類形成對象的基礎,這些對象是幾個字段的內存佈置以及對它們進行操作的相關方法。包是具有一個訪問限制機制的類的集合。

1

我描述它的方法是:

  • 對象是時隙的集合,保持數據時隙是字段,保持代碼時隙的方法。公共插槽位於對象的外部,專用插槽位於內部。方法應該大部分是公開的,因爲對象向客戶提供服務,字段應該是私人的,因此客戶不知道服務是如何工作的。因此字段是對象的實現細節。
  • 類名稱必須是唯一的,以便您可以將代碼與第三方庫結合使用。簡單/短的類名是不夠的,因爲可能有數以千計的類被稱爲'列表','客戶'等...因此,類放置在包創建更長,更難以重複的名稱。只有包中的一部分類需要對客戶端可見,因此公共和默認兩個訪問級別。這允許一個包作爲一個庫。

所以字段是對象的實現細節,對象的類實現在包中以保證唯一名稱並提供類似庫的模塊化。

1

根據您想要解釋的人的年齡,可以使用一個簡單的比喻:稅表。稅表(例如1040EZ)就像一個班級,填寫在表格中的每個空間都是該表格的一個字段。稅表甚至包含了如何處理字段中的信息的指示,就像一個類包括對字段中的數據執行的成員函數一樣。正如一套完整的稅務表格不僅包括主要稅務表格,還包括可能需要填寫的其他表格(例如附加表格),因此包裹不僅包含主要類別,還包含可能需要互動的其他類別用。

1

字段是屬於該類的變量或屬於類的對象實例的變量。局部變量和字段之間的區別是字段的範圍更廣。

類是用戶定義數據類型的模板。類比原始數據類型更先進,因爲它們同時具有狀態和行爲。

軟件包用於對類進行分組並解決潛在的命名衝突。有了多個開發人員和公開可用的代碼庫,很可能我們中的一些人會將我們的類命名爲相同的(Math,LinkedList,FileUtils等)。在類名前加一個唯一的包名稱可以讓編譯器(和其他開發者)確定你打算使用哪個類。

1

有趣的是,你解決了面向對象編程而不提及對象。我認爲這可能是你的問題。

這是我使用的。

對象是事物。它們具有屬性(度量,存在狀態等)。屬性可以稱爲字段。 [我經常使用我在課堂上發現的東西 - 杯子,標記,帽子,大衣等來說明這一點。]

對象也參與行爲,稱爲方法,方法功能或操作。

對象的特徵(屬性和操作,字段和方法,無論)提供了一種分類對象的方法。

一類對象通用的特性是 - well - 可以收集到一個類定義中。類定義描述屬於該類成員的對象的屬性和方法。

包是一個類定義的集合。儘管 - 理想情況下 - 包中的類有一些共同點,但這不是要求,也不是有用的區別。