2014-11-23 67 views
2

剛剛來自Haskell,我正在學習Java,我正在嘗試設置一個小類來表示一個通用機器人。我想添加的一個實例變量是機器人位置的某種表示形式。我應該如何在Java中組織這些數據?

在Haskell,我剛纔做類似:

type Point = (Float, Float) 
data Robot = Robot { position :: Point } 

但是,從我所知道的,Java沒有任何這樣的混淆,或元組,因此我不得不看這是另一種方式。

我以爲只是創造名爲Point的另一個類,並給它2個實例變量「X」和「Y」(或者,最好的東西多一點的描述),但似乎笨拙。我必須在它自己的文件中定義它(如果我正確記得每個類都在一個單獨的文件中),並且它只有幾行(除非我需要添加功能,比如「運動」)。

我的另一個想法是,只是這樣做:

public class Robot { 
    ... 
    int xPos; 
    int yPos; 
    ... 

} 

這是混亂的,但更緊湊。

基本上,這可能是所有來概括:

它是典型的在Java中的一塊大小的程序分離成噸的小塊,不管?或者,如果再次使用的可能性很小,是否可以將它們組合在一起? (我知道理想情況下,所有事情都被視爲將來可能被重複使用,並被切割成百萬個子文件,但應該在多大程度上遵循這些要求;特別是在初始學習期間?)。

+0

一類就是在Java中的約定。你可以選擇忽略它(或者使用內部類來解決這個問題)。 – Drux 2014-11-23 21:12:03

+2

已經有一個['Point'](https://docs.oracle.com/javase/7/docs/api/java/awt/Point.html)可以使用。但要回答你的主要問題,這主要是基於選項的,但我會說,如果一個Java程序不會被分成「一噸」較小的碎片,那麼有些事情是錯誤的...... – 2014-11-23 21:12:12

+0

@Drux我試着在同一個文件中聲明2個類,並且吐出一個錯誤(不能完全引用它,但基本上說「類x必須在它自己的文件中」)。除非在主類文件中只有這種情況。在鮑里斯,謝謝。我想我必須習慣這一點。 – Carcigenicate 2014-11-23 21:25:03

回答

2

答案是肯定的:)這是典型的看到自己的文件和其他一些功能,可能是一類自身的很小的類,但事實並非如此。

你也可以看到內部類在某種層次的組織代碼的緣故。當你知道這個功能不會在外部使用時,大多數情況下會使用這些內部類,但是與代碼的其他部分保持同一級別太多太不同。

我作爲一個經驗法則喜歡拖延新類的創建到一點時,我知道我需要它在其他地方,但我想這取決於程序的架構。

+0

謝謝。正是我在找的東西。我會查找「內部類」。你的最後一點可能是對我的調整。我習慣於先定義一個數據類型,然後是功能,然後將所有東西鏈接在一起,這通常運行良好。 – Carcigenicate 2014-11-23 21:28:26

+0

也可以使用術語「嵌套類」我猜...我不是英語母語... – 2014-11-23 21:33:49

+0

好的,謝謝.. – Carcigenicate 2014-11-23 22:34:39

0

無論哪種方式是好的,您可以執行。當我編寫這樣的代碼時,我通常使用單類戰略。

public class Robot { 
    ... 
    int x; 
    int y; 
    ... 
} 

但是,另闢蹊徑並創建一個包裝類也是沒有錯的。這取決於你的偏好。在這種特殊情況下,我會推薦使用內置的java.awt.Point類。回答一般問題:這兩種實現都是可以接受的並且是常用的。每個文件

相關問題