我是新來的Java,我試圖通過一些問題,在那裏我有一個UML圖到Java代碼的轉換工作:我UML的圖像文檔 -UML圖到Java代碼
http://s1079.photobucket.com/albums/w513/user20121/?action=view¤t=uml.jpg
我會告訴你我到目前爲止:
Q1:假設它具有以下構造函數:public Entry(String name)並且方法getSize是抽象的,則編寫Java Entry的Java版本。 答:
public abstract class Entry {
private String name;
public Entry(String name){
this.name = name;
}
public String getName()
{
return name;
}
abstract long getSize();
}
Q2:寫類文件的Java版本,假定它有這樣的構造: 公共文件(字符串名稱,長尺寸) 答:
public class File extends Entry {
private long size;
public File(String name, long size){
super(name);
this.size = size;
}
public long getSize(){
return size;
}
}
Q3:一個目錄包含一組文件和目錄。編寫Java版本的類目錄,假設它具有以下構造函數: public Directory(String name)和getSize方法返回目錄中所有文件的總大小及其所有子目錄的 (在此模型中大小爲目錄本身被忽略)。
答:這是我卡住的地方,我不知道該怎麼做getSize方法。有誰能告訴我,到目前爲止我所做的是否正確?同時也指出我對Q3的正確方向?
編輯:好吧,我已經嘗試了答案,但我真的不知道我在做什麼..
import java.util.ArrayList;
public class Directory extends Entry {
ArrayList <Entry> entries = new ArrayList<Entry>();
public Directory(String name)
{
super(name);
}
public long getSize(){
long size;
for(int i=0;i<entries.size();i++)
{
size += //don't know what to put here?
}
return size;
}
}
你在正確的方法。對於Q3,您需要將某個目錄與0個或更多個Entry類型對象相關聯。在Java中,這些關聯是通過集合來實現的,例如存儲關聯對象的ArrayList。 – Ozan 2012-04-24 16:59:04
那麼我猜你的Directory類將包含Entry類型對象的集合(可能是ArrayList)。getSize方法將遍歷這些Entry(目錄和文件)對象,並總計大小(使用文件的getSize Mehtods)並返回總數。您應該有一個方法可以將文件和目錄添加到目錄中的文件集合類。 – scrappedcola 2012-04-24 17:02:23
你幾乎明白了。當你使用Collections時,你可以使用Java的foreach符號:'(for entry entry:entries){...}'在括號內的entry中是當前迭代的Entry對象,你可以調用它的方法通常:''String name = entry.getName();'' – Ozan 2012-04-24 23:25:25