所以,我明白一個類可以有屬性和方法。類圖總是需要屬性嗎?
1)如果一個類有一個方法但沒有屬性會有可能嗎? (這似乎是不可能的,在我看來,它擊敗了創建類的目的)
2)如果一個類有屬性但是沒有方法嗎? (這似乎是可能的)
非常感謝!
所以,我明白一個類可以有屬性和方法。類圖總是需要屬性嗎?
1)如果一個類有一個方法但沒有屬性會有可能嗎? (這似乎是不可能的,在我看來,它擊敗了創建類的目的)
2)如果一個類有屬性但是沒有方法嗎? (這似乎是可能的)
非常感謝!
1)是的,你有時會看到它在實用工具類
class MyUtils {
public int add(int a, int b) {
return a + b;
}
}
它是如何有用的是完全是另一個問題,但有一個在造型沒有問題。
另一種情況是接口(有時表示爲抽象類),其中不允許任何屬性(或更一般的狀態),只有方法或方法原型/頭文件。
2)是的,這在貧血模型中很常見,有些類只作爲數據持有者;因爲在圖中顯示訪問器方法並不是一種好的做法,所以您可能只能看到屬性,而不能看到方法;或者如果屬性是公共的,並且不需要訪問器,如C++結構體。
同樣,在設計模型中,您很少看到任何方法,因爲您關注的是類之間的關係,而不是其實現行爲。
無屬性(帶方法)和無操作類(帶屬性)的類都是可能的且合法的,但很少見。類層次化意味着你不應該直接訪問類屬性。然而,您可能有一個類用於存儲數據(僅用於屬性),另一個用於管理數據(僅用於操作)。 還要注意,即使模型存在於類中,您的模型也可能不顯示屬性或操作(或甚至兩者)。
具有方法但沒有字段的類經常用作實用程序類。例如,您有幾個功能可以對文本文件進行一些編輯。創建一個EditationsUtilities類,它將只有編輯方法。有人認爲練習邪惡,但它被廣泛使用。 Utility classes are evil? Utility classes are evil?
帶字段和無方法的類 - 它們被稱爲結構。並且仍然是 - 例如,你有一個類Point,它只有兩個字段:x和y。如今這些課程被認爲是不好的風格,但仍被廣泛使用。他們說如果將x和y聲明爲私有,並且getter和setter方法將爲他們制定,則會更好。有趣的是,有些人認爲getter/setter是邪惡的。 http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html
在某些語言中,字段,屬性和屬性之間有區別,有些必須有getter/setter。在這些情況下,類不能有沒有方法的屬性,因爲屬性(不是字段!)必須有getter和/或setter。
在UML(類圖)中,當您開始思考類時,可以繪製一個只有空類矩形的圖表。所以,他們顯然不會有領域或方法。但那只是暫時的。在代碼中,你將不會有沒有字段和方法的類。
所以,使用它,因爲它對你很方便。你感覺不到什麼樣的組織更適合你的軟體。
是,是...... –