gpt4 book ai didi

java - UML 图到 Java 代码

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:33 24 4
gpt4 key购买 nike

我是 Java 的新手,正在尝试解决一些必须将 UML 图转换为 Java 代码的问题:我有一张 uml 文档的图片-

http://s1079.photobucket.com/albums/w513/user20121/?action=view&current=uml.jpg

我会告诉你我目前拥有的东西:

问题 1:编写一个 Java 版本的 Entry 类,假设它具有以下构造函数:public Entry(String name) 并且方法 getSize 是抽象的。答:

public abstract class Entry {
private String name;

public Entry(String name){
this.name = name;
}
public String getName()
{
return name;
}
abstract long getSize();
}

Q2:编写一个 Java 版本的 File 类,假设它有这个构造函数:公共(public)文件(字符串名称,长大小)答:

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:目录包含文件和目录的集合。假设类 Directory 具有此构造函数,编写 Java 版本:public Directory(String name) 和方法 getSize 返回目录中所有文件的总大小及其所有子目录(在此模型中目录本身的大小被忽略)。

答:这就是我卡住的地方,我不知道如何处理 getSize 方法。谁能告诉我到目前为止我所做的是否正确?并为我指出第 3 季度的正确方向?

编辑:好吧,我已经尝试了一个答案,但我真的不知道我在做什么..

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;
}
}

最佳答案

您对 Q1 和 Q2 的回答看起来不错。

关于问题 3:

// A Directory is an Entry and can contain an arbitrary number of other Entry objects
public class Directory extends Entry {

// you need a collection of Entry objects, like ArrayList<Entry>
// ArrayList<Entry> entries = ...

function getSize() {
long size;
// now we calculate the sum of all sizes
// we do not care if the entries are directories or files
// the respective getSize() methods will automatically do the "right thing"
// therefore: you iterate through each entry and call the getSize() method
// all sizes are summed up
return size;
}

}

关于java - UML 图到 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com